From 745259b57bba2bff1e469a6272249871c68e423b Mon Sep 17 00:00:00 2001 From: Artsiom Koltun Date: Thu, 23 Nov 2023 09:19:21 +0100 Subject: [PATCH] test(storage/nvme): add client delete namespace tests Signed-off-by: Artsiom Koltun --- storage/nvme_namespace_test.go | 71 ++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/storage/nvme_namespace_test.go b/storage/nvme_namespace_test.go index 170446f..5d197f8 100644 --- a/storage/nvme_namespace_test.go +++ b/storage/nvme_namespace_test.go @@ -15,6 +15,7 @@ import ( "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) func TestCreateNvmeNamespace(t *testing.T) { @@ -104,3 +105,73 @@ func TestCreateNvmeNamespace(t *testing.T) { }) } } + +func TestDeleteNvmeNamespace(t *testing.T) { + testNamespaceName := "name" + testRequest := &pb.DeleteNvmeNamespaceRequest{ + Name: testNamespaceName, + AllowMissing: true, + } + tests := map[string]struct { + giveClientErr error + giveConnectorErr error + wantErr error + wantRequest *pb.DeleteNvmeNamespaceRequest + wantConnClosed bool + }{ + "successful call": { + giveConnectorErr: nil, + giveClientErr: nil, + wantErr: nil, + wantRequest: proto.Clone(testRequest).(*pb.DeleteNvmeNamespaceRequest), + wantConnClosed: true, + }, + "client err": { + giveConnectorErr: nil, + giveClientErr: errors.New("Some client error"), + wantErr: errors.New("Some client error"), + wantRequest: proto.Clone(testRequest).(*pb.DeleteNvmeNamespaceRequest), + wantConnClosed: true, + }, + "connector err": { + giveConnectorErr: errors.New("Some conn error"), + giveClientErr: nil, + wantErr: errors.New("Some conn error"), + wantRequest: nil, + wantConnClosed: false, + }, + } + + for testName, tt := range tests { + t.Run(testName, func(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + + mockClient := mocks.NewFrontendNvmeServiceClient(t) + if tt.wantRequest != nil { + mockClient.EXPECT().DeleteNvmeNamespace(ctx, tt.wantRequest). + Return(&emptypb.Empty{}, tt.giveClientErr) + } + + connClosed := false + mockConn := mocks.NewConnector(t) + mockConn.EXPECT().NewConn().Return( + &grpc.ClientConn{}, + func() { connClosed = true }, + tt.giveConnectorErr, + ) + + c, _ := NewWithArgs( + mockConn, + func(grpc.ClientConnInterface) pb.FrontendNvmeServiceClient { + return mockClient + }, + ) + + err := c.DeleteNvmeNamespace(ctx, testNamespaceName, true) + + require.Equal(t, tt.wantErr, err) + require.Equal(t, tt.wantConnClosed, connClosed) + }) + } +}