Skip to content

Commit a958584

Browse files
authored
Add unit tests for Powervs image handling (#582)
1 parent 8401518 commit a958584

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

cloud/scope/powervs_test.go

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,35 @@ func pstring(name string) *string {
122122
return pointer.String(name)
123123
}
124124

125+
func newPowervsImage(imageName string) *infrav1.IBMPowerVSImage {
126+
return &infrav1.IBMPowerVSImage{
127+
ObjectMeta: metav1.ObjectMeta{
128+
Name: imageName,
129+
Namespace: "default",
130+
},
131+
Spec: infrav1.IBMPowerVSImageSpec{
132+
ClusterName: "test-cluster",
133+
ServiceInstanceID: "test-service-ID",
134+
Object: pstring("sample-image.ova.gz"),
135+
Bucket: pstring("sample-bucket"),
136+
Region: pstring("us-south"),
137+
},
138+
}
139+
}
140+
141+
func setupPowerVSImageScope(imageName string) (*PowerVSImageScope, error) {
142+
powervsImage := newPowervsImage(imageName)
143+
initObjects := []client.Object{powervsImage}
144+
145+
client := fake.NewClientBuilder().WithScheme(scheme.Scheme).WithObjects(initObjects...).Build()
146+
return &PowerVSImageScope{
147+
client: client,
148+
Logger: klogr.New(),
149+
IBMPowerVSClient: mockpowervs,
150+
IBMPowerVSImage: powervsImage,
151+
}, nil
152+
}
153+
125154
func setupPowerVSMachineScope(clusterName string, machineName string, imageID *string, networkID *string, isID bool) (*PowerVSMachineScope, error) {
126155
cluster := newCluster(clusterName)
127156
machine := newMachine(clusterName, machineName)
@@ -325,4 +354,71 @@ var _ = Describe("PowerVS machine and image creation", func() {
325354
Expect(err).NotTo(HaveOccurred())
326355
})
327356
})
357+
358+
Context("Create or Delete IBMPowerVSImage", func() {
359+
It("should not error and create an image import job", func() {
360+
scope, err := setupPowerVSImageScope("sample-image")
361+
Expect(err).NotTo(HaveOccurred())
362+
spec := scope.IBMPowerVSImage.Spec
363+
364+
images := &models.Images{}
365+
body := &models.CreateCosImageImportJob{
366+
ImageName: &scope.IBMPowerVSImage.ObjectMeta.Name,
367+
BucketName: spec.Bucket,
368+
BucketAccess: pstring("public"),
369+
Region: spec.Region,
370+
ImageFilename: spec.Object,
371+
}
372+
373+
mockpowervs.EXPECT().GetAllImage().Return(images, nil)
374+
mockpowervs.EXPECT().GetCosImages(scope.IBMPowerVSImage.Spec.ServiceInstanceID).Return(nil, nil)
375+
mockpowervs.EXPECT().CreateCosImage(body).Return(&models.JobReference{ID: pstring("test-job-ID")}, nil)
376+
377+
_, jobRef, err := scope.CreateImageCOSBucket()
378+
Expect(err).NotTo(HaveOccurred())
379+
Expect(jobRef).ToNot(BeNil())
380+
})
381+
382+
It("should not error and use the existing image", func() {
383+
scope, err := setupPowerVSImageScope("sample-image")
384+
Expect(err).NotTo(HaveOccurred())
385+
386+
images := &models.Images{
387+
Images: []*models.ImageReference{
388+
{
389+
ImageID: pstring("sample-image-ID"),
390+
Name: pstring("sample-image"),
391+
},
392+
},
393+
}
394+
mockpowervs.EXPECT().GetAllImage().Return(images, nil)
395+
396+
imageRef, _, err := scope.CreateImageCOSBucket()
397+
Expect(err).NotTo(HaveOccurred())
398+
Expect(imageRef).ToNot(BeNil())
399+
})
400+
401+
It("should return as the previous job is not finished", func() {
402+
scope, err := setupPowerVSImageScope("sample-image")
403+
Expect(err).NotTo(HaveOccurred())
404+
405+
images := &models.Images{}
406+
job := &models.Job{ID: pstring("test-job-ID"), Status: &models.Status{State: pstring("pending")}}
407+
mockpowervs.EXPECT().GetAllImage().Return(images, nil)
408+
mockpowervs.EXPECT().GetCosImages(scope.IBMPowerVSImage.Spec.ServiceInstanceID).Return(job, nil)
409+
410+
_, _, err = scope.CreateImageCOSBucket()
411+
Expect(err).NotTo(HaveOccurred())
412+
})
413+
414+
It("should not error and delete the image", func() {
415+
scope, err := setupPowerVSImageScope("sample-image")
416+
Expect(err).NotTo(HaveOccurred())
417+
418+
mockpowervs.EXPECT().DeleteImage(gomock.AssignableToTypeOf("sample-image-ID")).Return(nil)
419+
420+
err = scope.DeleteImage()
421+
Expect(err).NotTo(HaveOccurred())
422+
})
423+
})
328424
})

0 commit comments

Comments
 (0)