@@ -2,10 +2,14 @@ package gateway
22
33import (
44 "context"
5+ "github.com/golang/mock/gomock"
56 "github.com/pkg/errors"
67 "github.com/stretchr/testify/assert"
78 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
89 elbv2gw "sigs.k8s.io/aws-load-balancer-controller/apis/gateway/v1beta1"
10+ mock_client "sigs.k8s.io/aws-load-balancer-controller/mocks/controller-runtime/client"
11+ "sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
12+ "sigs.k8s.io/aws-load-balancer-controller/pkg/shared_constants"
913 "sigs.k8s.io/controller-runtime/pkg/client"
1014 gwv1 "sigs.k8s.io/gateway-api/apis/v1"
1115 "testing"
@@ -15,6 +19,11 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
1519 mergedConfigName := "mergedConfig"
1620 gwClassName := "gwclass"
1721 gwName := "gw"
22+ ctrl := gomock .NewController (t )
23+ defer ctrl .Finish ()
24+
25+ k8sClient := mock_client .NewMockClient (ctrl )
26+ k8sFinalizerManager := k8s .NewMockFinalizerManager (ctrl )
1827
1928 testCases := []struct {
2029 name string
@@ -27,12 +36,15 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
2736 resolvedGatewayClassConfig * elbv2gw.LoadBalancerConfiguration
2837 resolvedGatewayConfig * elbv2gw.LoadBalancerConfiguration
2938
39+ setupMocks func ()
40+
3041 expectErr bool
3142 expected elbv2gw.LoadBalancerConfiguration
3243 }{
3344 {
3445 name : "gw class isnt accepted" ,
3546 inputGatewayClass : & gwv1.GatewayClass {},
47+ setupMocks : func () {},
3648 expectErr : true ,
3749 },
3850 {
@@ -47,7 +59,8 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
4759 },
4860 },
4961 },
50- expectErr : true ,
62+ setupMocks : func () {},
63+ expectErr : true ,
5164 },
5265 {
5366 name : "gw class isnt accepted -- condition is explicitly false" ,
@@ -61,7 +74,8 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
6174 },
6275 },
6376 },
64- expectErr : true ,
77+ setupMocks : func () {},
78+ expectErr : true ,
6579 },
6680 {
6781 name : "gw class accepted -- fail to get gw class config" ,
@@ -107,6 +121,11 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
107121 ObjectMeta : metav1.ObjectMeta {ResourceVersion : "1" },
108122 }, nil
109123 },
124+ setupMocks : func () {
125+ k8sFinalizerManager .EXPECT ().
126+ AddFinalizers (context .Background (), gomock .Any (), shared_constants .LoadBalancerConfigurationFinalizer ).
127+ Return (nil )
128+ },
110129 expectErr : true ,
111130 },
112131 {
@@ -156,6 +175,11 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
156175 ObjectMeta : metav1.ObjectMeta {ResourceVersion : "1" },
157176 }, nil
158177 },
178+ setupMocks : func () {
179+ k8sFinalizerManager .EXPECT ().
180+ AddFinalizers (context .Background (), gomock .Any (), shared_constants .LoadBalancerConfigurationFinalizer ).
181+ Return (nil )
182+ },
159183 expectErr : true ,
160184 },
161185 {
@@ -188,7 +212,8 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
188212 }
189213 return nil , errors .New ("bad thing" )
190214 },
191- expected : elbv2gw.LoadBalancerConfiguration {},
215+ setupMocks : func () {},
216+ expected : elbv2gw.LoadBalancerConfiguration {},
192217 },
193218 {
194219 name : "gw class accepted -- only gw class configs" ,
@@ -234,6 +259,11 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
234259 expected : elbv2gw.LoadBalancerConfiguration {
235260 ObjectMeta : metav1.ObjectMeta {Name : "gwclass" , ResourceVersion : "1" },
236261 },
262+ setupMocks : func () {
263+ k8sFinalizerManager .EXPECT ().
264+ AddFinalizers (context .Background (), gomock .Any (), shared_constants .LoadBalancerConfigurationFinalizer ).
265+ Return (nil )
266+ },
237267 },
238268 {
239269 name : "gw class accepted -- only gw config" ,
@@ -278,6 +308,11 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
278308 expected : elbv2gw.LoadBalancerConfiguration {
279309 ObjectMeta : metav1.ObjectMeta {Name : "gw" , ResourceVersion : "1" },
280310 },
311+ setupMocks : func () {
312+ k8sFinalizerManager .EXPECT ().
313+ AddFinalizers (context .Background (), gomock .Any (), shared_constants .LoadBalancerConfigurationFinalizer ).
314+ Return (nil )
315+ },
281316 },
282317 {
283318 name : "gw class accepted -- both gw and gwclass have config - perform merge" ,
@@ -327,6 +362,11 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
327362 expected : elbv2gw.LoadBalancerConfiguration {
328363 ObjectMeta : metav1.ObjectMeta {Name : mergedConfigName },
329364 },
365+ setupMocks : func () {
366+ k8sFinalizerManager .EXPECT ().
367+ AddFinalizers (context .Background (), gomock .Any (), shared_constants .LoadBalancerConfigurationFinalizer ).
368+ Return (nil ).Times (2 )
369+ },
330370 },
331371 {
332372 name : "gw class accepted -- but processed config version has a mismatch" ,
@@ -369,6 +409,11 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
369409 ObjectMeta : metav1.ObjectMeta {Name : "gwclass" , ResourceVersion : "1" },
370410 }, nil
371411 },
412+ setupMocks : func () {
413+ k8sFinalizerManager .EXPECT ().
414+ AddFinalizers (context .Background (), gomock .Any (), shared_constants .LoadBalancerConfigurationFinalizer ).
415+ Return (nil )
416+ },
372417 expectErr : true ,
373418 },
374419 }
@@ -384,8 +429,8 @@ func Test_getLoadBalancerConfigForGateway(t *testing.T) {
384429 },
385430 configResolverFn : tc .configResolverFn ,
386431 }
387-
388- result , err := r .getLoadBalancerConfigForGateway (context .Background (), nil , tc .inputGateway , tc .inputGatewayClass )
432+ tc . setupMocks ()
433+ result , err := r .getLoadBalancerConfigForGateway (context .Background (), k8sClient , k8sFinalizerManager , tc .inputGateway , tc .inputGatewayClass )
389434 if tc .expectErr {
390435 assert .Error (t , err )
391436 return
0 commit comments