Files
fn-serverless/api/agent/drivers/docker/registry_test.go
Tolga Ceylan 2706323cec fn: tests for private repo auth and rename DOCKER_AUTH (#1134)
Renamed DOCKER_AUTH with FN_ prefix to clarify the purpose. Docker
does not use this variable.

New tests to clarify the repo/auth-config behavior.
2018-07-24 15:19:59 -07:00

114 lines
3.1 KiB
Go

package docker
import (
"strings"
"testing"
"github.com/fsouza/go-dockerclient"
)
func verify(expected []string, checks map[string]bool) bool {
if len(expected) != len(checks) {
return false
}
for _, v := range expected {
_, ok := checks[v]
if !ok {
return false
}
}
return true
}
func TestRegistrySubDomains(t *testing.T) {
var exp []string
var res map[string]bool
exp = []string{"google.com"}
res = getSubdomains("google.com")
if !verify(exp, res) {
t.Fatalf("subdomain results failed expected[%+v] != results[%+v]", exp, res)
}
exp = []string{"top.google.com", "google.com"}
res = getSubdomains("top.google.com")
if !verify(exp, res) {
t.Fatalf("subdomain results failed expected[%+v] != results[%+v]", exp, res)
}
exp = []string{"top.google.com:443", "google.com:443"}
res = getSubdomains("top.google.com:443")
if !verify(exp, res) {
t.Fatalf("subdomain results failed expected[%+v] != results[%+v]", exp, res)
}
exp = []string{"top.top.google.com", "top.google.com", "google.com"}
res = getSubdomains("top.top.google.com")
if !verify(exp, res) {
t.Fatalf("subdomain results failed expected[%+v] != results[%+v]", exp, res)
}
exp = []string{"docker"}
res = getSubdomains("docker")
if !verify(exp, res) {
t.Fatalf("subdomain results failed expected[%+v] != results[%+v]", exp, res)
}
exp = []string{""}
res = getSubdomains("")
if !verify(exp, res) {
t.Fatalf("subdomain results failed expected[%+v] != results[%+v]", exp, res)
}
}
func TestRegistryEnv(t *testing.T) {
testCfg := `{
"auths":{
"https://my.registry.com":{"auth":"Y29jbzpjaGVlc2UK"},
"https://my.registry.com:5000":{"auth":"Y29jbzpjaGVlc2UK"},
"https://index.docker.io/v2/":{"auth":"Y29jbzpjaGVlc2UK"}
}}`
auths, err := docker.NewAuthConfigurations(strings.NewReader(testCfg))
if err != nil {
t.Fatalf("parsing test cfg failed: %s", err)
}
drvAuths, err := preprocessAuths(auths)
if err != nil {
t.Fatalf("preprocess test cfg failed: %s", err)
}
res := findRegistryConfig("", drvAuths)
if res == nil || res.ServerAddress != "https://index.docker.io/v2/" {
t.Fatalf("empty registry should pickup docker %v", res)
}
res = findRegistryConfig("docker.io", drvAuths)
if res == nil || res.ServerAddress != "https://index.docker.io/v2/" {
t.Fatalf("docker.io registry should pickup docker %v", res)
}
res = findRegistryConfig("localhost", drvAuths)
if res == nil || res.ServerAddress != "" {
t.Fatalf("localhost registry should pickup a default (empty) cfg %v", res)
}
res = findRegistryConfig("registry.com", drvAuths)
if res == nil || res.ServerAddress != "https://my.registry.com" {
t.Fatalf("registry.com registry should pickup my.registry.com cfg %v", res)
}
res = findRegistryConfig("my.registry.com", drvAuths)
if res == nil || res.ServerAddress != "https://my.registry.com" {
t.Fatalf("my.registry.com registry should pickup my.registry.com cfg %v", res)
}
res = findRegistryConfig("registry.com:5000", drvAuths)
if res == nil || res.ServerAddress != "https://my.registry.com:5000" {
t.Fatalf("registry.com:5000 registry should pickup my.registry.com:5000 cfg %v", res)
}
}