A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.hashicorp.com/terraform/plugin/testing/acceptance-tests/configuration below:

Plugin Development - Acceptance Testing: Terraform Configuration | Terraform

The configuration used during the execution of an acceptance test can be specified at the TestStep level by populating one of the following mutually exclusive fields:

Terraform configuration can be used in conjunction with Terraform variables defined via TestStep.ConfigVariables.

The TestStep.Config field accepts a string containing valid Terraform configuration.

In the following example, the Config field specifies a resource which is used in combination with ExternalProviders to specify the version and source for the provider:

func TestAccResourcePassword_UpgradeFromVersion3_2_0(t *testing.T) {
    resource.Test(t, resource.TestCase{
        Steps: []resource.TestStep{
            {
                ExternalProviders: map[string]resource.ExternalProvider{
                    "random": {
                        VersionConstraint: "3.2.0",
                        Source:            "hashicorp/random",
                    },
                },
                Config: `resource "random_password" "min" {
                            length = 12
                            override_special = "!#@"
                            min_lower = 2
                            min_upper = 3
                            min_special = 1
                            min_numeric = 4
                        }`,
                        

The TestStep.ConfigDirectory field accepts a TestStepConfigFunc which is a function that accepts a TestStepConfigRequest and returns a string containing a path to a directory containing Terraform configuration files. The path can be a relative or absolute path.

There are helper methods available for generating a TestStepConfigFunc including:

Note: TestStep.ExternalProviders cannot be specified when using ConfigDirectory. It is expected that required_providers are defined within the configuration files.

Custom functions can be written and used in the TestStep.ConfigDirectory field as long as the function is a TestStepConfigFunc type.

StaticDirectory

The StaticDirectory(directory string) function accepts a string specifying a path to a directory containing Terraform configuration.

For example:

func Test_ConfigDirectory_StaticDirectory(t *testing.T) {
    t.Parallel()

    Test(t, TestCase{
        Steps: []TestStep{
            {
                ConfigDirectory: config.StaticDirectory(`testdata/directory_containing_config`),
                /* ... */
            },
        },
    })
}

In this instance, the testing configuration is expected to be in the testdata/directory_containing_config directory relative to the file containing the Test_ConfigDirectory_StaticDirectory test.

TestNameDirectory

The TestNameDirectory() function will use the name of the executing test to specify a path to a directory containing Terraform configuration.

For example:

func Test_ConfigDirectory_TestNameDirectory(t *testing.T) {
    t.Parallel()

    Test(t, TestCase{
        Steps: []TestStep{
            {
                ConfigDirectory: config.TestNameDirectory(),
                /* ... */
            },
        },
    })
}

In this instance, the testing configuration is expected to be in the testdata/Test_ConfigDirectory_TestNameDirectory directory relative to the file containing the Test_ConfigDirectory_TestNameDirectory test.

TestStepDirectory

The TestStepDirectory() function will use the name of the executing test and the current test step number to specify a path to a directory containing Terraform configuration.

For example:

func Test_ConfigDirectory_TestStepDirectory(t *testing.T) {
    t.Parallel()

    Test(t, TestCase{
        Steps: []TestStep{
            {
                ConfigDirectory: config.TestStepDirectory(),
                /* ... */
            },
        },
    })
}

In this instance, because this is the first test step in the test, the testing configuration is expected to be in the testdata/Test_ConfigDirectory_TestStepDirectory/1 directory relative to the file containing the Test_ConfigDirectory_TestStepDirectory test.

The TestStep.ConfigFile field accepts a TestStepConfigFunc which is a function that accepts a TestStepConfigRequest and returns a string containing a path to a file containing Terraform configuration. The path can be a relative or absolute path.

There are helper methods available for generating a TestStepConfigFunc including:

Note: TestStep.ExternalProviders cannot be specified when using ConfigFile. It is expected that required_providers are defined within the configuration file.

Custom functions can be written and used in the TestStep.ConfigFile field as long as the function is a TestStepConfigFunc type.

StaticFile

The StaticFile(file string) function accepts a string specifying a path to a file containing Terraform configuration.

For example:

func Test_ConfigFile_StaticFile(t *testing.T) {
    t.Parallel()

    Test(t, TestCase{
        Steps: []TestStep{
            {
                ConfigFile: config.StaticFile(`testdata/directory_containing_config/main.tf`),
                /* ... */
            },
        },
    })
}

In this instance, the testing configuration is expected to be in the testdata/directory_containing_config/main.tf file relative to the file containing the Test_ConfigFile_StaticFile test.

TestNameFile

The TestNameFile(file string) function will use the name of the executing test to specify a path to a file containing Terraform configuration.

For example:

func Test_ConfigFile_TestNameFile(t *testing.T) {
    t.Parallel()

    Test(t, TestCase{
        Steps: []TestStep{
            {
                ConfigFile: config.TestNameFile("main.tf"),
                /* ... */
            },
        },
    })
}

In this instance, the testing configuration is expected to be in the testdata/Test_ConfigFile_TestNameFile directory relative to the file containing the Test_ConfigFile_TestNameFile test.

TestStepFile

The TestStepFile(file string) function will use the name of the executing test and the current test step number to specify a path to a file containing Terraform configuration.

For example:

func Test_ConfigFile_TestStepFile(t *testing.T) {
    t.Parallel()

    Test(t, TestCase{
        Steps: []TestStep{
            {
                ConfigFile: config.TestStepFile("main.tf"),
                /* ... */
            },
        },
    })
}

In this instance, because this is the first test step in the test, the testing configuration is expected to be in the testdata/Test_ConfigFile_TestStepFile/1/main.tf file relative to the file containing the Test_ConfigDirectory_TestNameDirectory test.

Terraform input variables allow customization of a Terraform configuration without altering the configuration itself.

The TestStep.ConfigVariables field accepts a Variables type which is a key-value map of string to Variable.

The following functions return types implementing Variable that correlate with the Terraform type constraints:

The following example shows the usage of TestStep.ConfigVariables in conjunction with TestStep.ConfigFile:

func Test_ConfigFile_TestNameFile(t *testing.T) {
    t.Parallel()

    Test(t, TestCase{
        Steps: []TestStep{
            {
                ConfigFile: config.TestNameFile("random.tf"),
                ConfigVariables: config.Variables{
                    "length":  config.IntegerVariable(8),
                    "numeric": config.BoolVariable(false),
                },
                /* ... */
            },
        },
    })
}

The configuration would be expected to be in the testdata/Test_ConfigFile_TestNameFile/random.tf file, for example:

terraform {
  required_providers {
    random = {
      source = "registry.terraform.io/hashicorp/random"
      version = "3.5.1"
    }
  }
}

provider "random" {}

resource "random_password" "test" {
  length = var.length
  numeric = var.numeric
}

variable "length" {
  type = number
}

variable "numeric" {
  type = bool
}

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4