11
11
// express or implied. See the License for the specific language governing
12
12
// permissions and limitations under the License.
13
13
14
- package secretsmanager
14
+ package secretsmanager
15
+
16
+ import (
17
+ "errors"
18
+ "testing"
19
+
20
+ "github.com/aws/amazon-ecs-cli/ecs-cli/modules/clients/aws/secretsmanager/mock/sdk"
21
+ "github.com/aws/amazon-ecs-cli/ecs-cli/modules/config"
22
+ "github.com/aws/aws-sdk-go/aws"
23
+ "github.com/aws/aws-sdk-go/aws/session"
24
+ "github.com/aws/aws-sdk-go/service/secretsmanager"
25
+ "github.com/golang/mock/gomock"
26
+ "github.com/stretchr/testify/assert"
27
+ )
28
+
29
+ func TestCreateSecret (t * testing.T ) {
30
+ mockSM , client := setupTestController (t )
31
+
32
+ expectedInput := secretsmanager.CreateSecretInput {
33
+ Name : aws .String ("some-secret" ),
34
+ SecretString : aws .String ("{\" username\" :\" bob\" },{\" password\" :\" abc123xyz456\" }" ),
35
+ }
36
+ expectedOutput := secretsmanager.CreateSecretOutput {
37
+ ARN : aws .String ("arn:aws:secretsmanager:some-secret-123" ),
38
+ Name : aws .String ("some-secret" ),
39
+ }
40
+ mockSM .EXPECT ().CreateSecret (& expectedInput ).Return (& expectedOutput , nil )
41
+
42
+ output , err := client .CreateSecret (expectedInput )
43
+ assert .NoError (t , err , "Expected no error when Creating Secret" )
44
+ assert .Equal (t , & expectedOutput , output , "Expected CreateSecret output to match" )
45
+ }
46
+
47
+ func TestCreateSecretErrorCase (t * testing.T ) {
48
+ mockSM , client := setupTestController (t )
49
+
50
+ mockSM .EXPECT ().CreateSecret (gomock .Any ()).Return (nil , errors .New ("something went wrong" ))
51
+
52
+ _ , err := client .CreateSecret (secretsmanager.CreateSecretInput {})
53
+ assert .Error (t , err , "Expected error when Creating Secret" )
54
+ }
55
+
56
+ func TestListSecrets (t * testing.T ) {
57
+ mockSM , client := setupTestController (t )
58
+
59
+ secretList := []* secretsmanager.SecretListEntry {& secretsmanager.SecretListEntry {Name : aws .String ("my-secret" )}}
60
+ mockListResponse := & secretsmanager.ListSecretsOutput {
61
+ SecretList : secretList ,
62
+ }
63
+ mockSM .EXPECT ().ListSecrets (gomock .Any ()).Return (mockListResponse , nil )
64
+
65
+ output , err := client .ListSecrets (nil )
66
+ assert .NoError (t , err , "Expected no error when listing secrets" )
67
+ assert .NotEmpty (t , output , "Expected ListSecrets output to be non-empty" )
68
+ }
69
+
70
+ func TestListSecretsWithNextToken (t * testing.T ) {
71
+ mockSM , client := setupTestController (t )
72
+ tokenString := "someNextToken"
73
+ nextToken := & tokenString
74
+
75
+ secretList := []* secretsmanager.SecretListEntry {& secretsmanager.SecretListEntry {Name : aws .String ("my-secret" )}}
76
+ mockListResponse := & secretsmanager.ListSecretsOutput {
77
+ SecretList : secretList ,
78
+ }
79
+ expectedInput := secretsmanager.ListSecretsInput {NextToken : nextToken }
80
+
81
+ mockSM .EXPECT ().ListSecrets (& expectedInput ).Return (mockListResponse , nil )
82
+
83
+ output , err := client .ListSecrets (nextToken )
84
+ assert .NoError (t , err , "Expected no error when listing secrets" )
85
+ assert .NotEmpty (t , output , "Expected ListSecrets output to be non-empty" )
86
+ }
87
+
88
+ func TestListSecretsErrorCase (t * testing.T ) {
89
+ mockSM , client := setupTestController (t )
90
+
91
+ mockSM .EXPECT ().ListSecrets (gomock .Any ()).Return (nil , errors .New ("something went wrong" ))
92
+ _ , err := client .ListSecrets (nil )
93
+
94
+ assert .Error (t , err , "Expected error when Listing Secrets" )
95
+ }
96
+
97
+ func setupTestController (t * testing.T ) (* mock_secretsmanageriface.MockSecretsManagerAPI , SMClient ) {
98
+ ctrl := gomock .NewController (t )
99
+ mockSM := mock_secretsmanageriface .NewMockSecretsManagerAPI (ctrl )
100
+ mockSession , err := session .NewSession ()
101
+ assert .NoError (t , err , "Unexpected error in creating session" )
102
+
103
+ client := newClient (& config.CommandConfig {Session : mockSession }, mockSM )
104
+
105
+ return mockSM , client
106
+ }
0 commit comments