Skip to content
Snippets Groups Projects
Unverified Commit 750823c6 authored by Tomasz Maczukin's avatar Tomasz Maczukin
Browse files

Add tests checking authConfig resolvering order

parent dad4a9ce
Branches
No related tags found
No related merge requests found
...@@ -361,6 +361,6 @@ func (b *Build) IsDebugTraceEnabled() bool { ...@@ -361,6 +361,6 @@ func (b *Build) IsDebugTraceEnabled() bool {
return trace return trace
} }
func (b *Build) GetDockerAuthConfigs() string { func (b *Build) GetDockerAuthConfig() string {
return b.GetAllVariables().Get("DOCKER_AUTH_CONFIG") return b.GetAllVariables().Get("DOCKER_AUTH_CONFIG")
} }
...@@ -47,12 +47,12 @@ func (s *executor) getServiceVariables() []string { ...@@ -47,12 +47,12 @@ func (s *executor) getServiceVariables() []string {
return s.Build.GetAllVariables().PublicOrInternal().StringList() return s.Build.GetAllVariables().PublicOrInternal().StringList()
} }
func (s *executor) getUserAuthConfiguration(indexName string) (*docker.AuthConfiguration) { func (s *executor) getUserAuthConfiguration(indexName string) *docker.AuthConfiguration {
if s.Build == nil { if s.Build == nil {
return nil return nil
} }
authConfigString := s.Build.GetDockerAuthConfigs() authConfigString := s.Build.GetDockerAuthConfig()
authConfigs, _ := docker.NewAuthConfigurations(bytes.NewBufferString(authConfigString)) authConfigs, _ := docker.NewAuthConfigurations(bytes.NewBufferString(authConfigString))
if authConfigs != nil { if authConfigs != nil {
return docker_helpers.ResolveDockerAuthConfig(indexName, authConfigs) return docker_helpers.ResolveDockerAuthConfig(indexName, authConfigs)
...@@ -60,7 +60,7 @@ func (s *executor) getUserAuthConfiguration(indexName string) (*docker.AuthConfi ...@@ -60,7 +60,7 @@ func (s *executor) getUserAuthConfiguration(indexName string) (*docker.AuthConfi
return nil return nil
} }
func (s *executor) getBuildAuthConfiguration(indexName string) (*docker.AuthConfiguration) { func (s *executor) getBuildAuthConfiguration(indexName string) *docker.AuthConfiguration {
if s.Build == nil { if s.Build == nil {
return nil return nil
} }
...@@ -75,8 +75,8 @@ func (s *executor) getBuildAuthConfiguration(indexName string) (*docker.AuthConf ...@@ -75,8 +75,8 @@ func (s *executor) getBuildAuthConfiguration(indexName string) (*docker.AuthConf
} }
authConfigs.Configs[credentials.URL] = docker.AuthConfiguration{ authConfigs.Configs[credentials.URL] = docker.AuthConfiguration{
Username: credentials.Username, Username: credentials.Username,
Password: credentials.Password, Password: credentials.Password,
ServerAddress: credentials.URL, ServerAddress: credentials.URL,
} }
} }
...@@ -87,7 +87,7 @@ func (s *executor) getBuildAuthConfiguration(indexName string) (*docker.AuthConf ...@@ -87,7 +87,7 @@ func (s *executor) getBuildAuthConfiguration(indexName string) (*docker.AuthConf
return nil return nil
} }
func (s *executor) getHomeDirAuthConfiguration(indexName string) (*docker.AuthConfiguration) { func (s *executor) getHomeDirAuthConfiguration(indexName string) *docker.AuthConfiguration {
authConfigs, _ := docker_helpers.ReadDockerAuthConfigsFromHomeDir(s.Shell().User) authConfigs, _ := docker_helpers.ReadDockerAuthConfigsFromHomeDir(s.Shell().User)
if authConfigs != nil { if authConfigs != nil {
return docker_helpers.ResolveDockerAuthConfig(indexName, authConfigs) return docker_helpers.ResolveDockerAuthConfig(indexName, authConfigs)
......
package docker package docker
import ( import (
"errors"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"os" "os"
...@@ -12,10 +13,9 @@ import ( ...@@ -12,10 +13,9 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock" "github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitlab-ci-multi-runner/common" "gitlab.com/gitlab-org/gitlab-ci-multi-runner/common"
"gitlab.com/gitlab-org/gitlab-ci-multi-runner/helpers/docker" "gitlab.com/gitlab-org/gitlab-ci-multi-runner/helpers/docker"
"github.com/stretchr/testify/require"
"errors"
) )
func TestParseDeviceStringOne(t *testing.T) { func TestParseDeviceStringOne(t *testing.T) {
...@@ -580,8 +580,69 @@ func TestGetDefaultAuthConfig(t *testing.T) { ...@@ -580,8 +580,69 @@ func TestGetDefaultAuthConfig(t *testing.T) {
}) })
} }
func TestAuthConfigOverwritingOrder(t *testing.T) {
testVariableAuthConfigs = `{"auths":{"registry.gitlab.tld:1234":{"auth":"ZnJvbV92YXJpYWJsZTpwYXNzd29yZA=="}}}`
testFileAuthConfigs = `{"auths":{"registry.gitlab.tld:1234":{"auth":"ZnJvbV9maWxlOnBhc3N3b3Jk"}}}`
imageName := "registry.gitlab.tld:1234/image/name:latest"
t.Run("gitlabRegistryOnly", func(t *testing.T) {
e := getAuthConfigTestExecutor(t, false)
addGitLabRegistryCredentials(&e)
ac := getTestAuthConfig(t, e, imageName)
assertCredentials(t, "registry.gitlab.tld:1234", "gitlab-ci-token", e.Build.Token, ac, imageName)
})
t.Run("withConfigFromRemoteVariable", func(t *testing.T) {
e := getAuthConfigTestExecutor(t, false)
addGitLabRegistryCredentials(&e)
addRemoteVariableCredentials(&e)
ac := getTestAuthConfig(t, e, imageName)
assertCredentials(t, "registry.gitlab.tld:1234", "from_variable", "password", ac, imageName)
})
t.Run("withConfigFromLocalVariable", func(t *testing.T) {
e := getAuthConfigTestExecutor(t, false)
addGitLabRegistryCredentials(&e)
addLocalVariableCredentials(&e)
ac := getTestAuthConfig(t, e, imageName)
assertCredentials(t, "registry.gitlab.tld:1234", "from_variable", "password", ac, imageName)
})
t.Run("withConfigFromFile", func(t *testing.T) {
e := getAuthConfigTestExecutor(t, true)
addGitLabRegistryCredentials(&e)
ac := getTestAuthConfig(t, e, imageName)
assertCredentials(t, "registry.gitlab.tld:1234", "from_file", "password", ac, imageName)
})
t.Run("withConfigFromVariableAndFromFile", func(t *testing.T) {
e := getAuthConfigTestExecutor(t, true)
addGitLabRegistryCredentials(&e)
addRemoteVariableCredentials(&e)
ac := getTestAuthConfig(t, e, imageName)
assertCredentials(t, "registry.gitlab.tld:1234", "from_variable", "password", ac, imageName)
})
t.Run("withConfigFromLocalAndRemoteVariable", func(t *testing.T) {
e := getAuthConfigTestExecutor(t, true)
addGitLabRegistryCredentials(&e)
addRemoteVariableCredentials(&e)
testVariableAuthConfigs = `{"auths":{"registry.gitlab.tld:1234":{"auth":"ZnJvbV9sb2NhbF92YXJpYWJsZTpwYXNzd29yZA=="}}}`
addLocalVariableCredentials(&e)
ac := getTestAuthConfig(t, e, imageName)
assertCredentials(t, "registry.gitlab.tld:1234", "from_variable", "password", ac, imageName)
})
}
func testGetDockerImage(t *testing.T, e executor, imageName string, setClientExpectations func(c *docker_helpers.MockClient, imageName string)) { func testGetDockerImage(t *testing.T, e executor, imageName string, setClientExpectations func(c *docker_helpers.MockClient, imageName string)) {
t.Run("get:" + imageName, func(t *testing.T) { t.Run("get:"+imageName, func(t *testing.T) {
var c docker_helpers.MockClient var c docker_helpers.MockClient
defer c.AssertExpectations(t) defer c.AssertExpectations(t)
...@@ -596,7 +657,7 @@ func testGetDockerImage(t *testing.T, e executor, imageName string, setClientExp ...@@ -596,7 +657,7 @@ func testGetDockerImage(t *testing.T, e executor, imageName string, setClientExp
} }
func testDeniesDockerImage(t *testing.T, e executor, imageName string, setClientExpectations func(c *docker_helpers.MockClient, imageName string)) { func testDeniesDockerImage(t *testing.T, e executor, imageName string, setClientExpectations func(c *docker_helpers.MockClient, imageName string)) {
t.Run("deny:" + imageName, func(t *testing.T) { t.Run("deny:"+imageName, func(t *testing.T) {
var c docker_helpers.MockClient var c docker_helpers.MockClient
defer c.AssertExpectations(t) defer c.AssertExpectations(t)
...@@ -666,4 +727,4 @@ func TestPullPolicyWhenIfNotPresentIsSet(t *testing.T) { ...@@ -666,4 +727,4 @@ func TestPullPolicyWhenIfNotPresentIsSet(t *testing.T) {
func init() { func init() {
docker_helpers.HomeDirectory = "" docker_helpers.HomeDirectory = ""
} }
\ No newline at end of file
package docker_helpers package docker_helpers
import ( import (
"github.com/fsouza/go-dockerclient" "fmt"
"io" "io"
"os" "os"
"os/user"
"path" "path"
"strings" "strings"
"github.com/docker/docker/pkg/homedir" "github.com/docker/docker/pkg/homedir"
"fmt" "github.com/fsouza/go-dockerclient"
"os/user"
) )
// DefaultDockerRegistry is the name of the index // DefaultDockerRegistry is the name of the index
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment