-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathstoragepool_test.go
99 lines (81 loc) · 4.63 KB
/
storagepool_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
Copyright © 2019-2025 Dell Inc. or its subsidiaries. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package gounity
import (
"context"
"errors"
"fmt"
"testing"
"github.com/dell/gounity/mocks"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
)
var storagePoolName string
func TestFindStoragePoolByID(t *testing.T) {
fmt.Println("Begin - Find Storage Pool by ID Test")
testConf.volumeAPI.client.api.(*mocks.Client).ExpectedCalls = nil
ctx := context.Background()
testConf.volumeAPI.client.api.(*mocks.Client).On("DoWithHeaders", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil).Once()
// Positive case
pool, err := testConf.poolAPI.FindStoragePoolByID(ctx, testConf.poolID)
fmt.Println("Find Storage Pool by ID:", prettyPrintJSON(pool), err)
if err != nil {
t.Fatalf("Find Storage Pool by ID failed: %v", err)
}
storagePoolName = pool.StoragePoolContent.Name
// Negative cases
// Case 1: Empty ID
emptyID := ""
testConf.volumeAPI.client.api.(*mocks.Client).On("DoWithHeaders", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("invalid ID")).Once()
pool, err = testConf.poolAPI.FindStoragePoolByID(ctx, emptyID)
if err == nil {
t.Fatalf("Find Storage Pool by ID with empty ID case - failed: %v", err)
}
// Case 2: Invalid ID
invalidID := "dummy_pool_id_1"
testConf.volumeAPI.client.api.(*mocks.Client).On("DoWithHeaders", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("invalid ID")).Once()
pool, err = testConf.poolAPI.FindStoragePoolByID(ctx, invalidID)
if err == nil {
t.Fatalf("Find Storage Pool by ID with invalid ID case - failed: %v", err)
}
fmt.Println("Find Storage Pool by ID Test - Successful")
}
func TestFindStoragePoolByNameTest(t *testing.T) {
testConf.volumeAPI.client.api.(*mocks.Client).ExpectedCalls = nil
assert := require.New(t)
fmt.Println("Begin - Find Storage Pool by Name Test")
ctx := context.Background()
// Mock setup for valid pool name
testConf.volumeAPI.client.api.(*mocks.Client).On("DoWithHeaders", mock.Anything, "GET", "/api/instances/pool/name:valid_pool_name?fields=id,name,description,sizeFree,sizeTotal,sizeUsed,sizeSubscribed,hasDataReductionEnabledLuns,hasDataReductionEnabledFs,isFASTCacheEnabled,type,isAllFlash,poolFastVP", mock.Anything, mock.Anything, mock.Anything).Return(nil).Once()
// Positive Case
storagePoolName := "valid_pool_name" // Ensure this is set to a valid name
pool, err := testConf.poolAPI.FindStoragePoolByName(ctx, storagePoolName)
fmt.Println("Find volume by Name:", prettyPrintJSON(pool), err)
assert.NoError(err, "Find Pool by Name failed")
assert.NotNil(pool, "Pool should not be nil")
// Mock setup for empty pool name
testConf.volumeAPI.client.api.(*mocks.Client).On("DoWithHeaders", mock.Anything, "GET", "/api/instances/pool/name:?fields=id,name,description,sizeFree,sizeTotal,sizeUsed,sizeSubscribed,hasDataReductionEnabledLuns,hasDataReductionEnabledFs,isFASTCacheEnabled,type,isAllFlash,poolFastVP", mock.Anything, mock.Anything, mock.Anything).Return(nil).Once()
// Negative Case: Empty pool name
storagePoolNameTemp := ""
pool, err = testConf.poolAPI.FindStoragePoolByName(ctx, storagePoolNameTemp)
assert.Error(err, "Expected error for empty pool name")
assert.Nil(pool, "Pool should be nil for empty name")
// Mock setup for invalid pool name
testConf.volumeAPI.client.api.(*mocks.Client).On("DoWithHeaders", mock.Anything, "GET", "/api/instances/pool/name:dummy_pool_name_1?fields=id,name,description,sizeFree,sizeTotal,sizeUsed,sizeSubscribed,hasDataReductionEnabledLuns,hasDataReductionEnabledFs,isFASTCacheEnabled,type,isAllFlash,poolFastVP", mock.Anything, mock.Anything, mock.Anything).Return(errors.New("pool not found")).Once()
// Negative Case: Invalid pool name
storagePoolNameTemp = "dummy_pool_name_1"
pool, err = testConf.poolAPI.FindStoragePoolByName(ctx, storagePoolNameTemp)
assert.Error(err, "Expected error for invalid pool name")
assert.Nil(pool, "Pool should be nil for invalid name")
fmt.Println("Find Storage Pool by Name Test - Successful")
}