From 1507f51e02f2ae205397f4f651f19a66ba69db02 Mon Sep 17 00:00:00 2001 From: Jan Wozniak Date: Tue, 21 Mar 2023 17:43:17 +0100 Subject: [PATCH] test: copy volume from volume unit tests followup to #426 --- pkg/nfs/controllerserver_test.go | 81 ++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/pkg/nfs/controllerserver_test.go b/pkg/nfs/controllerserver_test.go index 69253979..fc336788 100644 --- a/pkg/nfs/controllerserver_test.go +++ b/pkg/nfs/controllerserver_test.go @@ -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) + } + }) + } +}