Skip to content

Commit 6dd0a08

Browse files
committed
add unit tests
1 parent 7204b59 commit 6dd0a08

File tree

12 files changed

+804
-162
lines changed

12 files changed

+804
-162
lines changed

config/crd/bases/netbox.dev_iprangeclaims.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ spec:
1212
listKind: IpRangeClaimList
1313
plural: iprangeclaims
1414
shortNames:
15-
- iprc
15+
- irc
1616
singular: iprangeclaim
1717
scope: Namespaced
1818
versions:

config/crd/bases/netbox.dev_ipranges.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ spec:
1212
listKind: IpRangeList
1313
plural: ipranges
1414
shortNames:
15-
- ipr
15+
- ir
1616
singular: iprange
1717
scope: Namespaced
1818
versions:

internal/controller/iprange_controller_test.go

Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -16,69 +16,69 @@ limitations under the License.
1616

1717
package controller
1818

19-
import (
20-
"context"
19+
// import (
20+
// "context"
2121

22-
. "github.com/onsi/ginkgo/v2"
23-
. "github.com/onsi/gomega"
24-
"k8s.io/apimachinery/pkg/api/errors"
25-
"k8s.io/apimachinery/pkg/types"
26-
"sigs.k8s.io/controller-runtime/pkg/reconcile"
22+
// . "github.com/onsi/ginkgo/v2"
23+
// . "github.com/onsi/gomega"
24+
// "k8s.io/apimachinery/pkg/api/errors"
25+
// "k8s.io/apimachinery/pkg/types"
26+
// "sigs.k8s.io/controller-runtime/pkg/reconcile"
2727

28-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28+
// metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2929

30-
netboxdevv1 "github.com/netbox-community/netbox-operator/api/v1"
31-
)
30+
// netboxdevv1 "github.com/netbox-community/netbox-operator/api/v1"
31+
// )
3232

33-
var _ = Describe("IpRange Controller", func() {
34-
Context("When reconciling a resource", func() {
35-
const resourceName = "test-resource"
33+
// var _ = Describe("IpRange Controller", func() {
34+
// Context("When reconciling a resource", func() {
35+
// const resourceName = "test-resource"
3636

37-
ctx := context.Background()
37+
// ctx := context.Background()
3838

39-
typeNamespacedName := types.NamespacedName{
40-
Name: resourceName,
41-
Namespace: "default", // TODO(user):Modify as needed
42-
}
43-
iprange := &netboxdevv1.IpRange{}
39+
// typeNamespacedName := types.NamespacedName{
40+
// Name: resourceName,
41+
// Namespace: "default", // TODO(user):Modify as needed
42+
// }
43+
// iprange := &netboxdevv1.IpRange{}
4444

45-
BeforeEach(func() {
46-
By("creating the custom resource for the Kind IpRange")
47-
err := k8sClient.Get(ctx, typeNamespacedName, iprange)
48-
if err != nil && errors.IsNotFound(err) {
49-
resource := &netboxdevv1.IpRange{
50-
ObjectMeta: metav1.ObjectMeta{
51-
Name: resourceName,
52-
Namespace: "default",
53-
},
54-
// TODO(user): Specify other spec details if needed.
55-
}
56-
Expect(k8sClient.Create(ctx, resource)).To(Succeed())
57-
}
58-
})
45+
// BeforeEach(func() {
46+
// By("creating the custom resource for the Kind IpRange")
47+
// err := k8sClient.Get(ctx, typeNamespacedName, iprange)
48+
// if err != nil && errors.IsNotFound(err) {
49+
// resource := &netboxdevv1.IpRange{
50+
// ObjectMeta: metav1.ObjectMeta{
51+
// Name: resourceName,
52+
// Namespace: "default",
53+
// },
54+
// // TODO(user): Specify other spec details if needed.
55+
// }
56+
// Expect(k8sClient.Create(ctx, resource)).To(Succeed())
57+
// }
58+
// })
5959

60-
AfterEach(func() {
61-
// TODO(user): Cleanup logic after each test, like removing the resource instance.
62-
resource := &netboxdevv1.IpRange{}
63-
err := k8sClient.Get(ctx, typeNamespacedName, resource)
64-
Expect(err).NotTo(HaveOccurred())
60+
// AfterEach(func() {
61+
// // TODO(user): Cleanup logic after each test, like removing the resource instance.
62+
// resource := &netboxdevv1.IpRange{}
63+
// err := k8sClient.Get(ctx, typeNamespacedName, resource)
64+
// Expect(err).NotTo(HaveOccurred())
6565

66-
By("Cleanup the specific resource instance IpRange")
67-
Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
68-
})
69-
It("should successfully reconcile the resource", func() {
70-
By("Reconciling the created resource")
71-
controllerReconciler := &IpRangeReconciler{
72-
Client: k8sClient,
73-
Scheme: k8sClient.Scheme(),
74-
}
66+
// By("Cleanup the specific resource instance IpRange")
67+
// Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
68+
// })
69+
// It("should successfully reconcile the resource", func() {
70+
// By("Reconciling the created resource")
71+
// controllerReconciler := &IpRangeReconciler{
72+
// Client: k8sClient,
73+
// Scheme: k8sClient.Scheme(),
74+
// }
7575

76-
_, err := controllerReconciler.Reconcile(ctx, reconcile.Request{
77-
NamespacedName: typeNamespacedName,
78-
})
79-
Expect(err).NotTo(HaveOccurred())
80-
// TODO(user): Add more specific assertions depending on your controller's reconciliation logic.
81-
// Example: If you expect a certain status condition after reconciliation, verify it here.
82-
})
83-
})
84-
})
76+
// _, err := controllerReconciler.Reconcile(ctx, reconcile.Request{
77+
// NamespacedName: typeNamespacedName,
78+
// })
79+
// Expect(err).NotTo(HaveOccurred())
80+
// // TODO(user): Add more specific assertions depending on your controller's reconciliation logic.
81+
// // Example: If you expect a certain status condition after reconciliation, verify it here.
82+
// })
83+
// })
84+
// })

