test: copy volume from volume unit tests

followup to #426
This commit is contained in:
Jan Wozniak 2023-03-21 17:43:17 +01:00
parent 2999e7e3fb
commit 1507f51e02
No known key found for this signature in database
GPG Key ID: 962A0F0B52A6DC7F

View File

@ -620,3 +620,84 @@ func TestNewNFSVolume(t *testing.T) {
}
}
}
func TestCopyVolume(t *testing.T) {
cases := []struct {
desc string
req *csi.CreateVolumeRequest
dstVol *nfsVolume
expectErr bool
}{
{
desc: "copy volume from valid volume",
req: &csi.CreateVolumeRequest{
Name: "snapshot-name",
VolumeContentSource: &csi.VolumeContentSource{
Type: &csi.VolumeContentSource_Volume{
Volume: &csi.VolumeContentSource_VolumeSource{
VolumeId: "nfs-server.default.svc.cluster.local#share#subdir#src-pv-name",
},
},
},
},
dstVol: &nfsVolume{
id: "nfs-server.default.svc.cluster.local#share#subdir#dst-pv-name",
server: "//nfs-server.default.svc.cluster.local",
baseDir: "share",
subDir: "subdir",
uuid: "dst-pv-name",
},
},
{
desc: "copy volume missing source id",
req: &csi.CreateVolumeRequest{
Name: "snapshot-name",
VolumeContentSource: &csi.VolumeContentSource{
Type: &csi.VolumeContentSource_Volume{
Volume: &csi.VolumeContentSource_VolumeSource{
VolumeId: "nfs-server.default.svc.cluster.local#share#subdir#src-pv-name",
},
},
},
},
dstVol: &nfsVolume{
server: "//nfs-server.default.svc.cluster.local",
baseDir: "share",
subDir: "subdir",
uuid: "dst-pv-name",
},
expectErr: true,
},
{
desc: "copy volume missing dst",
req: &csi.CreateVolumeRequest{
Name: "snapshot-name",
VolumeContentSource: &csi.VolumeContentSource{
Type: &csi.VolumeContentSource_Volume{
Volume: &csi.VolumeContentSource_VolumeSource{},
},
},
},
dstVol: &nfsVolume{
id: "nfs-server.default.svc.cluster.local#share#subdir#dst-pv-name",
server: "//nfs-server.default.svc.cluster.local",
baseDir: "share",
subDir: "subdir",
uuid: "dst-pv-name",
},
expectErr: true,
},
}
if err := os.MkdirAll("/tmp/src-pv-name/subdir", 0777); err != nil {
t.Fatalf("Unexpected error when creating srcVolume: %v", err)
}
for _, test := range cases {
t.Run(test.desc, func(t *testing.T) {
cs := initTestController(t)
err := cs.copyVolume(context.TODO(), test.req, test.dstVol)
if (err == nil) == test.expectErr {
t.Errorf(`[test: %s] Error expectation mismatch, expected error: "%v", received: %q`, test.desc, test.expectErr, err)
}
})
}
}