Skip to content

Commit df7f50d

Browse files
test test
1 parent b78cbd6 commit df7f50d

File tree

1 file changed

+34
-8
lines changed

1 file changed

+34
-8
lines changed

pkg/cloud/services/ssm/secret_test.go

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func TestServiceCreate(t *testing.T) {
8686
if !strings.HasPrefix(actualPrefix, expectedPrefix) {
8787
t.Fatalf("Prefix is not as expected: %v", actualPrefix)
8888
}
89-
if (err != nil) != isErrorRetryable(err, retryableErrors) {
89+
if (err != nil) != IsErrorExpected {
9090
t.Fatalf("Unexpected error value, error = %v, expectedError %v", err, IsErrorExpected)
9191
}
9292
}
@@ -171,12 +171,13 @@ func TestServiceCreate(t *testing.T) {
171171
},
172172
},
173173
{
174-
name: "Should not retry if non-retryable error occurred while storing data in SSM",
174+
name: "Should retry if retryable error occurred while storing data in SSM",
175175
bytesCount: 10,
176176
secretPrefix: "/prefix",
177177
expectedPrefix: "/prefix",
178-
wantErr: true,
178+
wantErr: false,
179179
expect: func(m *mock_ssmiface.MockSSMAPIMockRecorder) {
180+
// First call fails with retryable error
180181
m.PutParameter(context.TODO(), gomock.AssignableToTypeOf(&ssm.PutParameterInput{})).Return(nil, &mockAPIError{
181182
"ParameterAlreadyExists",
182183
"parameter already exists"}).Do(
@@ -202,17 +203,42 @@ func TestServiceCreate(t *testing.T) {
202203
}
203204
},
204205
)
206+
// Second call succeeds
207+
m.PutParameter(context.TODO(), gomock.AssignableToTypeOf(&ssm.PutParameterInput{})).Return(&ssm.PutParameterOutput{}, nil)
205208
},
206209
},
207210
{
208-
name: "Should retry if retryable error occurred while storing data in SSM",
211+
name: "Should not retry if non-retryable error occurred while storing data in SSM",
209212
bytesCount: 10,
210-
secretPrefix: "",
211-
expectedPrefix: "/cluster.x-k8s.io",
213+
secretPrefix: "/prefix",
214+
expectedPrefix: "/prefix",
215+
wantErr: true,
212216
expect: func(m *mock_ssmiface.MockSSMAPIMockRecorder) {
213217
m.PutParameter(context.TODO(), gomock.AssignableToTypeOf(&ssm.PutParameterInput{})).Return(nil, &mockAPIError{
214-
"ParameterLimitExceeded",
215-
"parameter limit exceeded"})
218+
"InvalidParameterValue",
219+
"invalid parameter value"}).Do(
220+
func(ctx context.Context, putParameterInput *ssm.PutParameterInput, optFns ...func(*ssm.Options)) {
221+
if !strings.HasPrefix(*(putParameterInput.Name), "/prefix/") {
222+
t.Fatalf("Prefix is not as expected: %v", putParameterInput.Name)
223+
}
224+
sortTagsByKey(putParameterInput.Tags)
225+
sortTagsByKey(expectedTagsAsValues)
226+
if diff := cmp.Diff(expectedTagsAsValues, putParameterInput.Tags,
227+
// This Comparer is the key. It tells cmp how to properly compare two Tag structs.
228+
cmp.Comparer(func(x, y types.Tag) bool {
229+
// Safely compare the string content of the Key field.
230+
keyMatch := (x.Key == nil && y.Key == nil) || (x.Key != nil && y.Key != nil && *x.Key == *y.Key)
231+
// Safely compare the string content of the Value field.
232+
valueMatch := (x.Value == nil && y.Value == nil) || (x.Value != nil && y.Value != nil && *x.Value == *y.Value)
233+
234+
// The tags are equal only if both their key and value content match.
235+
return keyMatch && valueMatch
236+
}),
237+
); diff != "" {
238+
t.Fatalf("Tags mismatch (-expected +actual):\n%s", diff)
239+
}
240+
},
241+
)
216242
},
217243
},
218244
}

0 commit comments

Comments
 (0)