Skip to content

Commit 9d43fd6

Browse files
authored
Merge pull request kubernetes-sigs#1673 from Nordix/lentzi90/test-get-or-create
🌱 Add test for getOrCreate
2 parents 1aeacb7 + 3d75b7f commit 9d43fd6

File tree

1 file changed

+48
-1
lines changed

1 file changed

+48
-1
lines changed

controllers/suite_test.go

+48-1
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@ package controllers
1818

1919
import (
2020
"context"
21+
"errors"
2122
"path/filepath"
2223
"testing"
2324

25+
"github.com/go-logr/logr"
26+
"github.com/golang/mock/gomock"
2427
. "github.com/onsi/ginkgo/v2"
2528
. "github.com/onsi/gomega"
2629
corev1 "k8s.io/api/core/v1"
@@ -29,11 +32,14 @@ import (
2932
"k8s.io/apimachinery/pkg/types"
3033
"k8s.io/client-go/kubernetes/scheme"
3134
"k8s.io/client-go/rest"
35+
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
3236
"sigs.k8s.io/cluster-api/test/framework"
3337
"sigs.k8s.io/controller-runtime/pkg/client"
3438
"sigs.k8s.io/controller-runtime/pkg/envtest"
3539

3640
infrav1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7"
41+
"sigs.k8s.io/cluster-api-provider-openstack/pkg/cloud/services/compute"
42+
"sigs.k8s.io/cluster-api-provider-openstack/pkg/scope"
3743
"sigs.k8s.io/cluster-api-provider-openstack/test/helpers/external"
3844
)
3945

@@ -90,7 +96,7 @@ var _ = AfterSuite(func() {
9096
})
9197

9298
var _ = Describe("EnvTest sanity check", func() {
93-
ctx := context.TODO()
99+
ctx = context.TODO()
94100
It("should be able to create a namespace", func() {
95101
testNamespace := "capo-test"
96102
namespacedName := types.NamespacedName{
@@ -117,3 +123,44 @@ var _ = Describe("EnvTest sanity check", func() {
117123
// will actually stay in "Terminating" state and never be completely gone.
118124
})
119125
})
126+
127+
var _ = Describe("When calling getOrCreate", func() {
128+
var (
129+
logger logr.Logger
130+
reconsiler OpenStackMachineReconciler
131+
mockCtrl *gomock.Controller
132+
mockScopeFactory *scope.MockScopeFactory
133+
computeService *compute.Service
134+
err error
135+
)
136+
137+
BeforeEach(func() {
138+
ctx = context.Background()
139+
logger = logr.Discard()
140+
reconsiler = OpenStackMachineReconciler{}
141+
mockCtrl = gomock.NewController(GinkgoT())
142+
mockScopeFactory = scope.NewMockScopeFactory(mockCtrl, "1234", logger)
143+
computeService, err = compute.NewService(mockScopeFactory)
144+
Expect(err).NotTo(HaveOccurred())
145+
})
146+
147+
It("should return an error if unable to get instance", func() {
148+
cluster := &clusterv1.Cluster{}
149+
openStackCluster := &infrav1.OpenStackCluster{}
150+
machine := &clusterv1.Machine{}
151+
openStackMachine := &infrav1.OpenStackMachine{}
152+
153+
mockScopeFactory.ComputeClient.EXPECT().ListServers(gomock.Any()).Return(nil, errors.New("Test error when listing servers"))
154+
instanceStatus, err := reconsiler.getOrCreate(logger, cluster, openStackCluster, machine, openStackMachine, computeService, "")
155+
Expect(err).To(HaveOccurred())
156+
Expect(instanceStatus).To(BeNil())
157+
conditions := openStackMachine.GetConditions()
158+
Expect(len(conditions) > 0).To(BeTrue())
159+
for i := range conditions {
160+
if conditions[i].Type == infrav1.InstanceReadyCondition {
161+
Expect(conditions[i].Reason).To(Equal(infrav1.OpenStackErrorReason))
162+
break
163+
}
164+
}
165+
})
166+
})

0 commit comments

Comments
 (0)