@@ -279,3 +279,80 @@ func TestPolicyServerValidateSigstoreTrustConfig(t *testing.T) {
279279 })
280280 }
281281}
282+
283+ func TestValidatePorts (t * testing.T ) {
284+ tests := []struct {
285+ name string
286+ webhookPort * int32
287+ readiness * int32
288+ metrics * int32
289+ errContains string
290+ }{
291+ {
292+ name : "all defaults, no conflict" ,
293+ errContains : "" ,
294+ },
295+ {
296+ name : "webhookPort equals readinessProbePort" ,
297+ webhookPort : ptr.To [int32 ](8081 ),
298+ readiness : ptr.To [int32 ](8081 ),
299+ errContains : "readinessProbePort must differ from webhookPort" ,
300+ },
301+ {
302+ name : "webhookPort equals metricsPort" ,
303+ webhookPort : ptr.To [int32 ](8080 ),
304+ metrics : ptr.To [int32 ](8080 ),
305+ errContains : "metricsPort must differ from webhookPort" ,
306+ },
307+ {
308+ name : "readinessProbePort equals metricsPort" ,
309+ readiness : ptr.To [int32 ](9000 ),
310+ metrics : ptr.To [int32 ](9000 ),
311+ errContains : "metricsPort must differ from readinessProbePort" ,
312+ },
313+ {
314+ name : "all three ports the same" ,
315+ webhookPort : ptr.To [int32 ](9999 ),
316+ readiness : ptr.To [int32 ](9999 ),
317+ metrics : ptr.To [int32 ](9999 ),
318+ errContains : "readinessProbePort must differ from webhookPort" ,
319+ },
320+ {
321+ name : "all three ports distinct custom values" ,
322+ webhookPort : ptr.To [int32 ](9443 ),
323+ readiness : ptr.To [int32 ](9081 ),
324+ metrics : ptr.To [int32 ](9080 ),
325+ errContains : "" ,
326+ },
327+ }
328+
329+ for _ , test := range tests {
330+ t .Run (test .name , func (t * testing.T ) {
331+ k8sClient := fake .NewClientBuilder ().Build ()
332+ builder := NewPolicyServerFactory ()
333+ if test .webhookPort != nil {
334+ builder = builder .WithWebhookPort (* test .webhookPort )
335+ }
336+ if test .readiness != nil {
337+ builder = builder .WithReadinessProbePort (* test .readiness )
338+ }
339+ if test .metrics != nil {
340+ builder = builder .WithMetricsPort (* test .metrics )
341+ }
342+ policyServer := builder .Build ()
343+
344+ validator := policyServerValidator {
345+ deploymentsNamespace : "default" ,
346+ k8sClient : k8sClient ,
347+ logger : logr .Discard (),
348+ }
349+ err := validator .validate (t .Context (), policyServer )
350+
351+ if test .errContains != "" {
352+ require .ErrorContains (t , err , test .errContains )
353+ } else {
354+ require .NoError (t , err )
355+ }
356+ })
357+ }
358+ }
0 commit comments