@@ -166,3 +166,72 @@ func TestTCPRouteGeneration(t *testing.T) {
166166 t .Errorf ("Expected backend 'test-cluster-all-broker', got '%s'" , tcpRoute .Spec .Rules [0 ].BackendRefs [0 ].Name )
167167 }
168168}
169+
170+ func TestGatewayGenerationWithTLS (t * testing.T ) {
171+ cluster := & v1beta1.KafkaCluster {
172+ ObjectMeta : metav1.ObjectMeta {
173+ Name : "test-cluster" ,
174+ Namespace : "test-namespace" ,
175+ },
176+ Spec : v1beta1.KafkaClusterSpec {
177+ Brokers : []v1beta1.Broker {
178+ {Id : 0 },
179+ {Id : 1 },
180+ {Id : 2 },
181+ },
182+ EnvoyGatewayConfig : v1beta1.EnvoyGatewayIngressConfig {
183+ GatewayClassName : "test-gateway-class" ,
184+ TLSSecretName : "test-tls-secret" ,
185+ },
186+ },
187+ }
188+
189+ reconciler := & Reconciler {
190+ Reconciler : resources.Reconciler {
191+ KafkaCluster : cluster ,
192+ },
193+ }
194+
195+ eListener := v1beta1.ExternalListenerConfig {
196+ CommonListenerSpec : v1beta1.CommonListenerSpec {
197+ Name : "test-listener" ,
198+ ContainerPort : 9092 ,
199+ },
200+ ExternalStartingPort : - 1 , // TLS enabled
201+ }
202+
203+ ingressConfig := v1beta1.IngressConfig {
204+ EnvoyGatewayConfig : & cluster .Spec .EnvoyGatewayConfig ,
205+ }
206+
207+ gateway := reconciler .gateway (eListener , ingressConfig )
208+
209+ gw , ok := gateway .(* gatewayv1.Gateway )
210+ if ! ok {
211+ t .Fatal ("Expected Gateway type" )
212+ }
213+
214+ // 3 brokers + 1 anycast = 4 listeners
215+ if len (gw .Spec .Listeners ) != 4 {
216+ t .Errorf ("Expected 4 listeners, got %d" , len (gw .Spec .Listeners ))
217+ }
218+
219+ // When TLS is enabled (externalStartingPort == -1), all broker listeners should use the anycast port
220+ expectedPort := gatewayv1 .PortNumber (29092 ) // default anycast port
221+ for i := 0 ; i < 3 ; i ++ {
222+ if gw .Spec .Listeners [i ].Port != expectedPort {
223+ t .Errorf ("Expected broker %d port %d (anycast port when TLS enabled), got %d" , i , expectedPort , gw .Spec .Listeners [i ].Port )
224+ }
225+ if gw .Spec .Listeners [i ].Protocol != gatewayv1 .TLSProtocolType {
226+ t .Errorf ("Expected broker %d protocol TLS, got %s" , i , gw .Spec .Listeners [i ].Protocol )
227+ }
228+ if gw .Spec .Listeners [i ].TLS == nil {
229+ t .Errorf ("Expected broker %d to have TLS config" , i )
230+ }
231+ }
232+
233+ // Check anycast listener also uses the same port
234+ if gw .Spec .Listeners [3 ].Port != expectedPort {
235+ t .Errorf ("Expected anycast port %d, got %d" , expectedPort , gw .Spec .Listeners [3 ].Port )
236+ }
237+ }
0 commit comments