|
|
@@ -441,9 +441,19 @@ func TestSetSecret(t *testing.T) {
|
|
|
},
|
|
|
}
|
|
|
|
|
|
+ tagSecretOutputNoVersions := &awssm.DescribeSecretOutput{
|
|
|
+ ARN: &arn,
|
|
|
+ Tags: externalSecretsTag,
|
|
|
+ }
|
|
|
+
|
|
|
+ defaultVersion := "00000000-0000-0000-0000-000000000002"
|
|
|
+
|
|
|
tagSecretOutput := &awssm.DescribeSecretOutput{
|
|
|
ARN: &arn,
|
|
|
Tags: externalSecretsTag,
|
|
|
+ VersionIdsToStages: map[string][]string{
|
|
|
+ defaultVersion: {"AWSCURRENT"},
|
|
|
+ },
|
|
|
}
|
|
|
|
|
|
tagSecretOutputFaulty := &awssm.DescribeSecretOutput{
|
|
|
@@ -451,8 +461,17 @@ func TestSetSecret(t *testing.T) {
|
|
|
Tags: externalSecretsTagFaulty,
|
|
|
}
|
|
|
|
|
|
+ tagSecretOutputFrom := func(versionId string) *awssm.DescribeSecretOutput {
|
|
|
+ return &awssm.DescribeSecretOutput{
|
|
|
+ ARN: &arn,
|
|
|
+ Tags: externalSecretsTag,
|
|
|
+ VersionIdsToStages: map[string][]string{
|
|
|
+ versionId: {"AWSCURRENT"},
|
|
|
+ },
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
initialVersion := "00000000-0000-0000-0000-000000000001"
|
|
|
- defaultVersion := "00000000-0000-0000-0000-000000000002"
|
|
|
defaultUpdatedVersion := "00000000-0000-0000-0000-000000000003"
|
|
|
randomUUIDVersion := "c2812e8d-84ce-4858-abec-7163d8ab312b"
|
|
|
randomUUIDVersionIncremented := "c2812e8d-84ce-4858-abec-7163d8ab312c"
|
|
|
@@ -468,6 +487,7 @@ func TestSetSecret(t *testing.T) {
|
|
|
SecretBinary: secretValue,
|
|
|
VersionId: &defaultVersion,
|
|
|
}
|
|
|
+ blankDescribeSecretOutput := &awssm.DescribeSecretOutput{}
|
|
|
|
|
|
type params struct {
|
|
|
s string
|
|
|
@@ -489,7 +509,6 @@ func TestSetSecret(t *testing.T) {
|
|
|
VersionId: version,
|
|
|
}
|
|
|
}
|
|
|
- blankSecretValueOutput := &awssm.GetSecretValueOutput{}
|
|
|
|
|
|
putSecretOutput := &awssm.PutSecretValueOutput{
|
|
|
ARN: &arn,
|
|
|
@@ -527,7 +546,6 @@ func TestSetSecret(t *testing.T) {
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
GetSecretValueFn: fakesm.NewGetSecretValueFn(secretValueOutput, nil),
|
|
|
- CreateSecretFn: fakesm.NewCreateSecretFn(secretOutput, nil),
|
|
|
PutSecretValueFn: fakesm.NewPutSecretValueFn(putSecretOutput, nil),
|
|
|
DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutput, nil),
|
|
|
TagResourceFn: fakesm.NewTagResourceFn(&awssm.TagResourceOutput{}, nil),
|
|
|
@@ -539,13 +557,50 @@ func TestSetSecret(t *testing.T) {
|
|
|
err: nil,
|
|
|
},
|
|
|
},
|
|
|
+ "SetSecretSucceedsWithExistingSecretButNoSecretVersionsWithoutProperty": {
|
|
|
+ reason: "a secret can be pushed to aws secrets manager when it already exists but has no secret versions",
|
|
|
+ args: args{
|
|
|
+ store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
+ client: fakesm.Client{
|
|
|
+ DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutputNoVersions, nil),
|
|
|
+ PutSecretValueFn: fakesm.NewPutSecretValueFn(putSecretOutput, nil, fakesm.ExpectedPutSecretValueInput{
|
|
|
+ SecretBinary: []byte(`fake-value`),
|
|
|
+ Version: aws.String(initialVersion),
|
|
|
+ }),
|
|
|
+ TagResourceFn: fakesm.NewTagResourceFn(&awssm.TagResourceOutput{}, nil),
|
|
|
+ UntagResourceFn: fakesm.NewUntagResourceFn(&awssm.UntagResourceOutput{}, nil),
|
|
|
+ },
|
|
|
+ pushSecretData: pushSecretDataWithoutProperty,
|
|
|
+ },
|
|
|
+ want: want{
|
|
|
+ err: nil,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ "SetSecretSucceedsWithExistingSecretButNoSecretVersionsWithProperty": {
|
|
|
+ reason: "a secret can be pushed to aws secrets manager when it already exists but has no secret versions",
|
|
|
+ args: args{
|
|
|
+ store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
+ client: fakesm.Client{
|
|
|
+ DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutputNoVersions, nil),
|
|
|
+ PutSecretValueFn: fakesm.NewPutSecretValueFn(putSecretOutput, nil, fakesm.ExpectedPutSecretValueInput{
|
|
|
+ SecretBinary: []byte(`{"other-fake-property":"fake-value"}`),
|
|
|
+ Version: aws.String(initialVersion),
|
|
|
+ }),
|
|
|
+ TagResourceFn: fakesm.NewTagResourceFn(&awssm.TagResourceOutput{}, nil),
|
|
|
+ UntagResourceFn: fakesm.NewUntagResourceFn(&awssm.UntagResourceOutput{}, nil),
|
|
|
+ },
|
|
|
+ pushSecretData: pushSecretDataWithProperty,
|
|
|
+ },
|
|
|
+ want: want{
|
|
|
+ err: nil,
|
|
|
+ },
|
|
|
+ },
|
|
|
"SetSecretSucceedsWithoutSecretKey": {
|
|
|
reason: "a secret can be pushed to aws secrets manager without secret key",
|
|
|
args: args{
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
GetSecretValueFn: fakesm.NewGetSecretValueFn(secretValueOutput, nil),
|
|
|
- CreateSecretFn: fakesm.NewCreateSecretFn(secretOutput, nil),
|
|
|
PutSecretValueFn: fakesm.NewPutSecretValueFn(putSecretOutput, nil),
|
|
|
DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutput, nil),
|
|
|
TagResourceFn: fakesm.NewTagResourceFn(&awssm.TagResourceOutput{}, nil),
|
|
|
@@ -563,7 +618,6 @@ func TestSetSecret(t *testing.T) {
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
GetSecretValueFn: fakesm.NewGetSecretValueFn(secretValueOutput, nil),
|
|
|
- CreateSecretFn: fakesm.NewCreateSecretFn(secretOutput, nil),
|
|
|
PutSecretValueFn: fakesm.NewPutSecretValueFn(putSecretOutput, nil),
|
|
|
DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutput, nil),
|
|
|
TagResourceFn: fakesm.NewTagResourceFn(&awssm.TagResourceOutput{}, nil),
|
|
|
@@ -581,7 +635,6 @@ func TestSetSecret(t *testing.T) {
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
GetSecretValueFn: fakesm.NewGetSecretValueFn(secretValueOutput, &getSecretCorrectErr),
|
|
|
- CreateSecretFn: fakesm.NewCreateSecretFn(secretOutput, nil),
|
|
|
PutSecretValueFn: fakesm.NewPutSecretValueFn(putSecretOutput, nil),
|
|
|
DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutput, nil),
|
|
|
},
|
|
|
@@ -596,7 +649,7 @@ func TestSetSecret(t *testing.T) {
|
|
|
}`)}},
|
|
|
},
|
|
|
want: want{
|
|
|
- err: nil,
|
|
|
+ err: &getSecretCorrectErr,
|
|
|
},
|
|
|
},
|
|
|
"SetSecretSucceedsWithExistingSecretAndAdditionalTags": {
|
|
|
@@ -605,7 +658,6 @@ func TestSetSecret(t *testing.T) {
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
GetSecretValueFn: fakesm.NewGetSecretValueFn(secretValueOutput, nil),
|
|
|
- CreateSecretFn: fakesm.NewCreateSecretFn(secretOutput, nil),
|
|
|
PutSecretValueFn: fakesm.NewPutSecretValueFn(putSecretOutput, nil),
|
|
|
DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutput, nil),
|
|
|
TagResourceFn: fakesm.NewTagResourceFn(&awssm.TagResourceOutput{}, nil),
|
|
|
@@ -629,7 +681,7 @@ func TestSetSecret(t *testing.T) {
|
|
|
args: args{
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
- GetSecretValueFn: fakesm.NewGetSecretValueFn(blankSecretValueOutput, &getSecretCorrectErr),
|
|
|
+ DescribeSecretFn: fakesm.NewDescribeSecretFn(blankDescribeSecretOutput, &getSecretCorrectErr),
|
|
|
CreateSecretFn: fakesm.NewCreateSecretFn(secretOutput, nil),
|
|
|
},
|
|
|
pushSecretData: pushSecretDataWithoutProperty,
|
|
|
@@ -643,7 +695,7 @@ func TestSetSecret(t *testing.T) {
|
|
|
args: args{
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
- GetSecretValueFn: fakesm.NewGetSecretValueFn(blankSecretValueOutput, &getSecretCorrectErr),
|
|
|
+ DescribeSecretFn: fakesm.NewDescribeSecretFn(blankDescribeSecretOutput, &getSecretCorrectErr),
|
|
|
CreateSecretFn: fakesm.NewCreateSecretFn(secretOutput, nil, []byte(`{"other-fake-property":"fake-value"}`)),
|
|
|
},
|
|
|
pushSecretData: pushSecretDataWithProperty,
|
|
|
@@ -681,7 +733,7 @@ func TestSetSecret(t *testing.T) {
|
|
|
b: []byte((`{"fake-property":"fake-value"}`)),
|
|
|
version: &randomUUIDVersion,
|
|
|
}), nil),
|
|
|
- DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutput, nil),
|
|
|
+ DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutputFrom(randomUUIDVersion), nil),
|
|
|
PutSecretValueFn: fakesm.NewPutSecretValueFn(putSecretOutput, nil, fakesm.ExpectedPutSecretValueInput{
|
|
|
SecretBinary: []byte(`{"fake-property":"fake-value","other-fake-property":"fake-value"}`),
|
|
|
Version: &randomUUIDVersionIncremented,
|
|
|
@@ -705,10 +757,6 @@ func TestSetSecret(t *testing.T) {
|
|
|
version: &unparsableVersion,
|
|
|
}), nil),
|
|
|
DescribeSecretFn: fakesm.NewDescribeSecretFn(tagSecretOutput, nil),
|
|
|
- PutSecretValueFn: fakesm.NewPutSecretValueFn(putSecretOutput, nil, fakesm.ExpectedPutSecretValueInput{
|
|
|
- SecretBinary: []byte(`{"fake-property":"fake-value","other-fake-property":"fake-value"}`),
|
|
|
- Version: &initialVersion,
|
|
|
- }),
|
|
|
},
|
|
|
pushSecretData: pushSecretDataWithProperty,
|
|
|
},
|
|
|
@@ -798,7 +846,7 @@ func TestSetSecret(t *testing.T) {
|
|
|
args: args{
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
- GetSecretValueFn: fakesm.NewGetSecretValueFn(blankSecretValueOutput, &getSecretCorrectErr),
|
|
|
+ DescribeSecretFn: fakesm.NewDescribeSecretFn(blankDescribeSecretOutput, &getSecretCorrectErr),
|
|
|
CreateSecretFn: fakesm.NewCreateSecretFn(nil, noPermission),
|
|
|
},
|
|
|
pushSecretData: pushSecretDataWithoutProperty,
|
|
|
@@ -812,7 +860,7 @@ func TestSetSecret(t *testing.T) {
|
|
|
args: args{
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
- GetSecretValueFn: fakesm.NewGetSecretValueFn(blankSecretValueOutput, noPermission),
|
|
|
+ DescribeSecretFn: fakesm.NewDescribeSecretFn(blankDescribeSecretOutput, noPermission),
|
|
|
},
|
|
|
pushSecretData: pushSecretDataWithoutProperty,
|
|
|
},
|
|
|
@@ -852,11 +900,11 @@ func TestSetSecret(t *testing.T) {
|
|
|
},
|
|
|
},
|
|
|
"SetSecretWrongGetSecretErrFails": {
|
|
|
- reason: "GetSecretValueWithContext errors out when anything except awssm.ErrCodeResourceNotFoundException",
|
|
|
+ reason: "DescribeSecret errors out when anything except awssm.ErrCodeResourceNotFoundException",
|
|
|
args: args{
|
|
|
store: makeValidSecretStore().Spec.Provider.AWS,
|
|
|
client: fakesm.Client{
|
|
|
- GetSecretValueFn: fakesm.NewGetSecretValueFn(blankSecretValueOutput, &getSecretWrongErr),
|
|
|
+ DescribeSecretFn: fakesm.NewDescribeSecretFn(blankDescribeSecretOutput, &getSecretWrongErr),
|
|
|
},
|
|
|
pushSecretData: pushSecretDataWithoutProperty,
|
|
|
},
|