10 func TestLoadAllowNondistributableArtifacts(t *testing.T) {
11 testCases := []struct {
18 registries: []string{"1.2.3.0/24"},
19 cidrStrs: []string{"1.2.3.0/24"},
22 registries: []string{"2001:db8::/120"},
23 cidrStrs: []string{"2001:db8::/120"},
26 registries: []string{"127.0.0.1"},
27 hostnames: []string{"127.0.0.1"},
30 registries: []string{"127.0.0.1:8080"},
31 hostnames: []string{"127.0.0.1:8080"},
34 registries: []string{"2001:db8::1"},
35 hostnames: []string{"2001:db8::1"},
38 registries: []string{"[2001:db8::1]:80"},
39 hostnames: []string{"[2001:db8::1]:80"},
42 registries: []string{"[2001:db8::1]:80"},
43 hostnames: []string{"[2001:db8::1]:80"},
46 registries: []string{"1.2.3.0/24", "2001:db8::/120", "127.0.0.1", "127.0.0.1:8080"},
47 cidrStrs: []string{"1.2.3.0/24", "2001:db8::/120"},
48 hostnames: []string{"127.0.0.1", "127.0.0.1:8080"},
52 registries: []string{"http://mytest.com"},
53 err: "allow-nondistributable-artifacts registry http://mytest.com should not contain '://'",
56 registries: []string{"https://mytest.com"},
57 err: "allow-nondistributable-artifacts registry https://mytest.com should not contain '://'",
60 registries: []string{"HTTP://mytest.com"},
61 err: "allow-nondistributable-artifacts registry HTTP://mytest.com should not contain '://'",
64 registries: []string{"svn://mytest.com"},
65 err: "allow-nondistributable-artifacts registry svn://mytest.com should not contain '://'",
68 registries: []string{"-invalid-registry"},
69 err: "Cannot begin or end with a hyphen",
72 registries: []string{`mytest-.com`},
73 err: `allow-nondistributable-artifacts registry mytest-.com is not valid: invalid host "mytest-.com"`,
76 registries: []string{`1200:0000:AB00:1234:0000:2552:7777:1313:8080`},
77 err: `allow-nondistributable-artifacts registry 1200:0000:AB00:1234:0000:2552:7777:1313:8080 is not valid: invalid host "1200:0000:AB00:1234:0000:2552:7777:1313:8080"`,
80 registries: []string{`mytest.com:500000`},
81 err: `allow-nondistributable-artifacts registry mytest.com:500000 is not valid: invalid port "500000"`,
84 registries: []string{`"mytest.com"`},
85 err: `allow-nondistributable-artifacts registry "mytest.com" is not valid: invalid host "\"mytest.com\""`,
88 registries: []string{`"mytest.com:5000"`},
89 err: `allow-nondistributable-artifacts registry "mytest.com:5000" is not valid: invalid host "\"mytest.com"`,
92 for _, testCase := range testCases {
93 config := newServiceConfig(ServiceOptions{})
94 err := config.LoadAllowNondistributableArtifacts(testCase.registries)
95 if testCase.err == "" {
97 t.Fatalf("expect no error, got '%s'", err)
100 cidrStrs := []string{}
101 for _, c := range config.AllowNondistributableArtifactsCIDRs {
102 cidrStrs = append(cidrStrs, c.String())
105 sort.Strings(testCase.cidrStrs)
106 sort.Strings(cidrStrs)
107 if (len(testCase.cidrStrs) > 0 || len(cidrStrs) > 0) && !reflect.DeepEqual(testCase.cidrStrs, cidrStrs) {
108 t.Fatalf("expect AllowNondistributableArtifactsCIDRs to be '%+v', got '%+v'", testCase.cidrStrs, cidrStrs)
111 sort.Strings(testCase.hostnames)
112 sort.Strings(config.AllowNondistributableArtifactsHostnames)
113 if (len(testCase.hostnames) > 0 || len(config.AllowNondistributableArtifactsHostnames) > 0) && !reflect.DeepEqual(testCase.hostnames, config.AllowNondistributableArtifactsHostnames) {
114 t.Fatalf("expect AllowNondistributableArtifactsHostnames to be '%+v', got '%+v'", testCase.hostnames, config.AllowNondistributableArtifactsHostnames)
118 t.Fatalf("expect error '%s', got no error", testCase.err)
120 if !strings.Contains(err.Error(), testCase.err) {
121 t.Fatalf("expect error '%s', got '%s'", testCase.err, err)
127 func TestValidateMirror(t *testing.T) {
129 "http://mirror-1.com",
130 "http://mirror-1.com/",
131 "https://mirror-1.com",
132 "https://mirror-1.com/",
135 "http://localhost:5000",
136 "https://localhost:5000",
139 "http://127.0.0.1:5000",
140 "https://127.0.0.1:5000",
145 "ftp://mirror-1.com",
146 "http://mirror-1.com/?q=foo",
147 "http://mirror-1.com/v1/",
148 "http://mirror-1.com/v1/?q=foo",
149 "http://mirror-1.com/v1/?q=foo#frag",
150 "http://mirror-1.com?q=foo",
151 "https://mirror-1.com#frag",
152 "https://mirror-1.com/#frag",
153 "http://foo:bar@mirror-1.com/",
154 "https://mirror-1.com/v1/",
155 "https://mirror-1.com/v1/#",
156 "https://mirror-1.com?q",
159 for _, address := range valid {
160 if ret, err := ValidateMirror(address); err != nil || ret == "" {
161 t.Errorf("ValidateMirror(`"+address+"`) got %s %s", ret, err)
165 for _, address := range invalid {
166 if ret, err := ValidateMirror(address); err == nil || ret != "" {
167 t.Errorf("ValidateMirror(`"+address+"`) got %s %s", ret, err)
172 func TestLoadInsecureRegistries(t *testing.T) {
173 testCases := []struct {
179 registries: []string{"127.0.0.1"},
183 registries: []string{"127.0.0.1:8080"},
184 index: "127.0.0.1:8080",
187 registries: []string{"2001:db8::1"},
188 index: "2001:db8::1",
191 registries: []string{"[2001:db8::1]:80"},
192 index: "[2001:db8::1]:80",
195 registries: []string{"http://mytest.com"},
199 registries: []string{"https://mytest.com"},
203 registries: []string{"HTTP://mytest.com"},
207 registries: []string{"svn://mytest.com"},
208 err: "insecure registry svn://mytest.com should not contain '://'",
211 registries: []string{"-invalid-registry"},
212 err: "Cannot begin or end with a hyphen",
215 registries: []string{`mytest-.com`},
216 err: `insecure registry mytest-.com is not valid: invalid host "mytest-.com"`,
219 registries: []string{`1200:0000:AB00:1234:0000:2552:7777:1313:8080`},
220 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"`,
223 registries: []string{`mytest.com:500000`},
224 err: `insecure registry mytest.com:500000 is not valid: invalid port "500000"`,
227 registries: []string{`"mytest.com"`},
228 err: `insecure registry "mytest.com" is not valid: invalid host "\"mytest.com\""`,
231 registries: []string{`"mytest.com:5000"`},
232 err: `insecure registry "mytest.com:5000" is not valid: invalid host "\"mytest.com"`,
235 for _, testCase := range testCases {
236 config := newServiceConfig(ServiceOptions{})
237 err := config.LoadInsecureRegistries(testCase.registries)
238 if testCase.err == "" {
240 t.Fatalf("expect no error, got '%s'", err)
243 for index := range config.IndexConfigs {
244 if index == testCase.index {
249 t.Fatalf("expect index configs to contain '%s', got %+v", testCase.index, config.IndexConfigs)
253 t.Fatalf("expect error '%s', got no error", testCase.err)
255 if !strings.Contains(err.Error(), testCase.err) {
256 t.Fatalf("expect error '%s', got '%s'", testCase.err, err)