11package secretsmanagerv1_test
22
33import (
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+
1619var _ = 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
552561func generateName () string {
553- return "test-integration-" + strconv .FormatInt (core .GetCurrentTime (), 10 )
562+ return TESTCASEPREFIX + "test-integration-" + strconv .FormatInt (core .GetCurrentTime (), 10 )
554563}
555564
556565func 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