Skip to content

Commit

Permalink
snapshot fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Shruthi-1MN committed Dec 11, 2019
1 parent f8581c3 commit 866e3f8
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 81 deletions.
1 change: 1 addition & 0 deletions openapi-spec/swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2751,6 +2751,7 @@ components:
minLength: 1
maxLength: 255
type: string
pattern: '^[\w\- ]+$'
description:
type: string
FileShareSnapshotRespSpec:
Expand Down
17 changes: 0 additions & 17 deletions pkg/api/util/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,17 +170,6 @@ func CreateFileShareDBEntry(ctx *c.Context, in *model.FileShareSpec) (*model.Fil
if in.UpdatedAt == "" {
in.UpdatedAt = time.Now().Format(constants.TimeFormat)
}
//validate the name
if in.Name == "" {
errMsg := fmt.Sprintf("empty fileshare name is not allowed. Please give valid name.")
log.Error(errMsg)
return nil, errors.New(errMsg)
}
if len(in.Name) > 255 {
errMsg := fmt.Sprintf("fileshare name length should not be more than 255 characters. input name length is : %d", len(in.Name))
log.Error(errMsg)
return nil, errors.New(errMsg)
}

reg, err := regexp.Compile("^[a-zA-Z0-9_-]+$")
if err != nil {
Expand Down Expand Up @@ -281,12 +270,6 @@ func CreateFileShareSnapshotDBEntry(ctx *c.Context, in *model.FileShareSnapshotS
in.CreatedAt = time.Now().Format(constants.TimeFormat)
}

//validate the snapshot name
if in.Name == "" {
errMsg := fmt.Sprintf("snapshot name can not be empty. Please give valid snapshot name")
log.Error(errMsg)
return nil, errors.New(errMsg)
}
if strings.HasPrefix(in.Name, "snapshot") {
errMsg := fmt.Sprintf("names starting 'snapshot' are reserved. Please choose a different snapshot name.")
log.Error(errMsg)
Expand Down
76 changes: 13 additions & 63 deletions pkg/api/util/db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ package util
import (
"fmt"
"reflect"
"strconv"
"testing"

"github.com/opensds/opensds/pkg/utils"
Expand Down Expand Up @@ -375,6 +374,19 @@ func TestCreateFileShareSnapshotDBEntry(t *testing.T) {
assertTestResult(t, result, expected)
})

t.Run("names starting 'snapshot' are reserved", func(t *testing.T) {
req.Name = "snapshotknow"
req.Description = "test snapshot"
mockClient := new(dbtest.Client)
mockClient.On("GetFileShare", context.NewAdminContext(), "bd5b12a8-a101-11e7-941e-d77981b584d8").Return(fileshare, nil)
mockClient.On("ListFileShareSnapshots", context.NewAdminContext()).Return(nil, nil)
mockClient.On("CreateFileShareSnapshot", context.NewAdminContext(), req).Return(&SampleShareSnapshots[0], nil)
db.C = mockClient

_, err := CreateFileShareSnapshotDBEntry(context.NewAdminContext(), req)
expectedError := fmt.Sprintf("names starting 'snapshot' are reserved. Please choose a different snapshot name.")
assertTestResult(t, err.Error(), expectedError)
})
}

func TestCreateFileShareDBEntry(t *testing.T) {
Expand Down Expand Up @@ -422,44 +434,6 @@ func TestCreateFileShareDBEntry(t *testing.T) {
assertTestResult(t, err.Error(), expectedError)
})

t.Run("Empty file share name is allowed", func(t *testing.T) {
in.Size, in.Name, in.ProfileId = int64(1), "", "b3585ebe-c42c-120g-b28e-f373746a71ca"
mockClient := new(dbtest.Client)
mockClient.On("CreateFileShare", context.NewAdminContext(), in).Return(&SampleFileShares[0], nil)
db.C = mockClient

_, err := CreateFileShareDBEntry(context.NewAdminContext(), in)
expectedError := "empty fileshare name is not allowed. Please give valid name."
assertTestResult(t, err.Error(), expectedError)
})

t.Run("File share name length equal to 0 character are not allowed", func(t *testing.T) {
in.Name = utils.RandSeqWithAlnum(0)
in.Size, in.ProfileId = int64(1), "b3585ebe-c42c-120g-b28e-f373746a71ca"
mockClient := new(dbtest.Client)
mockClient.On("CreateFileShare", context.NewAdminContext(), in).Return(&SampleFileShares[0], nil)
db.C = mockClient

_, err := CreateFileShareDBEntry(context.NewAdminContext(), in)
expectedError := "empty fileshare name is not allowed. Please give valid name."
assertTestResult(t, err.Error(), expectedError)
})

t.Run("File share name length equal to 1 character are allowed", func(t *testing.T) {
in.Name = utils.RandSeqWithAlnum(1)
in.Size, in.ProfileId = int64(1), "b3585ebe-c42c-120g-b28e-f373746a71ca"
mockClient := new(dbtest.Client)
mockClient.On("CreateFileShare", context.NewAdminContext(), in).Return(&SampleFileShares[0], nil)
db.C = mockClient

var expected = &SampleFileShares[0]
result, err := CreateFileShareDBEntry(context.NewAdminContext(), in)
if err != nil {
t.Errorf("failed to create fileshare err is %v\n", err)
}
assertTestResult(t, result, expected)
})

t.Run("File share name length equal to 10 characters are allowed", func(t *testing.T) {
in.Name = utils.RandSeqWithAlnum(10)
in.Size, in.ProfileId = int64(1), "b3585ebe-c42c-120g-b28e-f373746a71ca"
Expand Down Expand Up @@ -504,30 +478,6 @@ func TestCreateFileShareDBEntry(t *testing.T) {
}
assertTestResult(t, result, expected)
})

t.Run("File share name length more than 255 characters are not allowed", func(t *testing.T) {
in.Name = utils.RandSeqWithAlnum(256)
in.Size, in.ProfileId = int64(1), "b3585ebe-c42c-120g-b28e-f373746a71ca"
mockClient := new(dbtest.Client)
mockClient.On("CreateFileShare", context.NewAdminContext(), in).Return(&SampleFileShares[0], nil)
db.C = mockClient

_, err := CreateFileShareDBEntry(context.NewAdminContext(), in)
expectedError := "fileshare name length should not be more than 255 characters. input name length is : " + strconv.Itoa(len(in.Name))
assertTestResult(t, err.Error(), expectedError)
})

t.Run("File share name length more than 255 characters are not allowed", func(t *testing.T) {
in.Name = utils.RandSeqWithAlnum(257)
in.Size, in.ProfileId = int64(1), "b3585ebe-c42c-120g-b28e-f373746a71ca"
mockClient := new(dbtest.Client)
mockClient.On("CreateFileShare", context.NewAdminContext(), in).Return(&SampleFileShares[0], nil)
db.C = mockClient

_, err := CreateFileShareDBEntry(context.NewAdminContext(), in)
expectedError := "fileshare name length should not be more than 255 characters. input name length is : " + strconv.Itoa(len(in.Name))
assertTestResult(t, err.Error(), expectedError)
})
}

func TestDeleteFileShareDBEntry(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion pkg/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -335,4 +335,4 @@ func ContainsIgnoreCase(a []string, x string) bool {
}
}
return false
}
}

0 comments on commit 866e3f8

Please sign in to comment.