Skip to content

Commit

Permalink
fileshare controller ut (#982)
Browse files Browse the repository at this point in the history
  • Loading branch information
Shruthi-1MN authored and wisererik committed Sep 4, 2019
1 parent 17c4784 commit 3e1de43
Show file tree
Hide file tree
Showing 2 changed files with 293 additions and 18 deletions.
288 changes: 270 additions & 18 deletions pkg/controller/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ package controller

import (
"context"
"errors"
"fmt"
"testing"

c "github.com/opensds/opensds/pkg/context"
Expand Down Expand Up @@ -658,7 +660,7 @@ func (fakeFileShareController) CreateFileShare(opt *pb.CreateFileShareOpts) (*mo
}

func (fakeFileShareController) CreateFileShareAcl(opt *pb.CreateFileShareAclOpts) (*model.FileShareAclSpec, error) {
return &SampleFileSharesAcl[0], nil
return &SampleFileSharesAcl[2], nil
}

func (fakeFileShareController) DeleteFileShareAcl(opt *pb.DeleteFileShareAclOpts) error {return nil}
Expand Down Expand Up @@ -705,13 +707,89 @@ func TestCreateFileShare(t *testing.T) {
if _, err := ctrl.CreateFileShare(context.Background(), req); err != nil {
t.Errorf("failed to create fileshare, err is %v\n", err)
}
mockClient1 := new(dbtest.Client)
mockClient1.On("GetFileShare", c.NewAdminContext(), req.Id).Return(&SampleFileShares[0],fmt.Errorf("specified fileshare(%s) can't find", req.Id))
mockClient1.On("UpdateStatus", c.NewAdminContext(), fileshare, "error").Return(nil)
db.C = mockClient1

var ctrl1 = &Controller{
selector: &fakeSelector{
res: &model.StoragePoolSpec{
BaseModel: &model.BaseModel{
Id: "bdd44c8e-b8a9-488a-89c0-d1e5beb902dg",
},
DockId: "b7602e18-771e-11e7-8f38-dbd6d291f4e0",
},
err: nil,
},
fileshareController: NewFakeFileShareController(),
}

t1, _:= ctrl1.CreateFileShare(context.Background(), req)
err_desc := t1.GetError().Description
expectedError := fmt.Sprintf("specified fileshare(%s) can't find", fileshare.Id)
if err_desc != expectedError{
t.Errorf("specified fileshare(%s) can't find\n",fileshare.Id )
}

mockClient2 := new(dbtest.Client)
mockClient2.On("GetFileShare", c.NewAdminContext(), req.Id).Return(&SampleFileShares[0], nil)
mockClient2.On("UpdateStatus", c.NewAdminContext(), fileshare, "error").Return(nil)
db.C = mockClient2

var ctrl2 = &Controller{
selector: &fakeSelector{
res: &model.StoragePoolSpec{
BaseModel: &model.BaseModel{
Id: "bdd44c8e-b8a9-488a-89c0-d1e5beb902dg",
},
DockId: "b7602e18-771e-11e7-8f38-dbd6d291f4e0",
},
err: errors.New("filter supported pools failed: no available pool to meet user's requirement"),
},
fileshareController: NewFakeFileShareController(),
}

t2, _:= ctrl2.CreateFileShare(context.Background(), req)
err_desc2 := t2.GetError().Description
expectedError2 := fmt.Sprintf("filter supported pools failed: no available pool to meet user's requirement")
if err_desc2 != expectedError2{
t.Errorf("filter supported pools failed: no available pool to meet user's requirement\n" )
}

mockClientd := new(dbtest.Client)
mockClientd.On("GetFileShare", c.NewAdminContext(), req.Id).Return(&SampleFileShares[0], nil)
mockClientd.On("GetDock", c.NewAdminContext(), "b7602e18-771e-11e7-8f38-dbd6d291f4e0").Return(nil, fmt.Errorf("when search supported dock resource:when get dock in db:"))
mockClientd.On("GetFileShareDefaultProfile", c.NewAdminContext()).Return(&SampleFileShareProfiles[0], nil)
mockClientd.On("GetProfile", c.NewAdminContext(), "1106b972-66ef-11e7-b172-db03f3689c9c").Return(&SampleFileShareProfiles[0], nil)
mockClientd.On("UpdateStatus", c.NewAdminContext(), fileshare, "error").Return(nil)
db.C = mockClientd

var ctrld = &Controller{
selector: &fakeSelector{
res: &model.StoragePoolSpec{
BaseModel: &model.BaseModel{
Id: "bdd44c8e-b8a9-488a-89c0-d1e5beb902dg",
},
DockId: "b7602e18-771e-11e7-8f38-dbd6d291f4e0",
},
err: nil,
},
fileshareController: NewFakeFileShareController(),
}
td, _:= ctrld.CreateFileShare(context.Background(), req)
err_descd := td.GetError().Description
expectedErrord := fmt.Sprintf("when search supported dock resource:when get dock in db:")
if err_descd != expectedErrord{
t.Errorf("when search supported dock resource:when get dock in db\n" )
}

}

func TestDeleteFileShare(t *testing.T) {
prf := &SampleFileShareProfiles[0]
var req = &pb.DeleteFileShareOpts{
Id: "bdd44c8e-b8a9-488a-89c0-d1e5beb902dg",
Id: "d2975ebe-d82c-430f-b28e-f373746a71ca",
Profile: prf.ToJson(),
PoolId: "084bf71e-a102-11e7-88a8-e31fe6d52248",
Context: c.NewAdminContext().ToJson(),
Expand All @@ -738,6 +816,33 @@ func TestDeleteFileShare(t *testing.T) {
if _, err := ctrl.DeleteFileShare(context.Background(), req); err != nil {
t.Errorf("failed to delete volume, err is %v\n", err)
}

mockClientd := new(dbtest.Client)
mockClientd.On("GetFileShare", c.NewAdminContext(), req.Id).Return(&SampleFileShares[0], nil)
mockClientd.On("GetDockByPoolId", c.NewAdminContext(), req.PoolId).Return(nil, fmt.Errorf("when search dock in db by pool id: Get dock failed by pool id:"))
mockClientd.On("GetFileShare", c.NewAdminContext(),req.Id).Return(&SampleFileShares[0],nil)
mockClientd.On("UpdateStatus", c.NewAdminContext(), &SampleFileShares[0], "errorDeleting").Return(nil)
db.C = mockClientd

var ctrld = &Controller{
selector: &fakeSelector{
res: &model.StoragePoolSpec{
BaseModel: &model.BaseModel{
Id: "bdd44c8e-b8a9-488a-89c0-d1e5beb902dg",
},
DockId: "b7602e18-771e-11e7-8f38-dbd6d291f4e0",
},
err: nil,
},
fileshareController: NewFakeFileShareController(),
}
td, _:= ctrld.DeleteFileShare(context.Background(), req)
err_descd := td.GetError().Description
expectedErrord := fmt.Sprintf("when search dock in db by pool id: Get dock failed by pool id:")
if err_descd != expectedErrord{
t.Errorf("when search supported dock dock in db by pool id: Get dock failed by pool id: failed\n" )
}

}

func TestCreateFileShareSnapshot(t *testing.T) {
Expand All @@ -761,9 +866,45 @@ func TestCreateFileShareSnapshot(t *testing.T) {
var ctrl = &Controller{
fileshareController: NewFakeFileShareController(),
}

if _, err := ctrl.CreateFileShareSnapshot(context.Background(), req); err != nil {
t.Errorf("failed to create file share snapshot: %v\n", err)
}

mockClient1 := new(dbtest.Client)
mockClient1.On("GetFileShare", c.NewAdminContext(), req.FileshareId).Return(nil, errors.New("get file share failed in create file share snapshot method:"))
mockClient1.On("UpdateFileShareSnapshotStatus", c.NewAdminContext(), req.Id, "error").Return(&SampleFileShareSnapshots[0], nil)
mockClient1.On("GetFileShareSnapshot", c.NewAdminContext(), req.Id).Return(&SampleFileShareSnapshots[0], nil)
mockClient1.On("UpdateStatus", c.NewAdminContext(), snp, "error").Return(nil)
db.C = mockClient1

var ctrl1 = &Controller{
fileshareController: NewFakeFileShareController(),
}
t1, _:= ctrl1.CreateFileShareSnapshot(context.Background(), req)
err_desc := t1.GetError().Description
expectedError := fmt.Sprintf("get file share failed in create file share snapshot method:")
if err_desc != expectedError{
t.Errorf("test of create file share snapshot failed, didn't get %v instead got %v\n", expectedError, err_desc)
}

mockClient2 := new(dbtest.Client)
mockClient2.On("GetFileShare", c.NewAdminContext(), req.FileshareId).Return(&SampleFileShares[0], nil)
mockClient2.On("GetDockByPoolId", c.NewAdminContext(), fileshare.PoolId).Return(nil, errors.New("when search supported dock resource: "))
mockClient2.On("UpdateFileShareSnapshotStatus", c.NewAdminContext(), req.Id, "error").Return(&SampleFileShareSnapshots[0], nil)
mockClient2.On("GetFileShareSnapshot", c.NewAdminContext(), req.Id).Return(&SampleFileShareSnapshots[0], nil)
mockClient2.On("UpdateStatus", c.NewAdminContext(), snp, "error").Return(nil)
db.C = mockClient2

var ctrl2 = &Controller{
fileshareController: NewFakeFileShareController(),
}
t2, _:= ctrl2.CreateFileShareSnapshot(context.Background(), req)
err_desc2 := t2.GetError().Description
expectedError2 := fmt.Sprintf("when search supported dock resource: ")
if err_desc2 != expectedError2{
t.Errorf("test of create file share snapshot failed, didn't get %v instead got %v\n", expectedError2, err_desc2)
}
}

func TestDeleteFileShareSnapshot(t *testing.T) {
Expand All @@ -785,45 +926,118 @@ func TestDeleteFileShareSnapshot(t *testing.T) {
if _, err := ctrl.DeleteFileShareSnapshot(context.Background(), req); err != nil {
t.Errorf("failed to delete file share snapshot: %v\n", err)
}

mockClient1 := new(dbtest.Client)
mockClient1.On("GetFileShare", c.NewAdminContext(), req.FileshareId).Return(nil, errors.New("get file share failed in delete file share snapshot method:"))
mockClient1.On("UpdateFileShareSnapshotStatus", c.NewAdminContext(), req.Id, "errorDeleting").Return(&SampleFileShareSnapshots[0], nil)
mockClient1.On("GetFileShareSnapshot", c.NewAdminContext(), req.Id).Return(&SampleFileShareSnapshots[0], nil)
mockClient1.On("UpdateStatus", c.NewAdminContext(), &SampleFileShareSnapshots[0], "errorDeleting").Return(nil)
db.C = mockClient1

var ctrl1 = &Controller{
fileshareController: NewFakeFileShareController(),
}
t1, _:= ctrl1.DeleteFileShareSnapshot(context.Background(), req)
err_desc := t1.GetError().Description
expectedError := fmt.Sprintf("get file share failed in delete file share snapshot method:")
if err_desc != expectedError{
t.Errorf("test of create file share snapshot failed, didn't get %v instead got %v\n", expectedError, err_desc)
}

mockClient2 := new(dbtest.Client)
mockClient2.On("GetFileShare", c.NewAdminContext(), req.FileshareId).Return(&SampleFileShares[0], nil)
mockClient2.On("GetDockByPoolId", c.NewAdminContext(), "bdd44c8e-b8a9-488a-89c0-d1e5beb902dg").Return(nil, errors.New("when search supported dock resource: "))
mockClient2.On("UpdateFileShareSnapshotStatus", c.NewAdminContext(), req.Id, "errorDeleting").Return(&SampleFileShareSnapshots[0], nil)
mockClient2.On("GetFileShareSnapshot", c.NewAdminContext(), req.Id).Return(&SampleFileShareSnapshots[0], nil)
mockClient2.On("UpdateStatus", c.NewAdminContext(), &SampleFileShareSnapshots[0], "errorDeleting").Return(nil)
db.C = mockClient2

var ctrl2 = &Controller{
fileshareController: NewFakeFileShareController(),
}
t2, _:= ctrl2.DeleteFileShareSnapshot(context.Background(), req)
err_desc2 := t2.GetError().Description
expectedError2 := fmt.Sprintf("when search supported dock resource: ")
if err_desc2 != expectedError2{
t.Errorf("test of create file share snapshot failed, didn't get %v instead got %v\n", expectedError2, err_desc2)
}
}

func TestCreateFileShareAcl(t *testing.T) {
var req = &pb.CreateFileShareAclOpts{
Id: "6ad25d59-a160-45b2-8920-211be282e2df",
Description: "This is a sample Acl for testing",
Type: "ip",
AccessCapability: []string{"Read", "Write"},
AccessTo: "10.32.109.15",
FileshareId: "d2975ebe-d82c-430f-b28e-f373746a71ca",
Id: "d2975ebe-d82c-430f-b28e-f373746a71ca",
Description: "This is a sample Acl for testing",
Context: c.NewAdminContext().ToJson(),
Type: "ip",
AccessTo: "10.21.23.10",
AccessCapability:[]string{"Read", "Write"},
}
var fileshare = &SampleFileShares[0]
var acl = &SampleFileSharesAcl[0]
var fileshare= &SampleFileShares[0]
mockClient := new(dbtest.Client)
mockClient.On("GetFileShare", c.NewAdminContext(), req.FileshareId).Return(fileshare, nil)
mockClient.On("GetFileShare", c.NewAdminContext(), "").Return(&SampleFileShares[0], nil)
mockClient.On("GetDockByPoolId", c.NewAdminContext(), fileshare.PoolId).Return(&SampleDocks[0], nil)
mockClient.On("UpdateStatus", c.NewAdminContext(), acl, "available").Return(nil)
mockClient.On("CreateFileShareAcl", c.NewAdminContext(), req).Return(&SampleFileSharesAcl[0], nil)
mockClient.On("UpdateStatus", c.NewAdminContext(), &SampleFileSharesAcl[2], "available").Return(nil)
db.C = mockClient

var ctrl = &Controller{
fileshareController: NewFakeFileShareController(),
}
if _, err := ctrl.CreateFileShareAcl(context.Background(), req); err != nil {
t.Errorf("failed to create file share snapshot: %v\n", err)
t.Errorf("failed to create file share acl: %v\n", err)
}

mockClient1 := new(dbtest.Client)
mockClient1.On("GetFileShare", c.NewAdminContext(), "").Return(nil,fmt.Errorf("specified fileshare(%s) can't find", req.Id))
mockClient1.On("GetFileShareAcl", c.NewAdminContext(), "d2975ebe-d82c-430f-b28e-f373746a71ca").Return(&SampleFileSharesAcl[2], nil)
mockClient1.On("UpdateFileShareAclStatus", c.NewAdminContext(), SampleFileSharesAcl[2].Id, "error").Return(nil)
mockClient1.On("UpdateStatus", c.NewAdminContext(), &SampleFileSharesAcl[2], "error").Return(nil)
db.C = mockClient1

var ctrl1 = &Controller{
fileshareController: NewFakeFileShareController(),
}

t1, _:= ctrl1.CreateFileShareAcl(context.Background(), req)
err_desc := t1.GetError().Description
expectedError := fmt.Sprintf("specified fileshare(%s) can't find", fileshare.Id)
if err_desc != expectedError{
t.Errorf("test of create file share acl failed, didn't get %v instead got %v\n", expectedError, err_desc)
}

mockClient2 := new(dbtest.Client)
mockClient2.On("GetFileShare", c.NewAdminContext(), "").Return(&SampleFileShares[0],nil)
mockClient2.On("GetDockByPoolId", c.NewAdminContext(), fileshare.PoolId).Return(nil, errors.New("when search supported dock resource:Get dock failed by pool id: "+fileshare.PoolId))
mockClient2.On("GetFileShareAcl", c.NewAdminContext(), "d2975ebe-d82c-430f-b28e-f373746a71ca").Return(&SampleFileSharesAcl[2], nil)
mockClient2.On("UpdateFileShareAclStatus", c.NewAdminContext(), SampleFileSharesAcl[2].Id, "error").Return(nil)
mockClient2.On("UpdateStatus", c.NewAdminContext(), &SampleFileSharesAcl[2], "error").Return(nil)
db.C = mockClient2

var ctrl2 = &Controller{
fileshareController: NewFakeFileShareController(),
}

t2, _:= ctrl2.CreateFileShareAcl(context.Background(), req)
err_desc2 := t2.GetError().Description
expectedError2 := fmt.Sprintf("when search supported dock resource:Get dock failed by pool id: %v",fileshare.PoolId)
if err_desc2 != expectedError2{
t.Errorf("test of create file share acl failed, didn't get %v instead got %v\n", expectedError2, err_desc2)
}

}

func TestDeleteFileShareAcl(t *testing.T) {
var req = &pb.DeleteFileShareAclOpts{
Id: "3769855c-a102-11e7-b772-17b880d2f537",
FileshareId: "bd5b12a8-a101-11e7-941e-d77981b584d8",
Id: "d2975ebe-d82c-430f-b28e-f373746a71ca",
Description: "This is a sample Acl for testing",
Context: c.NewAdminContext().ToJson(),
}
var fileshare = &SampleShares[0]
var fileshare = &SampleFileShares[0]
mockClient := new(dbtest.Client)
mockClient.On("GetFileShare", c.NewAdminContext(), req.FileshareId).Return(fileshare, nil)
mockClient.On("GetFileShare", c.NewAdminContext(), "").Return(&SampleFileShares[0], nil)
mockClient.On("GetDockByPoolId", c.NewAdminContext(), fileshare.PoolId).Return(&SampleDocks[0], nil)
mockClient.On("DeleteFileShareAcl", c.NewAdminContext(), req.Id).Return(nil)
mockClient.On("UpdateStatus", c.NewAdminContext(), &SampleFileSharesAcl[2], "available").Return(nil)
db.C = mockClient

var ctrl = &Controller{
Expand All @@ -832,4 +1046,42 @@ func TestDeleteFileShareAcl(t *testing.T) {
if _, err := ctrl.DeleteFileShareAcl(context.Background(), req); err != nil {
t.Errorf("failed to delete file share snapshot: %v\n", err)
}
}

mockClient1 := new(dbtest.Client)
mockClient1.On("GetFileShare", c.NewAdminContext(), "").Return(nil, fmt.Errorf(" when delete file share acl:specified fileshare(%s) can't find", req.Id))
mockClient1.On("GetFileShareAcl", c.NewAdminContext(), "d2975ebe-d82c-430f-b28e-f373746a71ca").Return(&SampleFileSharesAcl[2], nil)
mockClient1.On("UpdateFileShareAclStatus", c.NewAdminContext(), SampleFileSharesAcl[2].Id, "error").Return(nil)
mockClient1.On("UpdateStatus", c.NewAdminContext(), &SampleFileSharesAcl[2], "errorDeleting").Return(nil)
db.C = mockClient1

var ctrl1 = &Controller{
fileshareController: NewFakeFileShareController(),
}

t1, _ := ctrl1.DeleteFileShareAcl(context.Background(), req)
err_desc := t1.GetError().Description
expectedError := fmt.Sprintf(" when delete file share acl:specified fileshare(%s) can't find", fileshare.Id)
if err_desc != expectedError {
t.Errorf("test of delete file share acl failed, didn't get %v instead got %v\n", expectedError, err_desc)
}

mockClient2 := new(dbtest.Client)
mockClient2.On("GetFileShare", c.NewAdminContext(), "").Return(&SampleFileShares[0], nil)
mockClient2.On("GetDockByPoolId", c.NewAdminContext(), fileshare.PoolId).Return(nil, errors.New("when search supported dock resource:Get dock failed by pool id: "+fileshare.PoolId))
mockClient2.On("GetFileShareAcl", c.NewAdminContext(), "d2975ebe-d82c-430f-b28e-f373746a71ca").Return(&SampleFileSharesAcl[2], nil)
mockClient2.On("UpdateFileShareAclStatus", c.NewAdminContext(), SampleFileSharesAcl[2].Id, "error").Return(nil)
mockClient2.On("UpdateStatus", c.NewAdminContext(), &SampleFileSharesAcl[2], "errorDeleting").Return(nil)
db.C = mockClient2

var ctrl2 = &Controller{
fileshareController: NewFakeFileShareController(),
}

t2, _ := ctrl2.DeleteFileShareAcl(context.Background(), req)
err_desc2 := t2.GetError().Description
expectedError2 := fmt.Sprintf("when search supported dock resource:Get dock failed by pool id: %v", fileshare.PoolId)
if err_desc2 != expectedError2 {
t.Errorf("test of delete file share acl failed, didn't get %v instead got %v\n", expectedError2, err_desc2)
}

}
23 changes: 23 additions & 0 deletions pkg/controller/fileshare/filesharecontroller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,29 @@ func TestDeleteFileShareSnapshot(t *testing.T) {
}
}

func TestCreateFileShareAcl(t *testing.T) {
fc := NewFakeController()
var expected = &SampleFileSharesAcl[0]

result, err := fc.CreateFileShareAcl(&pb.CreateFileShareAclOpts{})
if err != nil {
t.Errorf("failed to create fileshare acl, err is %v\n", err)
}

if !reflect.DeepEqual(result, expected) {
t.Errorf("expected %v, got %v\n", expected, result)
}
}

func TestDeleteFileShareAcl(t *testing.T) {
fc := NewFakeController()

result := fc.DeleteFileShareAcl(&pb.DeleteFileShareAclOpts{})
if result != nil {
t.Errorf("expected %v, got %v\n", nil, result)
}
}

func (fc *fakefileshareClient) CreateVolume(ctx context.Context, in *pb.CreateVolumeOpts, opts ...grpc.CallOption) (*pb.GenericResponse, error) {
return nil, nil
}
Expand Down

0 comments on commit 3e1de43

Please sign in to comment.