@@ -59,6 +59,12 @@ func TestBuildNginxResourceObjects(t *testing.T) {
5959				{
6060					Port : 80 ,
6161				},
62+ 				{
63+ 					Port : 8888 ,
64+ 				},
65+ 				{
66+ 					Port : 9999 ,
67+ 				},
6268			},
6369		},
6470	}
@@ -116,10 +122,24 @@ func TestBuildNginxResourceObjects(t *testing.T) {
116122	validateMeta (svc )
117123	g .Expect (svc .Spec .Type ).To (Equal (defaultServiceType ))
118124	g .Expect (svc .Spec .ExternalTrafficPolicy ).To (Equal (defaultServicePolicy ))
119- 	g .Expect (svc .Spec .Ports ).To (ContainElement (corev1.ServicePort {
120- 		Port :       80 ,
121- 		Name :       "port-80" ,
122- 		TargetPort : intstr .FromInt (80 ),
125+ 
126+ 	// service ports is sorted in ascending order by port number when we make the nginx object 
127+ 	g .Expect (svc .Spec .Ports ).To (Equal ([]corev1.ServicePort {
128+ 		{
129+ 			Port :       80 ,
130+ 			Name :       "port-80" ,
131+ 			TargetPort : intstr .FromInt (80 ),
132+ 		},
133+ 		{
134+ 			Port :       8888 ,
135+ 			Name :       "port-8888" ,
136+ 			TargetPort : intstr .FromInt (8888 ),
137+ 		},
138+ 		{
139+ 			Port :       9999 ,
140+ 			Name :       "port-9999" ,
141+ 			TargetPort : intstr .FromInt (9999 ),
142+ 		},
123143	}))
124144
125145	depObj  :=  objects [4 ]
@@ -132,13 +152,24 @@ func TestBuildNginxResourceObjects(t *testing.T) {
132152	g .Expect (template .Spec .Containers ).To (HaveLen (1 ))
133153	container  :=  template .Spec .Containers [0 ]
134154
135- 	g .Expect (container .Ports ).To (ContainElement (corev1.ContainerPort {
136- 		ContainerPort : config .DefaultNginxMetricsPort ,
137- 		Name :          "metrics" ,
138- 	}))
139- 	g .Expect (container .Ports ).To (ContainElement (corev1.ContainerPort {
140- 		ContainerPort : 80 ,
141- 		Name :          "port-80" ,
155+ 	// container ports is sorted in ascending order by port number when we make the nginx object 
156+ 	g .Expect (container .Ports ).To (Equal ([]corev1.ContainerPort {
157+ 		{
158+ 			ContainerPort : 80 ,
159+ 			Name :          "port-80" ,
160+ 		},
161+ 		{
162+ 			ContainerPort : 8888 ,
163+ 			Name :          "port-8888" ,
164+ 		},
165+ 		{
166+ 			ContainerPort : config .DefaultNginxMetricsPort ,
167+ 			Name :          "metrics" ,
168+ 		},
169+ 		{
170+ 			ContainerPort : 9999 ,
171+ 			Name :          "port-9999" ,
172+ 		},
142173	}))
143174
144175	g .Expect (container .Image ).To (Equal (fmt .Sprintf ("%s:1.0.0" , defaultNginxImagePath )))
@@ -415,14 +446,32 @@ func TestBuildNginxResourceObjects_DockerSecrets(t *testing.T) {
415446		},
416447		Data : map [string ][]byte {"data" : []byte ("docker" )},
417448	}
418- 	fakeClient  :=  fake .NewFakeClient (dockerSecret )
449+ 
450+ 	dockerSecretRegistry1Name  :=  dockerTestSecretName  +  "-registry1" 
451+ 	dockerSecretRegistry1  :=  & corev1.Secret {
452+ 		ObjectMeta : metav1.ObjectMeta {
453+ 			Name :      dockerSecretRegistry1Name ,
454+ 			Namespace : ngfNamespace ,
455+ 		},
456+ 		Data : map [string ][]byte {"data" : []byte ("docker-registry1" )},
457+ 	}
458+ 
459+ 	dockerSecretRegistry2Name  :=  dockerTestSecretName  +  "-registry2" 
460+ 	dockerSecretRegistry2  :=  & corev1.Secret {
461+ 		ObjectMeta : metav1.ObjectMeta {
462+ 			Name :      dockerSecretRegistry2Name ,
463+ 			Namespace : ngfNamespace ,
464+ 		},
465+ 		Data : map [string ][]byte {"data" : []byte ("docker-registry2" )},
466+ 	}
467+ 	fakeClient  :=  fake .NewFakeClient (dockerSecret , dockerSecretRegistry1 , dockerSecretRegistry2 )
419468
420469	provisioner  :=  & NginxProvisioner {
421470		cfg : Config {
422471			GatewayPodConfig : & config.GatewayPodConfig {
423472				Namespace : ngfNamespace ,
424473			},
425- 			NginxDockerSecretNames : []string {dockerTestSecretName },
474+ 			NginxDockerSecretNames : []string {dockerTestSecretName ,  dockerSecretRegistry1Name ,  dockerSecretRegistry2Name },
426475		},
427476		k8sClient : fakeClient ,
428477		baseLabelSelector : metav1.LabelSelector {
@@ -443,26 +492,49 @@ func TestBuildNginxResourceObjects_DockerSecrets(t *testing.T) {
443492	objects , err  :=  provisioner .buildNginxResourceObjects (resourceName , gateway , & graph.EffectiveNginxProxy {})
444493	g .Expect (err ).ToNot (HaveOccurred ())
445494
446- 	g .Expect (objects ).To (HaveLen (6 ))
495+ 	g .Expect (objects ).To (HaveLen (8 ))
447496
448497	expLabels  :=  map [string ]string {
449498		"app" :                                    "nginx" ,
450499		"gateway.networking.k8s.io/gateway-name" : "gw" ,
451500		"app.kubernetes.io/name" :                 "gw-nginx" ,
452501	}
453502
503+ 	// the (docker-only) secret order in the object list is sorted by secret name 
504+ 
454505	secretObj  :=  objects [0 ]
455506	secret , ok  :=  secretObj .(* corev1.Secret )
456507	g .Expect (ok ).To (BeTrue ())
457508	g .Expect (secret .GetName ()).To (Equal (controller .CreateNginxResourceName (resourceName , dockerTestSecretName )))
458509	g .Expect (secret .GetLabels ()).To (Equal (expLabels ))
459510
460- 	depObj  :=  objects [5 ]
511+ 	registry1SecretObj  :=  objects [1 ]
512+ 	secret , ok  =  registry1SecretObj .(* corev1.Secret )
513+ 	g .Expect (ok ).To (BeTrue ())
514+ 	g .Expect (secret .GetName ()).To (Equal (controller .CreateNginxResourceName (resourceName , dockerSecretRegistry1Name )))
515+ 	g .Expect (secret .GetLabels ()).To (Equal (expLabels ))
516+ 
517+ 	registry2SecretObj  :=  objects [2 ]
518+ 	secret , ok  =  registry2SecretObj .(* corev1.Secret )
519+ 	g .Expect (ok ).To (BeTrue ())
520+ 	g .Expect (secret .GetName ()).To (Equal (controller .CreateNginxResourceName (resourceName , dockerSecretRegistry2Name )))
521+ 	g .Expect (secret .GetLabels ()).To (Equal (expLabels ))
522+ 
523+ 	depObj  :=  objects [7 ]
461524	dep , ok  :=  depObj .(* appsv1.Deployment )
462525	g .Expect (ok ).To (BeTrue ())
463526
464- 	g .Expect (dep .Spec .Template .Spec .ImagePullSecrets ).To (ContainElement (corev1.LocalObjectReference {
465- 		Name : controller .CreateNginxResourceName (resourceName , dockerTestSecretName ),
527+ 	// imagePullSecrets is sorted by name when we make the nginx object 
528+ 	g .Expect (dep .Spec .Template .Spec .ImagePullSecrets ).To (Equal ([]corev1.LocalObjectReference {
529+ 		{
530+ 			Name : controller .CreateNginxResourceName (resourceName , dockerTestSecretName ),
531+ 		},
532+ 		{
533+ 			Name : controller .CreateNginxResourceName (resourceName , dockerSecretRegistry1Name ),
534+ 		},
535+ 		{
536+ 			Name : controller .CreateNginxResourceName (resourceName , dockerSecretRegistry2Name ),
537+ 		},
466538	}))
467539}
468540
0 commit comments