@@ -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