2

I have a simple regression test for my Terraform infrastructure. This Terraform infrastructure consists of many resources including an Azure Keyvault. As it becomes the default for Azure Keyvault to have soft-delete enabled it will results in issues for an automated regression where creating, asserting, and destroying resources is done in a CI/CD manner.

The basic Terratest looks like this

testpackage test

import (
    "testing"

    "github.com/gruntwork-io/terratest/modules/terraform"
    "github.com/stretchr/testify/assert"
)

// An example of how to test the simple Terraform module in examples/basic using Terratest.
func TestTerraformBasicExample(t *testing.T) {

    // Test specific variables
    projectName := "automated0test"

    // Assertion variables
    expectedText := "testOutputName"

    terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{
        // The path to where our Terraform code is located
        TerraformDir: "../../examples/basic",

        // Variables to pass to our Terraform code using -var options
        Vars: map[string]interface{}{
            "project": projectName,
        },

        // Disable colors in Terraform commands so its easier to parse stdout/stderr
        NoColor: true,
    })

    // At the end of the test, run `terraform destroy` to clean up any resources that were created
    defer terraform.Destroy(t, terraformOptions)

    // This will run `terraform init` and `terraform apply` and fail the test if there are any errors
    terraform.InitAndApply(t, terraformOptions)

    // Run `terraform output` to get the values of output variables
    actualTextExample := terraform.Output(t, terraformOptions, "static_storage_account_name")

    // Verify we're getting back the outputs we expect
    assert.Equal(t, expectedText, actualTextExample)

}

I am getting the following error:

TestTerraformBasicExample 2021-02-25T09:41:17Z retry.go:99: Returning due to fatal error: FatalError{Underlying: error while running command: exit status 1; 

Error: purging Secret "placeholder" (Key Vault "https://placeholder"): keyvault.BaseClient#PurgeDeletedSecret: Failure responding to request: StatusCode=409 -- 

Original Error: autorest/azure: Service returned an error. Status=409 Code="Conflict" Message="Secret is currently being deleted." InnerError={"code":"ObjectIsBeingDeleted"}
Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189

0 Answers0