80 lines
2.1 KiB
Go
80 lines
2.1 KiB
Go
package tests
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"floci-sdk-test-go/internal/testutil"
|
|
|
|
"github.com/aws/aws-sdk-go-v2/aws"
|
|
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestSecretsManager(t *testing.T) {
|
|
ctx := context.Background()
|
|
svc := testutil.SecretsManagerClient()
|
|
secretName := "go-test/creds"
|
|
secretVal := `{"username":"admin","password":"s3cret"}`
|
|
var secretARN string
|
|
|
|
t.Cleanup(func() {
|
|
if secretARN != "" {
|
|
svc.DeleteSecret(ctx, &secretsmanager.DeleteSecretInput{
|
|
SecretId: aws.String(secretARN),
|
|
ForceDeleteWithoutRecovery: aws.Bool(true),
|
|
})
|
|
}
|
|
})
|
|
|
|
t.Run("CreateSecret", func(t *testing.T) {
|
|
r, err := svc.CreateSecret(ctx, &secretsmanager.CreateSecretInput{
|
|
Name: aws.String(secretName),
|
|
SecretString: aws.String(secretVal),
|
|
})
|
|
require.NoError(t, err)
|
|
secretARN = aws.ToString(r.ARN)
|
|
assert.NotEmpty(t, secretARN)
|
|
})
|
|
|
|
t.Run("GetSecretValue", func(t *testing.T) {
|
|
r, err := svc.GetSecretValue(ctx, &secretsmanager.GetSecretValueInput{
|
|
SecretId: aws.String(secretARN),
|
|
})
|
|
require.NoError(t, err)
|
|
assert.Equal(t, secretVal, aws.ToString(r.SecretString))
|
|
})
|
|
|
|
t.Run("DescribeSecret", func(t *testing.T) {
|
|
_, err := svc.DescribeSecret(ctx, &secretsmanager.DescribeSecretInput{
|
|
SecretId: aws.String(secretARN),
|
|
})
|
|
require.NoError(t, err)
|
|
})
|
|
|
|
t.Run("ListSecrets", func(t *testing.T) {
|
|
r, err := svc.ListSecrets(ctx, &secretsmanager.ListSecretsInput{})
|
|
require.NoError(t, err)
|
|
assert.NotEmpty(t, r.SecretList)
|
|
})
|
|
|
|
t.Run("PutSecretValue", func(t *testing.T) {
|
|
newVal := `{"username":"admin","password":"n3wsecret"}`
|
|
_, err := svc.PutSecretValue(ctx, &secretsmanager.PutSecretValueInput{
|
|
SecretId: aws.String(secretARN),
|
|
SecretString: aws.String(newVal),
|
|
})
|
|
require.NoError(t, err)
|
|
})
|
|
|
|
t.Run("DeleteSecret", func(t *testing.T) {
|
|
_, err := svc.DeleteSecret(ctx, &secretsmanager.DeleteSecretInput{
|
|
SecretId: aws.String(secretARN),
|
|
ForceDeleteWithoutRecovery: aws.Bool(true),
|
|
})
|
|
require.NoError(t, err)
|
|
secretARN = "" // Prevent double cleanup
|
|
})
|
|
}
|