package registry import ( "strings" "testing" ) func TestValidateMirror(t *testing.T) { valid := []string{ "http://mirror-1.com", "http://mirror-1.com/", "https://mirror-1.com", "https://mirror-1.com/", "http://localhost", "https://localhost", "http://localhost:5000", "https://localhost:5000", "http://127.0.0.1", "https://127.0.0.1", "http://127.0.0.1:5000", "https://127.0.0.1:5000", } invalid := []string{ "!invalid!://%as%", "ftp://mirror-1.com", "http://mirror-1.com/?q=foo", "http://mirror-1.com/v1/", "http://mirror-1.com/v1/?q=foo", "http://mirror-1.com/v1/?q=foo#frag", "http://mirror-1.com?q=foo", "https://mirror-1.com#frag", "https://mirror-1.com/#frag", "http://foo:bar@mirror-1.com/", "https://mirror-1.com/v1/", "https://mirror-1.com/v1/#", "https://mirror-1.com?q", } for _, address := range valid { if ret, err := ValidateMirror(address); err != nil || ret == "" { t.Errorf("ValidateMirror(`"+address+"`) got %s %s", ret, err) } } for _, address := range invalid { if ret, err := ValidateMirror(address); err == nil || ret != "" { t.Errorf("ValidateMirror(`"+address+"`) got %s %s", ret, err) } } } func TestLoadInsecureRegistries(t *testing.T) { testCases := []struct { registries []string index string err string }{ { registries: []string{"127.0.0.1"}, index: "127.0.0.1", }, { registries: []string{"127.0.0.1:8080"}, index: "127.0.0.1:8080", }, { registries: []string{"2001:db8::1"}, index: "2001:db8::1", }, { registries: []string{"[2001:db8::1]:80"}, index: "[2001:db8::1]:80", }, { registries: []string{"http://mytest.com"}, index: "mytest.com", }, { registries: []string{"https://mytest.com"}, index: "mytest.com", }, { registries: []string{"HTTP://mytest.com"}, index: "mytest.com", }, { registries: []string{"svn://mytest.com"}, err: "insecure registry svn://mytest.com should not contain '://'", }, { registries: []string{"-invalid-registry"}, err: "Cannot begin or end with a hyphen", }, { registries: []string{`mytest-.com`}, err: `insecure registry mytest-.com is not valid: invalid host "mytest-.com"`, }, { registries: []string{`1200:0000:AB00:1234:0000:2552:7777:1313:8080`}, err: `insecure registry 1200:0000:AB00:1234:0000:2552:7777:1313:8080 is not valid: invalid host "1200:0000:AB00:1234:0000:2552:7777:1313:8080"`, }, { registries: []string{`mytest.com:500000`}, err: `insecure registry mytest.com:500000 is not valid: invalid port "500000"`, }, { registries: []string{`"mytest.com"`}, err: `insecure registry "mytest.com" is not valid: invalid host "\"mytest.com\""`, }, { registries: []string{`"mytest.com:5000"`}, err: `insecure registry "mytest.com:5000" is not valid: invalid host "\"mytest.com"`, }, } for _, testCase := range testCases { config := newServiceConfig(ServiceOptions{}) err := config.LoadInsecureRegistries(testCase.registries) if testCase.err == "" { if err != nil { t.Fatalf("expect no error, got '%s'", err) } match := false for index := range config.IndexConfigs { if index == testCase.index { match = true } } if !match { t.Fatalf("expect index configs to contain '%s', got %+v", testCase.index, config.IndexConfigs) } } else { if err == nil { t.Fatalf("expect error '%s', got no error", testCase.err) } if !strings.Contains(err.Error(), testCase.err) { t.Fatalf("expect error '%s', got '%s'", testCase.err, err) } } } }