@@ -232,6 +232,38 @@ func TestRegistryCheck(t *testing.T) {
232232 Allowed : true ,
233233 },
234234 },
235+ {
236+ name : "image registry with valid configuration using http" ,
237+ imageRegistry : & carenv1.ImageRegistry {
238+ URL : "http://registry.example.com" ,
239+ Credentials : & carenv1.RegistryCredentials {
240+ SecretRef : & carenv1.LocalObjectReference {
241+ Name : "test-secret" ,
242+ },
243+ },
244+ },
245+ kclient : & mockK8sClient {
246+ getSecretFunc : func (ctx context.Context ,
247+ key types.NamespacedName ,
248+ obj ctrlclient.Object ,
249+ opts ... ctrlclient.GetOption ,
250+ ) error {
251+ secret := obj .(* corev1.Secret )
252+ secret .Data = map [string ][]byte {
253+ "username" : []byte ("testuser" ),
254+ }
255+ return nil
256+ },
257+ },
258+ mockRegClientPingerFactory : func (... regclient.Opt ) regClientPinger {
259+ return & mockRegClient {
260+ pingFunc : func (ref.Ref ) error { return nil },
261+ }
262+ },
263+ want : preflight.CheckResult {
264+ Allowed : true ,
265+ },
266+ },
235267 {
236268 name : "image registry with invalid URL" ,
237269 field : "cluster.spec.topology.variables[.name=clusterConfig].value.imageRegistries[0]" ,
@@ -275,6 +307,48 @@ func TestRegistryCheck(t *testing.T) {
275307 },
276308 },
277309 },
310+ {
311+ name : "image registry with invalid URL scheme" ,
312+ field : "cluster.spec.topology.variables[.name=clusterConfig].value.imageRegistries[0]" ,
313+ imageRegistry : & carenv1.ImageRegistry {
314+ URL : "tcp://some-registry.lol" ,
315+ Credentials : & carenv1.RegistryCredentials {
316+ SecretRef : & carenv1.LocalObjectReference {
317+ Name : "test-secret" ,
318+ },
319+ },
320+ },
321+ kclient : & mockK8sClient {
322+ getSecretFunc : func (ctx context.Context ,
323+ key types.NamespacedName ,
324+ obj ctrlclient.Object ,
325+ opts ... ctrlclient.GetOption ,
326+ ) error {
327+ secret := obj .(* corev1.Secret )
328+ secret .Data = map [string ][]byte {
329+ "username" : []byte ("testuser" ),
330+ "password" : []byte ("testpass" ),
331+ "ca.crt" : []byte ("test-ca-cert" ),
332+ }
333+ return nil
334+ },
335+ },
336+ mockRegClientPingerFactory : func (... regclient.Opt ) regClientPinger {
337+ return & mockRegClient {
338+ pingFunc : func (ref.Ref ) error { return nil },
339+ }
340+ },
341+ want : preflight.CheckResult {
342+ Allowed : false ,
343+ InternalError : false ,
344+ Causes : []preflight.Cause {
345+ {
346+ Message : fmt .Sprintf ("failed to parse registry url must be http or https tcp://some-registry.lol" ),
347+ Field : "cluster.spec.topology.variables[.name=clusterConfig].value.imageRegistries[0].url" ,
348+ },
349+ },
350+ },
351+ },
278352 }
279353
280354 for _ , tc := range testCases {
0 commit comments