Skip to content

Commit 31c2519

Browse files
committed
test(secret): harden destroy checks with RetryContext
1 parent 283022a commit 31c2519

File tree

6 files changed

+1380
-2914
lines changed

6 files changed

+1380
-2914
lines changed

internal/services/secret/secret_test.go

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package secret_test
22

33
import (
4+
"context"
45
"fmt"
56
"regexp"
67
"testing"
8+
"time"
79

10+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
811
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
912
"github.com/hashicorp/terraform-plugin-testing/terraform"
1013
secretSDK "github.com/scaleway/scaleway-sdk-go/api/secret/v1beta1"
@@ -316,30 +319,35 @@ func testAccCheckSecretExists(tt *acctest.TestTools, n string) resource.TestChec
316319

317320
func testAccCheckSecretDestroy(tt *acctest.TestTools) resource.TestCheckFunc {
318321
return func(state *terraform.State) error {
319-
for _, rs := range state.RootModule().Resources {
320-
if rs.Type != "scaleway_secret" {
321-
continue
322-
}
322+
ctx := context.Background()
323323

324-
api, region, id, err := secret.NewAPIWithRegionAndID(tt.Meta, rs.Primary.ID)
325-
if err != nil {
326-
return err
327-
}
324+
return retry.RetryContext(ctx, 3*time.Minute, func() *retry.RetryError {
325+
for _, rs := range state.RootModule().Resources {
326+
if rs.Type != "scaleway_secret" {
327+
continue
328+
}
328329

329-
_, err = api.GetSecret(&secretSDK.GetSecretRequest{
330-
SecretID: id,
331-
Region: region,
332-
})
330+
api, region, id, err := secret.NewAPIWithRegionAndID(tt.Meta, rs.Primary.ID)
331+
if err != nil {
332+
return retry.NonRetryableError(err)
333+
}
333334

334-
if err == nil {
335-
return fmt.Errorf("secret (%s) still exists", rs.Primary.ID)
336-
}
335+
_, err = api.GetSecret(&secretSDK.GetSecretRequest{
336+
SecretID: id,
337+
Region: region,
338+
})
337339

338-
if !httperrors.Is404(err) {
339-
return err
340+
switch {
341+
case err == nil:
342+
return retry.RetryableError(fmt.Errorf("secret (%s) still exists", rs.Primary.ID))
343+
case httperrors.Is404(err):
344+
continue
345+
default:
346+
return retry.NonRetryableError(err)
347+
}
340348
}
341-
}
342349

343-
return nil
350+
return nil
351+
})
344352
}
345353
}

0 commit comments

Comments
 (0)