Skip to content

Commit 94de6b4

Browse files
author
Gereon Frey
committed
Add test for CustomerPreCompare
1 parent 6637289 commit 94de6b4

File tree

2 files changed

+103
-0
lines changed

2 files changed

+103
-0
lines changed

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ require (
1010
github.com/go-logr/logr v1.4.2
1111
github.com/samber/lo v1.37.0
1212
github.com/spf13/pflag v1.0.5
13+
github.com/stretchr/testify v1.9.0
1314
k8s.io/api v0.31.0
1415
k8s.io/apimachinery v0.31.0
1516
k8s.io/client-go v0.31.0
@@ -48,6 +49,7 @@ require (
4849
github.com/modern-go/reflect2 v1.0.2 // indirect
4950
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
5051
github.com/pkg/errors v0.9.1 // indirect
52+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
5153
github.com/prometheus/client_golang v1.19.1 // indirect
5254
github.com/prometheus/client_model v0.6.1 // indirect
5355
github.com/prometheus/common v0.55.0 // indirect
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package route_table
2+
3+
import (
4+
"testing"
5+
6+
svcapitypes "github.com/aws-controllers-k8s/ec2-controller/apis/v1alpha1"
7+
ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare"
8+
"github.com/aws/aws-sdk-go/aws"
9+
"github.com/stretchr/testify/assert"
10+
"github.com/stretchr/testify/require"
11+
)
12+
13+
func TestCustomerPreCompare(t *testing.T) {
14+
type Routes []*svcapitypes.CreateRouteInput
15+
16+
peeringRoute := func(pcxID string, cidr string) *svcapitypes.CreateRouteInput {
17+
return &svcapitypes.CreateRouteInput{
18+
DestinationCIDRBlock: aws.String(cidr),
19+
VPCPeeringConnectionID: aws.String(pcxID),
20+
}
21+
}
22+
23+
createRouteTableTestResource := func(routes []*svcapitypes.CreateRouteInput) *resource {
24+
return &resource{
25+
ko: &svcapitypes.RouteTable{
26+
Spec: svcapitypes.RouteTableSpec{
27+
Routes: routes,
28+
},
29+
},
30+
}
31+
}
32+
33+
tt := []struct {
34+
id string
35+
desiredRoutes Routes
36+
latestRoutes Routes
37+
toAdd Routes
38+
toDelete Routes
39+
}{
40+
{"all identical",
41+
Routes{peeringRoute("pcx-123", "172.30.1.0/24")},
42+
Routes{peeringRoute("pcx-123", "172.30.1.0/24")},
43+
nil, nil,
44+
},
45+
{"add route",
46+
Routes{peeringRoute("pcx-123", "172.30.1.0/24")},
47+
nil,
48+
Routes{peeringRoute("pcx-123", "172.30.1.0/24")},
49+
nil,
50+
},
51+
{"delete route",
52+
nil,
53+
Routes{peeringRoute("pcx-123", "172.30.1.0/24")},
54+
nil,
55+
Routes{peeringRoute("pcx-123", "172.30.1.0/24")},
56+
},
57+
{"keep one delete one",
58+
Routes{peeringRoute("pcx-123", "172.30.1.0/24")},
59+
Routes{peeringRoute("pcx-123", "172.30.1.0/24"), peeringRoute("pcx-123", "172.30.2.0/24")},
60+
nil,
61+
Routes{peeringRoute("pcx-123", "172.30.2.0/24")},
62+
},
63+
{"keep one add one",
64+
Routes{peeringRoute("pcx-123", "172.30.1.0/24"), peeringRoute("pcx-123", "172.30.2.0/24")},
65+
Routes{peeringRoute("pcx-123", "172.30.1.0/24")},
66+
Routes{peeringRoute("pcx-123", "172.30.2.0/24")},
67+
nil,
68+
},
69+
{"keep one add one delete one",
70+
Routes{peeringRoute("pcx-123", "172.30.1.0/24"), peeringRoute("pcx-123", "172.30.2.0/24")},
71+
Routes{peeringRoute("pcx-123", "172.30.1.0/24"), peeringRoute("pcx-123", "172.30.3.0/24")},
72+
Routes{peeringRoute("pcx-123", "172.30.2.0/24")},
73+
Routes{peeringRoute("pcx-123", "172.30.3.0/24")},
74+
},
75+
}
76+
77+
for _, tti := range tt {
78+
t.Run(tti.id, func(t *testing.T) {
79+
delta := ackcompare.NewDelta()
80+
a := createRouteTableTestResource(tti.desiredRoutes)
81+
b := createRouteTableTestResource(tti.latestRoutes)
82+
customPreCompare(delta, a, b)
83+
if len(tti.toAdd) == 0 && len(tti.toDelete) == 0 {
84+
assert.Equal(t, 0, len(delta.Differences))
85+
} else {
86+
diff := delta.Differences[0]
87+
diffA := diff.A.([]*svcapitypes.CreateRouteInput)
88+
diffB := diff.B.([]*svcapitypes.CreateRouteInput)
89+
assert.True(t, diff.Path.Contains("Spec.Routes"))
90+
require.Equal(t, len(tti.toAdd), len(diffA))
91+
require.Equal(t, len(tti.toDelete), len(diffB))
92+
for i := range tti.toAdd {
93+
assert.Equal(t, tti.toAdd[i], diffA[i])
94+
}
95+
for i := range tti.toDelete {
96+
assert.Equal(t, tti.toDelete[i], diffB[i])
97+
}
98+
}
99+
})
100+
}
101+
}

0 commit comments

Comments
 (0)