internal/controller/iprangeclaim_controller_test.go

Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -16,69 +16,69 @@ limitations under the License.
1616

1717
package controller
1818

19-
import (
20-
"context"
19+
// import (
20+
// "context"
2121

22-
. "github.com/onsi/ginkgo/v2"
23-
. "github.com/onsi/gomega"
24-
"k8s.io/apimachinery/pkg/api/errors"
25-
"k8s.io/apimachinery/pkg/types"
26-
"sigs.k8s.io/controller-runtime/pkg/reconcile"
22+
// . "github.com/onsi/ginkgo/v2"
23+
// . "github.com/onsi/gomega"
24+
// "k8s.io/apimachinery/pkg/api/errors"
25+
// "k8s.io/apimachinery/pkg/types"
26+
// "sigs.k8s.io/controller-runtime/pkg/reconcile"
2727

28-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28+
// metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2929

30-
netboxdevv1 "github.com/netbox-community/netbox-operator/api/v1"
31-
)
30+
// netboxdevv1 "github.com/netbox-community/netbox-operator/api/v1"
31+
// )
3232

33-
var _ = Describe("IpRangeClaim Controller", func() {
34-
Context("When reconciling a resource", func() {
35-
const resourceName = "test-resource"
33+
// var _ = Describe("IpRangeClaim Controller", func() {
34+
// Context("When reconciling a resource", func() {
35+
// const resourceName = "test-resource"
3636

37-
ctx := context.Background()
37+
// ctx := context.Background()
3838

39-
typeNamespacedName := types.NamespacedName{
40-
Name: resourceName,
41-
Namespace: "default", // TODO(user):Modify as needed
42-
}
43-
iprangeclaim := &netboxdevv1.IpRangeClaim{}
39+
// typeNamespacedName := types.NamespacedName{
40+
// Name: resourceName,
41+
// Namespace: "default", // TODO(user):Modify as needed
42+
// }
43+
// iprangeclaim := &netboxdevv1.IpRangeClaim{}
4444

45-
BeforeEach(func() {
46-
By("creating the custom resource for the Kind IpRangeClaim")
47-
err := k8sClient.Get(ctx, typeNamespacedName, iprangeclaim)
48-
if err != nil && errors.IsNotFound(err) {
49-
resource := &netboxdevv1.IpRangeClaim{
50-
ObjectMeta: metav1.ObjectMeta{
51-
Name: resourceName,
52-
Namespace: "default",
53-
},
54-
// TODO(user): Specify other spec details if needed.
55-
}
56-
Expect(k8sClient.Create(ctx, resource)).To(Succeed())
57-
}
58-
})
45+
// BeforeEach(func() {
46+
// By("creating the custom resource for the Kind IpRangeClaim")
47+
// err := k8sClient.Get(ctx, typeNamespacedName, iprangeclaim)
48+
// if err != nil && errors.IsNotFound(err) {
49+
// resource := &netboxdevv1.IpRangeClaim{
50+
// ObjectMeta: metav1.ObjectMeta{
51+
// Name: resourceName,
52+
// Namespace: "default",
53+
// },
54+
// // TODO(user): Specify other spec details if needed.
55+
// }
56+
// Expect(k8sClient.Create(ctx, resource)).To(Succeed())
57+
// }
58+
// })
5959

60-
AfterEach(func() {
61-
// TODO(user): Cleanup logic after each test, like removing the resource instance.
62-
resource := &netboxdevv1.IpRangeClaim{}
63-
err := k8sClient.Get(ctx, typeNamespacedName, resource)
64-
Expect(err).NotTo(HaveOccurred())
60+
// AfterEach(func() {
61+
// // TODO(user): Cleanup logic after each test, like removing the resource instance.
62+
// resource := &netboxdevv1.IpRangeClaim{}
63+
// err := k8sClient.Get(ctx, typeNamespacedName, resource)
64+
// Expect(err).NotTo(HaveOccurred())
6565

66-
By("Cleanup the specific resource instance IpRangeClaim")
67-
Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
68-
})
69-
It("should successfully reconcile the resource", func() {
70-
By("Reconciling the created resource")
71-
controllerReconciler := &IpRangeClaimReconciler{
72-
Client: k8sClient,
73-
Scheme: k8sClient.Scheme(),
74-
}
66+
// By("Cleanup the specific resource instance IpRangeClaim")
67+
// Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
68+
// })
69+
// It("should successfully reconcile the resource", func() {
70+
// By("Reconciling the created resource")
71+
// controllerReconciler := &IpRangeClaimReconciler{
72+
// Client: k8sClient,
73+
// Scheme: k8sClient.Scheme(),
74+
// }
7575

76-
_, err := controllerReconciler.Reconcile(ctx, reconcile.Request{
77-
NamespacedName: typeNamespacedName,
78-
})
79-
Expect(err).NotTo(HaveOccurred())
80-
// TODO(user): Add more specific assertions depending on your controller's reconciliation logic.
81-
// Example: If you expect a certain status condition after reconciliation, verify it here.
82-
})
83-
})
84-
})
76+
// _, err := controllerReconciler.Reconcile(ctx, reconcile.Request{
77+
// NamespacedName: typeNamespacedName,
78+
// })
79+
// Expect(err).NotTo(HaveOccurred())
80+
// // TODO(user): Add more specific assertions depending on your controller's reconciliation logic.
81+
// // Example: If you expect a certain status condition after reconciliation, verify it here.
82+
// })
83+
// })
84+
// })

