@@ -175,6 +175,115 @@ func TestValidateGatewayForReconcile(t *testing.T) {
175175 }
176176}
177177
178+ // TestValidateConfigMapForReconcile tests the validateConfigMapForReconcile
179+ // predicate function.
180+ func TestValidateConfigMapForReconcile (t * testing.T ) {
181+ testCases := []struct {
182+ name string
183+ configs []client.Object
184+ configMap client.Object
185+ expect bool
186+ }{
187+ {
188+ name : "references EnvoyExtensionPolicy Lua config map" ,
189+ configs : []client.Object {
190+ test .GetGatewayClass ("test-gc" , egv1a1 .GatewayControllerName , nil ),
191+ test .GetGateway (types.NamespacedName {Name : "scheduled-status-test" }, "test-gc" , 8080 ),
192+ & egv1a1.EnvoyExtensionPolicy {
193+ ObjectMeta : metav1.ObjectMeta {
194+ Name : "lua-cm" ,
195+ Namespace : "test" ,
196+ },
197+ Spec : egv1a1.EnvoyExtensionPolicySpec {
198+ PolicyTargetReferences : egv1a1.PolicyTargetReferences {
199+ TargetRefs : []gwapiv1a2.LocalPolicyTargetReferenceWithSectionName {
200+ {
201+ LocalPolicyTargetReference : gwapiv1a2.LocalPolicyTargetReference {
202+ Kind : "Gateway" ,
203+ Name : "scheduled-status-test" ,
204+ },
205+ },
206+ },
207+ },
208+ Lua : []egv1a1.Lua {
209+ {
210+ Type : egv1a1 .LuaValueTypeValueRef ,
211+ ValueRef : & gwapiv1.LocalObjectReference {
212+ Kind : gwapiv1a2 .Kind ("ConfigMap" ),
213+ Name : gwapiv1a2 .ObjectName ("lua" ),
214+ Group : gwapiv1a2 .Group ("v1" ),
215+ },
216+ },
217+ },
218+ },
219+ },
220+ },
221+ configMap : test .GetConfigMap (types.NamespacedName {Name : "lua" , Namespace : "test" }, make (map [string ]string ), make (map [string ]string )),
222+ expect : true ,
223+ },
224+ {
225+ name : "does not reference EnvoyExtensionPolicy Lua config map" ,
226+ configs : []client.Object {
227+ test .GetGatewayClass ("test-gc" , egv1a1 .GatewayControllerName , nil ),
228+ test .GetGateway (types.NamespacedName {Name : "scheduled-status-test" }, "test-gc" , 8080 ),
229+ & egv1a1.EnvoyExtensionPolicy {
230+ ObjectMeta : metav1.ObjectMeta {
231+ Name : "lua-cm" ,
232+ Namespace : "test" ,
233+ },
234+ Spec : egv1a1.EnvoyExtensionPolicySpec {
235+ PolicyTargetReferences : egv1a1.PolicyTargetReferences {
236+ TargetRefs : []gwapiv1a2.LocalPolicyTargetReferenceWithSectionName {
237+ {
238+ LocalPolicyTargetReference : gwapiv1a2.LocalPolicyTargetReference {
239+ Kind : "Gateway" ,
240+ Name : "scheduled-status-test" ,
241+ },
242+ },
243+ },
244+ },
245+ Lua : []egv1a1.Lua {
246+ {
247+ Type : egv1a1 .LuaValueTypeValueRef ,
248+ ValueRef : & gwapiv1.LocalObjectReference {
249+ Kind : gwapiv1a2 .Kind ("ConfigMap" ),
250+ Name : gwapiv1a2 .ObjectName ("lua" ),
251+ Group : gwapiv1a2 .Group ("v1" ),
252+ },
253+ },
254+ },
255+ },
256+ },
257+ },
258+ configMap : test .GetConfigMap (types.NamespacedName {Name : "not-lua" , Namespace : "test" }, make (map [string ]string ), make (map [string ]string )),
259+ expect : false ,
260+ },
261+ }
262+
263+ // Create the reconciler.
264+ logger := logging .DefaultLogger (os .Stdout , egv1a1 .LogLevelInfo )
265+
266+ r := gatewayAPIReconciler {
267+ classController : egv1a1 .GatewayControllerName ,
268+ log : logger ,
269+ spCRDExists : true ,
270+ epCRDExists : true ,
271+ eepCRDExists : true ,
272+ }
273+
274+ for _ , tc := range testCases {
275+ r .client = fakeclient .NewClientBuilder ().
276+ WithScheme (envoygateway .GetScheme ()).
277+ WithObjects (tc .configs ... ).
278+ WithIndex (& egv1a1.EnvoyExtensionPolicy {}, configMapEepIndex , configMapEepIndexFunc ).
279+ Build ()
280+ t .Run (tc .name , func (t * testing.T ) {
281+ res := r .validateConfigMapForReconcile (tc .configMap )
282+ require .Equal (t , tc .expect , res )
283+ })
284+ }
285+ }
286+
178287// TestValidateSecretForReconcile tests the validateSecretForReconcile
179288// predicate function.
180289func TestValidateSecretForReconcile (t * testing.T ) {
0 commit comments