mirror of https://github.com/docker/cli.git
				
				
				
			
		
			
				
	
	
		
			107 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
| package registry
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/moby/moby/api/types/registry"
 | |
| 	"gotest.tools/v3/assert"
 | |
| )
 | |
| 
 | |
| func buildAuthConfigs() map[string]registry.AuthConfig {
 | |
| 	authConfigs := map[string]registry.AuthConfig{}
 | |
| 
 | |
| 	for _, reg := range []string{"testIndex", IndexServer} {
 | |
| 		authConfigs[reg] = registry.AuthConfig{
 | |
| 			Username: "docker-user",
 | |
| 			Password: "docker-pass",
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return authConfigs
 | |
| }
 | |
| 
 | |
| func TestResolveAuthConfigIndexServer(t *testing.T) {
 | |
| 	authConfigs := buildAuthConfigs()
 | |
| 	indexConfig := authConfigs[IndexServer]
 | |
| 
 | |
| 	officialIndex := ®istry.IndexInfo{
 | |
| 		Official: true,
 | |
| 	}
 | |
| 	privateIndex := ®istry.IndexInfo{
 | |
| 		Official: false,
 | |
| 	}
 | |
| 
 | |
| 	resolved := ResolveAuthConfig(authConfigs, officialIndex)
 | |
| 	assert.Equal(t, resolved, indexConfig, "Expected ResolveAuthConfig to return IndexServer")
 | |
| 
 | |
| 	resolved = ResolveAuthConfig(authConfigs, privateIndex)
 | |
| 	assert.Check(t, resolved != indexConfig, "Expected ResolveAuthConfig to not return IndexServer")
 | |
| }
 | |
| 
 | |
| func TestResolveAuthConfigFullURL(t *testing.T) {
 | |
| 	authConfigs := buildAuthConfigs()
 | |
| 
 | |
| 	registryAuth := registry.AuthConfig{
 | |
| 		Username: "foo-user",
 | |
| 		Password: "foo-pass",
 | |
| 	}
 | |
| 	localAuth := registry.AuthConfig{
 | |
| 		Username: "bar-user",
 | |
| 		Password: "bar-pass",
 | |
| 	}
 | |
| 	officialAuth := registry.AuthConfig{
 | |
| 		Username: "baz-user",
 | |
| 		Password: "baz-pass",
 | |
| 	}
 | |
| 	authConfigs[IndexServer] = officialAuth
 | |
| 
 | |
| 	expectedAuths := map[string]registry.AuthConfig{
 | |
| 		"registry.example.com": registryAuth,
 | |
| 		"localhost:8000":       localAuth,
 | |
| 		"example.com":          localAuth,
 | |
| 	}
 | |
| 
 | |
| 	validRegistries := map[string][]string{
 | |
| 		"registry.example.com": {
 | |
| 			"https://registry.example.com/v1/",
 | |
| 			"http://registry.example.com/v1/",
 | |
| 			"registry.example.com",
 | |
| 			"registry.example.com/v1/",
 | |
| 		},
 | |
| 		"localhost:8000": {
 | |
| 			"https://localhost:8000/v1/",
 | |
| 			"http://localhost:8000/v1/",
 | |
| 			"localhost:8000",
 | |
| 			"localhost:8000/v1/",
 | |
| 		},
 | |
| 		"example.com": {
 | |
| 			"https://example.com/v1/",
 | |
| 			"http://example.com/v1/",
 | |
| 			"example.com",
 | |
| 			"example.com/v1/",
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for configKey, registries := range validRegistries {
 | |
| 		configured, ok := expectedAuths[configKey]
 | |
| 		if !ok {
 | |
| 			t.Fail()
 | |
| 		}
 | |
| 		index := ®istry.IndexInfo{
 | |
| 			Name: configKey,
 | |
| 		}
 | |
| 		for _, reg := range registries {
 | |
| 			authConfigs[reg] = configured
 | |
| 			resolved := ResolveAuthConfig(authConfigs, index)
 | |
| 			if resolved.Username != configured.Username || resolved.Password != configured.Password {
 | |
| 				t.Errorf("%s -> %v != %v\n", reg, resolved, configured)
 | |
| 			}
 | |
| 			delete(authConfigs, reg)
 | |
| 			resolved = ResolveAuthConfig(authConfigs, index)
 | |
| 			if resolved.Username == configured.Username || resolved.Password == configured.Password {
 | |
| 				t.Errorf("%s -> %v == %v\n", reg, resolved, configured)
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |