@@ -17,15 +17,18 @@ limitations under the License.
17
17
package network
18
18
19
19
import (
20
+ "context"
20
21
"net"
21
22
"testing"
22
23
23
24
"github.com/hetznercloud/hcloud-go/v2/hcloud"
24
25
. "github.com/onsi/ginkgo/v2"
25
26
. "github.com/onsi/gomega"
27
+ "k8s.io/utils/ptr"
26
28
27
29
infrav1 "github.com/syself/cluster-api-provider-hetzner/api/v1beta1"
28
30
"github.com/syself/cluster-api-provider-hetzner/pkg/scope"
31
+ fakeclient "github.com/syself/cluster-api-provider-hetzner/pkg/services/hcloud/client/fake"
29
32
)
30
33
31
34
func TestNetwork (t * testing.T ) {
@@ -39,9 +42,9 @@ var _ = Describe("Test createOpts", func() {
39
42
BeforeEach (func () {
40
43
hetznerCluster .Spec .HCloudNetwork = infrav1.HCloudNetworkSpec {
41
44
Enabled : true ,
42
- CIDRBlock : "10.0.0.0/16" ,
43
- SubnetCIDRBlock : "10.0.0.0/24" ,
44
- NetworkZone : "eu-central" ,
45
+ CIDRBlock : ptr . To ( infrav1 . DefaultCIDRBlock ) ,
46
+ SubnetCIDRBlock : ptr . To ( infrav1 . DefaultSubnetCIDRBlock ) ,
47
+ NetworkZone : ptr. To [infrav1. HCloudNetworkZone ]( infrav1 . DefaultNetworkZone ) ,
45
48
}
46
49
hetznerCluster .Name = "hetzner-cluster"
47
50
@@ -73,14 +76,115 @@ var _ = Describe("Test createOpts", func() {
73
76
})
74
77
75
78
It ("gives an error with wrong CIDRBlock" , func () {
76
- hetznerCluster .Spec .HCloudNetwork .CIDRBlock = "invalid-cidr-block"
79
+ hetznerCluster .Spec .HCloudNetwork .CIDRBlock = ptr . To ( "invalid-cidr-block" )
77
80
_ , err := service .createOpts ()
78
81
Expect (err ).ToNot (BeNil ())
79
82
})
80
83
81
84
It ("gives an error with wrong SubnetCIDRBlock" , func () {
82
- hetznerCluster .Spec .HCloudNetwork .SubnetCIDRBlock = "invalid-cidr-block"
85
+ hetznerCluster .Spec .HCloudNetwork .SubnetCIDRBlock = ptr . To ( "invalid-cidr-block" )
83
86
_ , err := service .createOpts ()
84
87
Expect (err ).ToNot (BeNil ())
85
88
})
89
+
90
+ It ("gives an error with nil CIDRBlock" , func () {
91
+ hetznerCluster .Spec .HCloudNetwork .CIDRBlock = nil
92
+ _ , err := service .createOpts ()
93
+ Expect (err ).ToNot (BeNil ())
94
+ })
95
+
96
+ It ("gives an error with nil SubnetCIDRBlock" , func () {
97
+ hetznerCluster .Spec .HCloudNetwork .SubnetCIDRBlock = nil
98
+ _ , err := service .createOpts ()
99
+ Expect (err ).ToNot (BeNil ())
100
+ })
101
+
102
+ It ("gives an error with nil NetworkZone" , func () {
103
+ hetznerCluster .Spec .HCloudNetwork .NetworkZone = nil
104
+ _ , err := service .createOpts ()
105
+ Expect (err ).ToNot (BeNil ())
106
+ })
107
+ })
108
+
109
+ var _ = Describe ("Test findNetwork" , func () {
110
+ var hetznerCluster infrav1.HetznerCluster
111
+ var service Service
112
+ var network * hcloud.Network
113
+ client := fakeclient .NewHCloudClientFactory ().NewClient ("" )
114
+
115
+ BeforeEach (func () {
116
+ hetznerCluster .Spec .HCloudNetwork = infrav1.HCloudNetworkSpec {
117
+ Enabled : true ,
118
+ CIDRBlock : ptr .To (infrav1 .DefaultCIDRBlock ),
119
+ SubnetCIDRBlock : ptr .To (infrav1 .DefaultSubnetCIDRBlock ),
120
+ NetworkZone : ptr.To [infrav1.HCloudNetworkZone ](infrav1 .DefaultNetworkZone ),
121
+ }
122
+ hetznerCluster .Name = "hetzner-cluster"
123
+
124
+ service = Service {& scope.ClusterScope {HetznerCluster : & hetznerCluster , HCloudClient : client }}
125
+ })
126
+ AfterEach (func () {
127
+ err := client .DeleteNetwork (context .Background (), network )
128
+ Expect (err ).To (Succeed ())
129
+ })
130
+ It ("Gets the Network if ID is set" , func () {
131
+ hetznerCluster .Spec .HCloudNetwork .ID = ptr .To (int64 (1 ))
132
+
133
+ var err error
134
+ network , err = client .CreateNetwork (context .Background (), hcloud.NetworkCreateOpts {Name : "networkName" })
135
+ Expect (err ).To (Succeed ())
136
+ res , err := service .findNetwork (context .Background ())
137
+ Expect (err ).To (BeNil ())
138
+ Expect (res ).To (Equal (network ))
139
+ })
140
+ It ("Finds the labeled Network if ID is not set" , func () {
141
+ var err error
142
+ network , err = client .CreateNetwork (context .Background (), hcloud.NetworkCreateOpts {
143
+ Name : "networkName" ,
144
+ Labels : map [string ]string {
145
+ hetznerCluster .ClusterTagKey (): string (infrav1 .ResourceLifecycleOwned ),
146
+ },
147
+ })
148
+ Expect (err ).To (Succeed ())
149
+ res , err := service .findNetwork (context .Background ())
150
+ Expect (err ).To (BeNil ())
151
+ Expect (res ).To (Equal (network ))
152
+ })
153
+ It ("gives an error when there is more than one Network" , func () {
154
+ var err error
155
+ network , err = client .CreateNetwork (context .Background (), hcloud.NetworkCreateOpts {
156
+ Name : "networkName" ,
157
+ Labels : map [string ]string {
158
+ hetznerCluster .ClusterTagKey (): string (infrav1 .ResourceLifecycleOwned ),
159
+ },
160
+ })
161
+ Expect (err ).To (Succeed ())
162
+ network2 , err := client .CreateNetwork (context .Background (), hcloud.NetworkCreateOpts {
163
+ Name : "networkName2" ,
164
+ Labels : map [string ]string {
165
+ hetznerCluster .ClusterTagKey (): string (infrav1 .ResourceLifecycleOwned ),
166
+ },
167
+ })
168
+ Expect (err ).To (Succeed ())
169
+ res , err := service .findNetwork (context .Background ())
170
+ Expect (res ).To (BeNil ())
171
+ Expect (err ).ToNot (BeNil ())
172
+
173
+ err = client .DeleteNetwork (context .Background (), network2 )
174
+ Expect (err ).To (Succeed ())
175
+ })
176
+ It ("gives an error when there is more than one Subnet" , func () {
177
+ var err error
178
+ network , err = client .CreateNetwork (context .Background (), hcloud.NetworkCreateOpts {
179
+ Name : "networkName" ,
180
+ Labels : map [string ]string {
181
+ hetznerCluster .ClusterTagKey (): string (infrav1 .ResourceLifecycleOwned ),
182
+ },
183
+ Subnets : make ([]hcloud.NetworkSubnet , 2 ),
184
+ })
185
+ Expect (err ).To (Succeed ())
186
+ res , err := service .findNetwork (context .Background ())
187
+ Expect (res ).To (BeNil ())
188
+ Expect (err ).ToNot (BeNil ())
189
+ })
86
190
})
0 commit comments