Skip to content

Commit 88205e4

Browse files
authored
Merge pull request #37 from IBM/shacharn-2353-e2e-conflict
add Cleanup to Integration tests
2 parents 6023e51 + edb896a commit 88205e4

File tree

1 file changed

+123
-2
lines changed

1 file changed

+123
-2
lines changed

secretsmanagerv1/secrets_manager_v1_integration_test.go

Lines changed: 123 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package secretsmanagerv1_test
22

33
import (
4+
"encoding/json"
45
"github.com/IBM/go-sdk-core/v5/core"
56
"github.com/IBM/secrets-manager-go-sdk/secretsmanagerv1"
67
"github.com/go-openapi/strfmt"
@@ -13,6 +14,8 @@ import (
1314
"time"
1415
)
1516

17+
const TESTCASEPREFIX = "Go-SDK_"
18+
1619
var _ = Describe(`IbmCloudSecretsManagerApiV1_integration`, func() {
1720

1821
secretsManager, serviceErr := secretsmanagerv1.NewSecretsManagerV1(&secretsmanagerv1.SecretsManagerV1Options{
@@ -25,6 +28,12 @@ var _ = Describe(`IbmCloudSecretsManagerApiV1_integration`, func() {
2528
Expect(secretsManager).ToNot(BeNil())
2629
Expect(serviceErr).To(BeNil())
2730

31+
AfterSuite(func() {
32+
deleteAllSecrets(secretsManager, TESTCASEPREFIX)
33+
deleteAllSecretGroups(secretsManager, TESTCASEPREFIX)
34+
deleteAllConfigElements(secretsManager, secretsmanagerv1.DeleteSecretOptionsSecretTypePublicCertConst, TESTCASEPREFIX)
35+
})
36+
2837
Context(`Create and delete secret`, func() {
2938

3039
It(`Should create an arbitrary secret`, func() {
@@ -69,7 +78,7 @@ var _ = Describe(`IbmCloudSecretsManagerApiV1_integration`, func() {
6978
})
7079

7180
It(`Creating a secret with the same name should result in a conflict`, func() {
72-
secretName := "conflict_integration_test_secret"
81+
secretName := TESTCASEPREFIX + "conflict_integration_test_secret-" + strconv.FormatInt(core.GetCurrentTime(), 10)
7382
// create arbitrary secret
7483
createRes, resp, err := secretsManager.CreateSecret(&secretsmanagerv1.CreateSecretOptions{
7584
SecretType: core.StringPtr(secretsmanagerv1.CreateSecretOptionsSecretTypeArbitraryConst),
@@ -550,10 +559,122 @@ var _ = Describe(`IbmCloudSecretsManagerApiV1_integration`, func() {
550559
})
551560

552561
func generateName() string {
553-
return "test-integration-" + strconv.FormatInt(core.GetCurrentTime(), 10)
562+
return TESTCASEPREFIX + "test-integration-" + strconv.FormatInt(core.GetCurrentTime(), 10)
554563
}
555564

556565
func generateExpirationDate() *strfmt.DateTime {
557566
d := strfmt.DateTime(time.Now().AddDate(10, 0, 0))
558567
return &d
559568
}
569+
570+
func deleteAllSecrets(secretsManager *secretsmanagerv1.SecretsManagerV1, prefix string) {
571+
secrets := getAllSecrets(secretsManager).Resources
572+
b, _ := json.MarshalIndent(secrets, "", "")
573+
var secretsData []secretsmanagerv1.SecretResource
574+
json.Unmarshal(b, &secretsData)
575+
for _, secret := range secretsData {
576+
//do not delete auto rotation secrets.
577+
if strings.Contains(*secret.Name, "auto-rotate") || strings.Contains(*secret.Name, "auto-renew") {
578+
continue
579+
}
580+
581+
if !strings.Contains(*secret.Name, prefix) {
582+
continue
583+
}
584+
585+
secretType := strings.ToLower(*secret.SecretType)
586+
deleteSecret(secretsManager, secretType, *secret.ID)
587+
}
588+
}
589+
590+
func deleteAllSecretGroups(secretsManager *secretsmanagerv1.SecretsManagerV1, prefix string) {
591+
secretGroups := getAllSecretGroups(secretsManager).Resources
592+
b, _ := json.MarshalIndent(secretGroups, "", "")
593+
var secretGroupsData []secretsmanagerv1.SecretGroupResource
594+
json.Unmarshal(b, &secretGroupsData)
595+
for _, secretGroup := range secretGroupsData {
596+
597+
if !strings.Contains(*secretGroup.Name, prefix) {
598+
continue
599+
}
600+
601+
deleteSecretGroup(secretsManager, *secretGroup.ID)
602+
}
603+
}
604+
605+
func deleteAllConfigElements(secretsManager *secretsmanagerv1.SecretsManagerV1, SecretType string, prefix string) {
606+
configElements := getAllConfigElements(secretsManager, SecretType).Resources
607+
b, _ := json.MarshalIndent(configElements, "", "")
608+
var configsData []secretsmanagerv1.GetConfigResourcesItem
609+
json.Unmarshal(b, &configsData)
610+
611+
for _, configData := range configsData {
612+
613+
CertificateAuthorities := configData.CertificateAuthorities
614+
b, _ = json.MarshalIndent(CertificateAuthorities, "", "")
615+
var CertificateAuthoritiesData []secretsmanagerv1.ConfigElementMetadata
616+
json.Unmarshal(b, &CertificateAuthoritiesData)
617+
618+
for _, CertificateData := range CertificateAuthoritiesData {
619+
if !strings.Contains(*CertificateData.Name, prefix) {
620+
continue
621+
}
622+
623+
deleteConfigElement(secretsManager, SecretType, secretsmanagerv1.DeleteConfigElementOptionsConfigElementCertificateAuthoritiesConst, *CertificateData.Name)
624+
}
625+
626+
DNSProviders := configData.DNSProviders
627+
b, _ = json.MarshalIndent(DNSProviders, "", "")
628+
var DNSProvidersData []secretsmanagerv1.ConfigElementMetadata
629+
json.Unmarshal(b, &DNSProvidersData)
630+
631+
for _, DNSProviderData := range DNSProvidersData {
632+
if !strings.Contains(*DNSProviderData.Name, prefix) {
633+
continue
634+
}
635+
636+
deleteConfigElement(secretsManager, SecretType, secretsmanagerv1.DeleteConfigElementOptionsConfigElementDNSProvidersConst, *DNSProviderData.Name)
637+
}
638+
}
639+
}
640+
641+
func deleteSecret(secretsManager *secretsmanagerv1.SecretsManagerV1, secretType string, secretId string) {
642+
deleteSecretOptions := secretsManager.NewDeleteSecretOptions(
643+
secretType,
644+
secretId,
645+
)
646+
647+
secretsManager.DeleteSecret(deleteSecretOptions)
648+
}
649+
650+
func deleteSecretGroup(secretsManager *secretsmanagerv1.SecretsManagerV1, secretGroupId string) {
651+
deleteSecretGroupOptions := secretsManager.NewDeleteSecretGroupOptions(secretGroupId)
652+
653+
secretsManager.DeleteSecretGroup(deleteSecretGroupOptions)
654+
}
655+
656+
func deleteConfigElement(secretsManager *secretsmanagerv1.SecretsManagerV1, SecretType string, ConfigElement string, caConfigName string) {
657+
deleteConfigElementOptions := secretsManager.NewDeleteConfigElementOptions(
658+
SecretType,
659+
ConfigElement,
660+
caConfigName,
661+
)
662+
secretsManager.DeleteConfigElement(deleteConfigElementOptions)
663+
}
664+
665+
func getAllSecrets(secretsManager *secretsmanagerv1.SecretsManagerV1) *secretsmanagerv1.ListSecrets {
666+
secrets, _, _ := secretsManager.ListAllSecrets(secretsManager.NewListAllSecretsOptions().SetLimit(2000))
667+
return secrets
668+
}
669+
670+
func getAllSecretGroups(secretsManager *secretsmanagerv1.SecretsManagerV1) *secretsmanagerv1.SecretGroupDef {
671+
secretGroups, _, _ := secretsManager.ListSecretGroups(secretsManager.NewListSecretGroupsOptions())
672+
return secretGroups
673+
}
674+
675+
func getAllConfigElements(secretsManager *secretsmanagerv1.SecretsManagerV1, SecretType string) *secretsmanagerv1.GetConfig {
676+
configRes, _, _ := secretsManager.GetConfig(&secretsmanagerv1.GetConfigOptions{
677+
SecretType: core.StringPtr(SecretType),
678+
})
679+
return configRes
680+
}

0 commit comments

Comments
 (0)