pkg/netbox/api/ip_address.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,11 @@ func (r *NetboxClient) DeleteIpAddress(ipAddressId int64) error {
104104
case *ipam.IpamIPAddressesDeleteDefault:
105105
if typedErr.IsCode(http.StatusNotFound) {
106106
return nil
107+
} else {
108+
return utils.NetboxError("Failed to delete ip address from Netbox", err)
107109
}
108110
default:
109-
return utils.NetboxError("Failed to delete IP Address from Netbox", err)
111+
return utils.NetboxError("Failed to delete ip address from Netbox", err)
110112
}
111113
}
112114
return nil

pkg/netbox/api/ip_address_claim.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,7 @@ func (r *NetboxClient) GetAvailableIpAddressByClaim(ipAddressClaim *models.IPAdd
8989
return nil, err
9090
}
9191

92-
var ipMask string
93-
if responseAvailableIPs.Payload[0].Family == int64(IPv4Family) {
94-
ipMask = ipMaskIPv4
95-
} else if responseAvailableIPs.Payload[0].Family == int64(IPv6Family) {
96-
ipMask = ipMaskIPv6
97-
} else {
98-
return nil, errors.New("available ip has unknown IP family")
99-
}
100-
101-
ipAddress, err := r.SetIpAddressMask(responseAvailableIPs.Payload[0].Address, ipMask)
92+
ipAddress, err := r.SetIpAddressMask(responseAvailableIPs.Payload[0].Address, responseAvailableIPs.Payload[0].Family)
10293
if err != nil {
10394
return nil, err
10495
}
@@ -120,11 +111,18 @@ func (r *NetboxClient) GetAvailableIpAddressesByParentPrefix(parentPrefixId int6
120111
return responseAvailableIPs, nil
121112
}
122113

123-
func (r *NetboxClient) SetIpAddressMask(ip string, ipMask string) (string, error) {
114+
func (r *NetboxClient) SetIpAddressMask(ip string, ipFamily int64) (string, error) {
124115
ipAddress, _, err := net.ParseCIDR(ip)
125116
if err != nil {
126117
return "", err
127118
}
128-
ipAddressWithNewMask := ipAddress.String() + ipMask
129-
return ipAddressWithNewMask, nil
119+
120+
switch ipFamily {
121+
case int64(IPv4Family):
122+
return ipAddress.String() + ipMaskIPv4, nil
123+
case int64(IPv6Family):
124+
return ipAddress.String() + ipMaskIPv6, nil
125+
default:
126+
return "", errors.New("unknown IP family")
127+
}
130128
}

pkg/netbox/api/ip_address_claim_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ func TestIPAddressClaim(t *testing.T) {
249249
})
250250

251251
// assert error
252-
AssertError(t, err, "available ip has unknown IP family")
252+
AssertError(t, err, "unknown IP family")
253253

254254
var expected *models.IPAddress
255255

pkg/netbox/api/ip_range.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,11 @@ func (r *NetboxClient) DeleteIpRange(ipRangeId int64) error {
106106
case *ipam.IpamIPRangesDeleteDefault:
107107
if typedErr.IsCode(http.StatusNotFound) {
108108
return nil
109+
} else {
110+
return utils.NetboxError("Failed to delete ip range from Netbox", err)
109111
}
110112
default:
111-
return utils.NetboxError("Failed to delete IP Range from Netbox", err)
113+
return utils.NetboxError("Failed to delete ip range from Netbox", err)
112114
}
113115
}
114116
return nil

0 commit comments

Comments
 (0)