Skip to content

Commit f22dc45

Browse files
authored
Fix mock client calls in unit tests (#761)
1 parent 719e58f commit f22dc45

8 files changed

+732
-213
lines changed

cloud/scope/cluster_test.go

Lines changed: 183 additions & 27 deletions
Large diffs are not rendered by default.

cloud/scope/machine_test.go

Lines changed: 55 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import (
3636
infrav1beta1 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta1"
3737
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/vpc/mock"
3838

39-
. "github.com/onsi/ginkgo"
4039
. "github.com/onsi/gomega"
4140
)
4241

@@ -115,9 +114,19 @@ func TestNewMachineScope(t *testing.T) {
115114
}
116115

117116
func TestCreateMachine(t *testing.T) {
118-
mockctrl := gomock.NewController(GinkgoT())
119-
mockvpc := mock.NewMockVpc(mockctrl)
120-
g := NewWithT(t)
117+
var (
118+
mockvpc *mock.MockVpc
119+
mockCtrl *gomock.Controller
120+
)
121+
122+
setup := func(t *testing.T) {
123+
t.Helper()
124+
mockCtrl = gomock.NewController(t)
125+
mockvpc = mock.NewMockVpc(mockCtrl)
126+
}
127+
teardown := func() {
128+
mockCtrl.Finish()
129+
}
121130

122131
vpcMachine := infrav1beta1.IBMVPCMachine{
123132
Spec: infrav1beta1.IBMVPCMachineSpec{
@@ -144,6 +153,9 @@ func TestCreateMachine(t *testing.T) {
144153
createInstanceOptions := &vpcv1.CreateInstanceOptions{}
145154

146155
t.Run("Should create Machine", func(t *testing.T) {
156+
g := NewWithT(t)
157+
setup(t)
158+
t.Cleanup(teardown)
147159
scope := setupMachineScope(clusterName, machineName, mockvpc)
148160
scope.IBMVPCMachine.Spec = vpcMachine.Spec
149161
instance := &vpcv1.Instance{
@@ -157,6 +169,9 @@ func TestCreateMachine(t *testing.T) {
157169
})
158170

159171
t.Run("Return exsisting Machine", func(t *testing.T) {
172+
g := NewWithT(t)
173+
setup(t)
174+
t.Cleanup(teardown)
160175
expectedOutput = &vpcv1.Instance{
161176
Name: core.StringPtr("foo-machine-1"),
162177
}
@@ -168,13 +183,19 @@ func TestCreateMachine(t *testing.T) {
168183
})
169184

170185
t.Run("Error when listing Instances", func(t *testing.T) {
186+
g := NewWithT(t)
187+
setup(t)
188+
t.Cleanup(teardown)
171189
scope := setupMachineScope(clusterName, machineName, mockvpc)
172190
mockvpc.EXPECT().ListInstances(gomock.AssignableToTypeOf(listInstancesOptions)).Return(instanceCollection, detailedResponse, errors.New("Error when listing instances"))
173191
_, err := scope.CreateMachine()
174192
g.Expect(err).To(Not(BeNil()))
175193
})
176194

177195
t.Run("Error when DataSecretName is nil", func(t *testing.T) {
196+
g := NewWithT(t)
197+
setup(t)
198+
t.Cleanup(teardown)
178199
scope := setupMachineScope(clusterName, machineName, mockvpc)
179200
scope.Machine.Spec.Bootstrap.DataSecretName = nil
180201
mockvpc.EXPECT().ListInstances(gomock.AssignableToTypeOf(listInstancesOptions)).Return(instanceCollection, detailedResponse, nil)
@@ -183,6 +204,9 @@ func TestCreateMachine(t *testing.T) {
183204
})
184205

185206
t.Run("failed to retrieve bootstrap data secret for IBMVPCMachine", func(t *testing.T) {
207+
g := NewWithT(t)
208+
setup(t)
209+
t.Cleanup(teardown)
186210
scope := setupMachineScope(clusterName, machineName, mockvpc)
187211
scope.Machine.Spec.Bootstrap.DataSecretName = core.StringPtr("foo-secret-temp")
188212
mockvpc.EXPECT().ListInstances(gomock.AssignableToTypeOf(listInstancesOptions)).Return(instanceCollection, detailedResponse, nil)
@@ -191,6 +215,9 @@ func TestCreateMachine(t *testing.T) {
191215
})
192216

193217
t.Run("Failed to retrieve bootstrap data, secret value key is missing", func(t *testing.T) {
218+
g := NewWithT(t)
219+
setup(t)
220+
t.Cleanup(teardown)
194221
scope := setupMachineScope(clusterName, machineName, mockvpc)
195222
secret := &corev1.Secret{
196223
ObjectMeta: metav1.ObjectMeta{
@@ -210,6 +237,9 @@ func TestCreateMachine(t *testing.T) {
210237
})
211238

212239
t.Run("Failed to create instance", func(t *testing.T) {
240+
g := NewWithT(t)
241+
setup(t)
242+
t.Cleanup(teardown)
213243
scope := setupMachineScope(clusterName, machineName, mockvpc)
214244
mockvpc.EXPECT().ListInstances(gomock.AssignableToTypeOf(listInstancesOptions)).Return(instanceCollection, detailedResponse, nil)
215245
mockvpc.EXPECT().CreateInstance(gomock.AssignableToTypeOf(createInstanceOptions)).Return(nil, detailedResponse, errors.New("Failed when creating instance"))
@@ -220,22 +250,39 @@ func TestCreateMachine(t *testing.T) {
220250
}
221251

222252
func TestDeleteMachine(t *testing.T) {
223-
mockctrl := gomock.NewController(GinkgoT())
224-
mockvpc := mock.NewMockVpc(mockctrl)
225-
g := NewWithT(t)
253+
var (
254+
mockvpc *mock.MockVpc
255+
mockCtrl *gomock.Controller
256+
)
257+
258+
setup := func(t *testing.T) {
259+
t.Helper()
260+
mockCtrl = gomock.NewController(t)
261+
mockvpc = mock.NewMockVpc(mockCtrl)
262+
}
263+
teardown := func() {
264+
mockCtrl.Finish()
265+
}
226266

227267
t.Run("Delete Machine", func(t *testing.T) {
228-
scope := setupMachineScope(clusterName, machineName, mockvpc)
229268
deleteInstanceOptions := &vpcv1.DeleteInstanceOptions{}
230269
detailedResponse := &core.DetailedResponse{}
231270

232271
t.Run("Should delete Machine", func(t *testing.T) {
272+
g := NewWithT(t)
273+
setup(t)
274+
t.Cleanup(teardown)
275+
scope := setupMachineScope(clusterName, machineName, mockvpc)
233276
mockvpc.EXPECT().DeleteInstance(gomock.AssignableToTypeOf(deleteInstanceOptions)).Return(detailedResponse, nil)
234277
err := scope.DeleteMachine()
235278
g.Expect(err).To(BeNil())
236279
})
237280

238281
t.Run("Error when deleting Machine", func(t *testing.T) {
282+
g := NewWithT(t)
283+
setup(t)
284+
t.Cleanup(teardown)
285+
scope := setupMachineScope(clusterName, machineName, mockvpc)
239286
mockvpc.EXPECT().DeleteInstance(gomock.AssignableToTypeOf(deleteInstanceOptions)).Return(detailedResponse, errors.New("Failed instance deletion"))
240287
err := scope.DeleteMachine()
241288
g.Expect(err).To(Not(BeNil()))

cloud/scope/powervs_image_test.go

Lines changed: 74 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import (
3333
infrav1beta1 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta1"
3434
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/powervs/mock"
3535

36-
. "github.com/onsi/ginkgo"
3736
. "github.com/onsi/gomega"
3837
)
3938

@@ -105,9 +104,19 @@ func TestNewPowerVSImageScope(t *testing.T) {
105104
}
106105

107106
func TestCreateImageCOSBucket(t *testing.T) {
108-
mockctrl := gomock.NewController(GinkgoT())
109-
mockpowervs := mock.NewMockPowerVS(mockctrl)
110-
g := NewWithT(t)
107+
var (
108+
mockpowervs *mock.MockPowerVS
109+
mockCtrl *gomock.Controller
110+
)
111+
112+
setup := func(t *testing.T) {
113+
t.Helper()
114+
mockCtrl = gomock.NewController(t)
115+
mockpowervs = mock.NewMockPowerVS(mockCtrl)
116+
}
117+
teardown := func() {
118+
mockCtrl.Finish()
119+
}
111120

112121
t.Run("Create Import Job", func(t *testing.T) {
113122
images := &models.Images{
@@ -129,6 +138,9 @@ func TestCreateImageCOSBucket(t *testing.T) {
129138
}
130139

131140
t.Run("Should create image import job", func(t *testing.T) {
141+
g := NewWithT(t)
142+
setup(t)
143+
t.Cleanup(teardown)
132144
scope := setupPowerVSImageScope(pvsImage, mockpowervs)
133145
mockpowervs.EXPECT().GetAllImage().Return(images, nil)
134146
mockpowervs.EXPECT().GetCosImages(gomock.AssignableToTypeOf(serviceInstanceID)).Return(job, nil)
@@ -139,6 +151,9 @@ func TestCreateImageCOSBucket(t *testing.T) {
139151
})
140152

141153
t.Run("Return exsisting Image", func(t *testing.T) {
154+
g := NewWithT(t)
155+
setup(t)
156+
t.Cleanup(teardown)
142157
imageReference := &models.ImageReference{
143158
Name: core.StringPtr("foo-image-1"),
144159
}
@@ -150,13 +165,19 @@ func TestCreateImageCOSBucket(t *testing.T) {
150165
})
151166

152167
t.Run("Error while listing images", func(t *testing.T) {
168+
g := NewWithT(t)
169+
setup(t)
170+
t.Cleanup(teardown)
153171
scope := setupPowerVSImageScope(pvsImage, mockpowervs)
154172
mockpowervs.EXPECT().GetAllImage().Return(images, errors.New("Failed to list images"))
155173
_, _, err := scope.CreateImageCOSBucket()
156174
g.Expect(err).To(Not(BeNil()))
157175
})
158176

159177
t.Run("Previous import job in-progress", func(t *testing.T) {
178+
g := NewWithT(t)
179+
setup(t)
180+
t.Cleanup(teardown)
160181
job := &models.Job{
161182
Status: &models.Status{
162183
State: core.StringPtr("in-progress"),
@@ -170,6 +191,9 @@ func TestCreateImageCOSBucket(t *testing.T) {
170191
})
171192

172193
t.Run("Error while creating import job", func(t *testing.T) {
194+
g := NewWithT(t)
195+
setup(t)
196+
t.Cleanup(teardown)
173197
scope := setupPowerVSImageScope(pvsImage, mockpowervs)
174198
mockpowervs.EXPECT().GetAllImage().Return(images, nil)
175199
mockpowervs.EXPECT().GetCosImages(gomock.AssignableToTypeOf(serviceInstanceID)).Return(job, nil)
@@ -181,22 +205,39 @@ func TestCreateImageCOSBucket(t *testing.T) {
181205
}
182206

183207
func TestDeleteImage(t *testing.T) {
184-
mockctrl := gomock.NewController(GinkgoT())
185-
mockpowervs := mock.NewMockPowerVS(mockctrl)
186-
g := NewWithT(t)
208+
var (
209+
mockpowervs *mock.MockPowerVS
210+
mockCtrl *gomock.Controller
211+
)
212+
213+
setup := func(t *testing.T) {
214+
t.Helper()
215+
mockCtrl = gomock.NewController(t)
216+
mockpowervs = mock.NewMockPowerVS(mockCtrl)
217+
}
218+
teardown := func() {
219+
mockCtrl.Finish()
220+
}
187221

188222
t.Run("Delete Image", func(t *testing.T) {
189-
scope := setupPowerVSImageScope(pvsImage, mockpowervs)
190-
scope.IBMPowerVSImage.Status.ImageID = pvsImage + "-id"
191223
var id string
192-
193224
t.Run("Should delete image", func(t *testing.T) {
225+
g := NewWithT(t)
226+
setup(t)
227+
t.Cleanup(teardown)
228+
scope := setupPowerVSImageScope(pvsImage, mockpowervs)
229+
scope.IBMPowerVSImage.Status.ImageID = pvsImage + "-id"
194230
mockpowervs.EXPECT().DeleteImage(gomock.AssignableToTypeOf(id)).Return(nil)
195231
err := scope.DeleteImage()
196232
g.Expect(err).To(BeNil())
197233
})
198234

199235
t.Run("Error while deleting image", func(t *testing.T) {
236+
g := NewWithT(t)
237+
setup(t)
238+
t.Cleanup(teardown)
239+
scope := setupPowerVSImageScope(pvsImage, mockpowervs)
240+
scope.IBMPowerVSImage.Status.ImageID = pvsImage + "-id"
200241
mockpowervs.EXPECT().DeleteImage(gomock.AssignableToTypeOf(id)).Return(errors.New("Failed to delete image"))
201242
err := scope.DeleteImage()
202243
g.Expect(err).To(Not(BeNil()))
@@ -205,22 +246,39 @@ func TestDeleteImage(t *testing.T) {
205246
}
206247

207248
func TestDeleteImportJob(t *testing.T) {
208-
mockctrl := gomock.NewController(GinkgoT())
209-
mockpowervs := mock.NewMockPowerVS(mockctrl)
210-
g := NewWithT(t)
249+
var (
250+
mockpowervs *mock.MockPowerVS
251+
mockCtrl *gomock.Controller
252+
)
253+
254+
setup := func(t *testing.T) {
255+
t.Helper()
256+
mockCtrl = gomock.NewController(t)
257+
mockpowervs = mock.NewMockPowerVS(mockCtrl)
258+
}
259+
teardown := func() {
260+
mockCtrl.Finish()
261+
}
211262

212263
t.Run("Delete Import Job", func(t *testing.T) {
213-
scope := setupPowerVSImageScope(pvsImage, mockpowervs)
214-
scope.IBMPowerVSImage.Status.JobID = "foo-job-id"
215264
var id string
216-
217265
t.Run("Should delete image import job", func(t *testing.T) {
266+
g := NewWithT(t)
267+
setup(t)
268+
t.Cleanup(teardown)
269+
scope := setupPowerVSImageScope(pvsImage, mockpowervs)
270+
scope.IBMPowerVSImage.Status.JobID = "foo-job-id"
218271
mockpowervs.EXPECT().DeleteJob(gomock.AssignableToTypeOf(id)).Return(nil)
219272
err := scope.DeleteImportJob()
220273
g.Expect(err).To(BeNil())
221274
})
222275

223276
t.Run("Error while deleting image import job", func(t *testing.T) {
277+
g := NewWithT(t)
278+
setup(t)
279+
t.Cleanup(teardown)
280+
scope := setupPowerVSImageScope(pvsImage, mockpowervs)
281+
scope.IBMPowerVSImage.Status.JobID = "foo-job-id"
224282
mockpowervs.EXPECT().DeleteJob(gomock.AssignableToTypeOf(id)).Return(errors.New("Failed to delete image import job"))
225283
err := scope.DeleteImportJob()
226284
g.Expect(err).To(Not(BeNil()))

0 commit comments

Comments
 (0)