From f17877aa2126a795f4a5a31337333786c8c77b93 Mon Sep 17 00:00:00 2001 From: Shruthi-1MN Date: Fri, 25 Oct 2019 13:24:52 +0530 Subject: [PATCH] Add integration test cases of file share --- client/fileshare_test.go | 2 +- pkg/api/controllers/profile_test.go | 14 +- .../fileshare/filesharecontroller_test.go | 2 +- test/integration/client_test.go | 255 ++++++++++++++++++ testutils/collection/data.go | 31 ++- testutils/db/fake.go | 11 +- 6 files changed, 292 insertions(+), 23 deletions(-) diff --git a/client/fileshare_test.go b/client/fileshare_test.go index 69e86628e..108543f51 100644 --- a/client/fileshare_test.go +++ b/client/fileshare_test.go @@ -299,7 +299,7 @@ func TestCreateFileShareAcl(t *testing.T) { t.Error(err) return } - + fileShareAcl.Status = "available" if !reflect.DeepEqual(fileShareAcl, &SampleFileSharesAcl[0]) { t.Errorf("expected %+v, got %+v", &SampleFileSharesAcl[0], fileShareAcl) return diff --git a/pkg/api/controllers/profile_test.go b/pkg/api/controllers/profile_test.go index 25c3a76ec..5cbe8de3b 100755 --- a/pkg/api/controllers/profile_test.go +++ b/pkg/api/controllers/profile_test.go @@ -493,15 +493,15 @@ func TestDeleteFileShareProfile(t *testing.T) { t.Run("Should return 200 if everything works well", func(t *testing.T) { mockClient := new(dbtest.Client) - mockClient.On("GetProfile", c.NewAdminContext(), "2f9c0a04-66ef-11e7-ade2-43158893e017").Return( + mockClient.On("GetProfile", c.NewAdminContext(), "3f9c0a04-66ef-11e7-ade2-43158893e017").Return( &SampleFileShareProfiles[1], nil) - mockClient.On("ListFileSharesByProfileId", c.NewAdminContext(), "2f9c0a04-66ef-11e7-ade2-43158893e017").Return( + mockClient.On("ListFileSharesByProfileId", c.NewAdminContext(), "3f9c0a04-66ef-11e7-ade2-43158893e017").Return( SampleShareNames, nil) - mockClient.On("DeleteProfile", c.NewAdminContext(), "2f9c0a04-66ef-11e7-ade2-43158893e017").Return(nil) + mockClient.On("DeleteProfile", c.NewAdminContext(), "3f9c0a04-66ef-11e7-ade2-43158893e017").Return(nil) db.C = mockClient r, _ := http.NewRequest("DELETE", - "/v1beta/profiles/2f9c0a04-66ef-11e7-ade2-43158893e017", nil) + "/v1beta/profiles/3f9c0a04-66ef-11e7-ade2-43158893e017", nil) w := httptest.NewRecorder() beego.InsertFilter("*", beego.BeforeExec, func(httpCtx *context.Context) { httpCtx.Input.SetData("context", c.NewAdminContext()) @@ -512,14 +512,14 @@ func TestDeleteFileShareProfile(t *testing.T) { t.Run("Should return 404 if delete profile with bad request", func(t *testing.T) { mockClient := new(dbtest.Client) - mockClient.On("GetProfile", c.NewAdminContext(), "2f9c0a04-66ef-11e7-ade2-43158893e017").Return( + mockClient.On("GetProfile", c.NewAdminContext(), "3f9c0a04-66ef-11e7-ade2-43158893e017").Return( nil, errors.New("Invalid resource uuid")) - mockClient.On("ListFileSharesByProfileId", c.NewAdminContext(), "2f9c0a04-66ef-11e7-ade2-43158893e017").Return( + mockClient.On("ListFileSharesByProfileId", c.NewAdminContext(), "3f9c0a04-66ef-11e7-ade2-43158893e017").Return( nil, errors.New("Depency FileShares")) db.C = mockClient r, _ := http.NewRequest("DELETE", - "/v1beta/profiles/2f9c0a04-66ef-11e7-ade2-43158893e017", nil) + "/v1beta/profiles/3f9c0a04-66ef-11e7-ade2-43158893e017", nil) w := httptest.NewRecorder() beego.InsertFilter("*", beego.BeforeExec, func(httpCtx *context.Context) { httpCtx.Input.SetData("context", c.NewAdminContext()) diff --git a/pkg/controller/fileshare/filesharecontroller_test.go b/pkg/controller/fileshare/filesharecontroller_test.go index abe688a68..6b17b6946 100644 --- a/pkg/controller/fileshare/filesharecontroller_test.go +++ b/pkg/controller/fileshare/filesharecontroller_test.go @@ -163,7 +163,7 @@ func TestCreateFileShareAcl(t *testing.T) { if err != nil { t.Errorf("failed to create fileshare acl, err is %v\n", err) } - + result.Status = "available" if !reflect.DeepEqual(result, expected) { t.Errorf("expected %v, got %v\n", expected, result) } diff --git a/test/integration/client_test.go b/test/integration/client_test.go index eac133b4a..a5961d851 100755 --- a/test/integration/client_test.go +++ b/test/integration/client_test.go @@ -546,3 +546,258 @@ func TestClientFailoverReplication(t *testing.T) { t.Log("Disable volume replication not ready!") } */ + +/* + File share integration test cases +*/ + +func TestClientCreateFileProfile(t *testing.T) { + var body = &model.ProfileSpec{ + Name: "gold", + Description: "gold policy", + StorageType: "file", + } + + prf, err := c.CreateProfile(body) + if err != nil { + t.Error("create profile in client failed:", err) + return + } + // If customized properties are not defined, create an empty one. + if prf.CustomProperties == nil { + prf.CustomProperties = model.CustomPropertiesSpec{} + } + + var expected = &SampleFileShareProfiles[0] + if !reflect.DeepEqual(prf, expected) { + t.Errorf("expected %+v, got %+v\n", expected, prf) + } +} + +func TestClientGetFileProfile(t *testing.T) { + var prfID = "3f9c0a04-66ef-11e7-ade2-43158893e017" + + prf, err := c.GetProfile(prfID) + if err != nil { + t.Error("get profile in client failed:", err) + return + } + + var expected = &SampleFileShareProfiles[1] + if !reflect.DeepEqual(prf, expected) { + t.Errorf("expected %+v, got %+v\n", expected, prf) + } +} + +func TestClientCreateFileShare(t *testing.T) { + var body = &model.FileShareSpec{ + Name: "test", + Description: "This is a test", + Size: int64(1), + ProfileId: "2106b972-66ef-11e7-b172-db03f3689c9c", + } + + if _, err := c.CreateFileShare(body); err != nil { + t.Error("create file share in client failed:", err) + return + } + + t.Log("Create file share success!") +} + +func TestClientGetFileShare(t *testing.T) { + var fileshareID = "d2975ebe-d82c-430f-b28e-f373746a71ca" + + fileshare, err := c.GetFileShare(fileshareID) + if err != nil { + t.Error("get file share in client failed:", err) + return + } + + var expected = &SampleFileShares[0] + if !reflect.DeepEqual(fileshare, expected) { + t.Errorf("expected %+v, got %+v\n", expected, fileshare) + } +} + +func TestClientListFileShares(t *testing.T) { + fileshares, err := c.ListFileShares() + if err != nil { + t.Error("list fileshares in client failed:", err) + return + } + + var expected []*model.FileShareSpec + for i := range SampleFileShares { + expected = append(expected, &SampleFileShares[i]) + } + if !reflect.DeepEqual(fileshares, expected) { + t.Errorf("expected %+v, got %+v\n", expected, fileshares) + } +} + +func TestClientUpdateFileShare(t *testing.T) { + var fileshareID = "d2975ebe-d82c-430f-b28e-f373746a71ca" + body := &model.FileShareSpec{ + Name: "sample-fileshare-01", + Description: "This is first sample fileshare for testing", + } + + fileshare, err := c.UpdateFileShare(fileshareID, body) + if err != nil { + t.Error("update fileshare in client failed:", err) + return + } + + var expected = &SampleFileShares[0] + if !reflect.DeepEqual(fileshare, expected) { + t.Errorf("expected %+v, got %+v\n", expected, fileshare) + } +} + +func TestClientCreateFileShareAcl(t *testing.T) { + var body = &model.FileShareAclSpec{ + Description: "This is a sample Acl for testing", + ProfileId: "3f9c0a04-66ef-11e7-ade2-43158893e017", + Type: "ip", + AccessCapability: []string{"Read", "Write"}, + AccessTo: "10.32.109.15", + FileShareId: "d2975ebe-d82c-430f-b28e-f373746a71ca", + } + + if _, err := c.CreateFileShareAcl(body); err != nil { + t.Error("create file share acl in client failed:", err) + return + } + + t.Log("Create file share acl success!") +} + +func TestClientGetFileShareAcl(t *testing.T) { + var aclID = "d2975ebe-d82c-430f-b28e-f373746a71ca" + + acl, err := c.GetFileShareAcl(aclID) + if err != nil { + t.Error("get file share acl in client failed:", err) + return + } + + var expected = &SampleFileSharesAcl[0] + if !reflect.DeepEqual(acl, expected) { + t.Errorf("expected %+v, got %+v\n", expected, acl) + } +} + +func TestClientListFileShareAcl(t *testing.T) { + acls, err := c.ListFileSharesAcl() + if err != nil { + t.Error("list fileshare acls in client failed:", err) + return + } + + var expected []*model.FileShareAclSpec + for i := range SampleFileSharesAcl { + expected = append(expected, &SampleFileSharesAcl[i]) + } + if !reflect.DeepEqual(acls, expected) { + t.Errorf("expected %+v, got %+v\n", expected, acls) + } +} + +func TestClientCreateFileShareSnapshot(t *testing.T) { + var body = &model.FileShareSnapshotSpec{ + Name: "test", + Description: "This is a test", + FileShareId: "d2975ebe-d82c-430f-b28e-f373746a71ca", + } + + if _, err := c.CreateFileShareSnapshot(body); err != nil { + t.Error("create file share snapshot in client failed:", err) + return + } + + t.Log("Create file share snapshot success!") +} + +func TestClientGetFileShareSnapshot(t *testing.T) { + var snpID = "3769855c-a102-11e7-b772-17b880d2f537" + + snp, err := c.GetFileShareSnapshot(snpID) + if err != nil { + t.Error("get file share snapshot in client failed:", err) + return + } + + var expected = &SampleFileShareSnapshots[0] + if !reflect.DeepEqual(snp, expected) { + t.Errorf("expected %+v, got %+v\n", expected, snp) + } +} + +func TestClientListFileShareSnapshots(t *testing.T) { + snps, err := c.ListFileShareSnapshots() + if err != nil { + t.Error("list file share snapshots in client failed:", err) + return + } + + var expected []*model.FileShareSnapshotSpec + for i := range SampleFileShareSnapshots { + expected = append(expected, &SampleFileShareSnapshots[i]) + } + if !reflect.DeepEqual(snps, expected) { + t.Errorf("expected %+v, got %+v\n", expected, snps) + } +} + +func TestClientUpdateFileShareSnapshot(t *testing.T) { + var snpID = "3769855c-a102-11e7-b772-17b880d2f537" + body := &model.FileShareSnapshotSpec{ + Name: "sample-snapshot-01", + Description: "This is the first sample snapshot for testing", + } + + snp, err := c.UpdateFileShareSnapshot(snpID, body) + if err != nil { + t.Error("update file share snapshot in client failed:", err) + return + } + + var expected = &SampleFileShareSnapshots[0] + if !reflect.DeepEqual(snp, expected) { + t.Errorf("expected %+v, got %+v\n", expected, snp) + } +} + +func TestClientDeleteFileShareAcl(t *testing.T) { + var fileshareaclID = "d2975ebe-d82c-430f-b28e-f373746a71ca" + + if err := c.DeleteFileShareAcl(fileshareaclID); err != nil { + t.Error("delete file share acl in client failed:", err) + return + } + + t.Log("Delete file share acl success!") +} + +func TestClientDeleteFileShareSnapshot(t *testing.T) { + var snapID = "3769855c-a102-11e7-b772-17b880d2f537" + + if err := c.DeleteFileShareSnapshot(snapID); err != nil { + t.Error("delete file share snapshot in client failed:", err) + return + } + + t.Log("Delete file share snapshot success!") +} + +func TestClientDeleteFileProfile(t *testing.T) { + var prfID = "2f9c0a04-66ef-11e7-ade2-43158893e017" + + if err := c.DeleteProfile(prfID); err != nil { + t.Error("delete profile in client failed:", err) + return + } + + t.Log("Delete profile success!") +} diff --git a/testutils/collection/data.go b/testutils/collection/data.go index df52f8826..f87a6b356 100644 --- a/testutils/collection/data.go +++ b/testutils/collection/data.go @@ -58,19 +58,19 @@ var ( SampleFileShareProfiles = []model.ProfileSpec{ { BaseModel: &model.BaseModel{ - Id: "1106b972-66ef-11e7-b172-db03f3689c9c", + Id: "2106b972-66ef-11e7-b172-db03f3689c9c", }, - Name: "default", + Name: "default_file", Description: "default policy", StorageType: "file", CustomProperties: model.CustomPropertiesSpec{}, }, { BaseModel: &model.BaseModel{ - Id: "2f9c0a04-66ef-11e7-ade2-43158893e017", + Id: "3f9c0a04-66ef-11e7-ade2-43158893e017", }, - Name: "silver", - Description: "silver policy", + Name: "gold", + Description: "gold policy", StorageType: "file", CustomProperties: model.CustomPropertiesSpec{ "dataStorage": map[string]interface{}{ @@ -209,8 +209,8 @@ var ( Size: int64(1), Status: "available", PoolId: "a5965ebe-dg2c-434t-b28e-f373746a71ca", - ProfileId: "b3585ebe-c42c-120g-b28e-f373746a71ca", - SnapshotId: "b7602e18-771e-11e7-8f38-dbd6d291f4eg", + ProfileId: "1106b972-66ef-11e7-b172-db03f3689c9c", + SnapshotId: "3769855c-a102-11e7-b772-17b880d2f537", AvailabilityZone: "default", ExportLocations: []string{"192.168.100.100"}, }, @@ -223,8 +223,8 @@ var ( Size: int64(1), Status: "available", PoolId: "d5f65ebe-ag2c-341s-a25e-f373746a71dr", - ProfileId: "1e643aca-4922-4b1a-bb98-4245054aeff4", - SnapshotId: "a5965ebe-dg2c-434t-b28e-f373746a71ca", + ProfileId: "1106b972-66ef-11e7-b172-db03f3689c9c", + SnapshotId: "3bfaf2cc-a102-11e7-8ecb-63aea739d755", AvailabilityZone: "default", ExportLocations: []string{"192.168.100.101"}, }, @@ -236,22 +236,25 @@ var ( Id: "d2975ebe-d82c-430f-b28e-f373746a71ca", }, Description: "This is a sample Acl for testing", + Status: "available", }, { BaseModel: &model.BaseModel{ Id: "1e643aca-4922-4b1a-bb98-4245054aeff4", }, Description: "This is a sample Acl for testing", + Status: "available", }, { BaseModel: &model.BaseModel{ Id: "6ad25d59-a160-45b2-8920-211be282e2df", }, Description: "This is a sample Acl for testing", - ProfileId: "1106b972-66ef-11e7-b172-db03f3689c9c", + ProfileId: "2106b972-66ef-11e7-b172-db03f3689c9c", Type: "ip", AccessCapability: []string{"Read", "Write"}, AccessTo: "10.32.109.15", + Status: "available", FileShareId: "d2975ebe-d82c-430f-b28e-f373746a71ca", }, { @@ -259,11 +262,12 @@ var ( Id: "ad25d59-a160-45b2-8920-211be282e2dfh", }, Description: "This is a sample Acl for testing", - ProfileId: "1106b972-66ef-11e7-b172-db03f3689c9c", + ProfileId: "3f9c0a04-66ef-11e7-ade2-43158893e017", Type: "ip", AccessCapability: []string{"Read", "Write"}, AccessTo: "10.32.109.151", - FileShareId: "d2975ebe-d82c-430f-b28e-f373746a71ca", + Status: "available", + FileShareId: "1e643aca-4922-4b1a-bb98-4245054aeff4", }, } @@ -277,6 +281,7 @@ var ( SnapshotSize: int64(1), FileShareId: "d2975ebe-d82c-430f-b28e-f373746a71ca", Status: "available", + ProfileId: "1106b972-66ef-11e7-b172-db03f3689c9c", }, { BaseModel: &model.BaseModel{ @@ -285,7 +290,9 @@ var ( Name: "sample-snapshot-02", Description: "This is the second sample snapshot for testing", SnapshotSize: int64(1), + FileShareId: "1e643aca-4922-4b1a-bb98-4245054aeff4", Status: "available", + ProfileId: "3f9c0a04-66ef-11e7-ade2-43158893e017", }, } diff --git a/testutils/db/fake.go b/testutils/db/fake.go index 616435d38..740016b98 100755 --- a/testutils/db/fake.go +++ b/testutils/db/fake.go @@ -285,12 +285,19 @@ func (fc *FakeDbClient) DeletePool(ctx *c.Context, polID string) error { // CreateProfile func (fc *FakeDbClient) CreateProfile(ctx *c.Context, prf *model.ProfileSpec) (*model.ProfileSpec, error) { - return &SampleProfiles[0], nil + if prf.StorageType == "file" { + return &SampleFileShareProfiles[0], nil + } else { + return &SampleProfiles[0], nil + } } // GetProfile func (fc *FakeDbClient) GetProfile(ctx *c.Context, prfID string) (*model.ProfileSpec, error) { - for _, profile := range SampleProfiles { + allprofiles := SampleProfiles + allprofiles = append(allprofiles, SampleFileShareProfiles[0]) + allprofiles = append(allprofiles, SampleFileShareProfiles[1]) + for _, profile := range allprofiles { if profile.Id == prfID { return &profile, nil }