Documentation
¶
Overview ¶
Package statecheck contains the state check interface, request/response structs, and common state check implementations.
Index ¶
- type CheckStateRequest
- type CheckStateResponse
- type StateCheck
- func ExpectKnownOutputValue(outputAddress string, knownValue knownvalue.Check) StateCheck
- func ExpectKnownOutputValueAtPath(outputAddress string, outputPath tfjsonpath.Path, knownValue knownvalue.Check) StateCheck
- func ExpectKnownValue(resourceAddress string, attributePath tfjsonpath.Path, ...) StateCheck
- func ExpectSensitiveValue(resourceAddress string, attributePath tfjsonpath.Path) StateCheck
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CheckStateRequest ¶
type CheckStateRequest struct {
// State represents a parsed state file, retrieved via the `terraform show -json` command.
State *tfjson.State
}
CheckStateRequest is a request for an invoke of the CheckState function.
type CheckStateResponse ¶
type CheckStateResponse struct {
// Error is used to report the failure of a state check assertion and is combined with other StateCheck errors
// to be reported as a test failure.
Error error
}
CheckStateResponse is a response to an invoke of the CheckState function.
type StateCheck ¶
type StateCheck interface {
// CheckState should perform the state check.
CheckState(context.Context, CheckStateRequest, *CheckStateResponse)
}
StateCheck defines an interface for implementing test logic that checks a state file and then returns an error if the state file does not match what is expected.
func ExpectKnownOutputValue ¶
func ExpectKnownOutputValue(outputAddress string, knownValue knownvalue.Check) StateCheck
ExpectKnownOutputValue returns a state check that asserts that the specified value has a known type, and value.
Example ¶
package main
import (
"testing"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-plugin-testing/knownvalue"
"github.com/hashicorp/terraform-plugin-testing/statecheck"
)
func main() {
// A typical test would accept *testing.T as a function parameter, for instance `func TestSomething(t *testing.T) { ... }`.
t := &testing.T{}
t.Parallel()
resource.Test(t, resource.TestCase{
// Provider definition omitted.
Steps: []resource.TestStep{
{
Config: `resource "test_resource" "one" {
bool_attribute = true
}
output bool_output {
value = test_resource.one.bool_attribute
}
`,
ConfigStateChecks: []statecheck.StateCheck{
statecheck.ExpectKnownOutputValue(
"bool_output",
knownvalue.Bool(true),
),
},
},
},
})
}
Output:
func ExpectKnownOutputValueAtPath ¶
func ExpectKnownOutputValueAtPath(outputAddress string, outputPath tfjsonpath.Path, knownValue knownvalue.Check) StateCheck
ExpectKnownOutputValueAtPath returns a state check that asserts that the specified output at the given path has a known type and value.
Example ¶
package main
import (
"testing"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-plugin-testing/knownvalue"
"github.com/hashicorp/terraform-plugin-testing/statecheck"
"github.com/hashicorp/terraform-plugin-testing/tfjsonpath"
)
func main() {
// A typical test would accept *testing.T as a function parameter, for instance `func TestSomething(t *testing.T) { ... }`.
t := &testing.T{}
t.Parallel()
resource.Test(t, resource.TestCase{
// Provider definition omitted.
Steps: []resource.TestStep{
{
Config: `resource "test_resource" "one" {
bool_attribute = true
}
output test_resource_one_output {
value = test_resource.one
}
`,
ConfigStateChecks: []statecheck.StateCheck{
statecheck.ExpectKnownOutputValueAtPath(
"test_resource_one_output",
tfjsonpath.New("bool_attribute"),
knownvalue.Bool(true),
),
},
},
},
})
}
Output:
func ExpectKnownValue ¶
func ExpectKnownValue(resourceAddress string, attributePath tfjsonpath.Path, knownValue knownvalue.Check) StateCheck
ExpectKnownValue returns a state check that asserts that the specified attribute at the given resource has a known type and value.
Example ¶
package main
import (
"testing"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-plugin-testing/knownvalue"
"github.com/hashicorp/terraform-plugin-testing/statecheck"
"github.com/hashicorp/terraform-plugin-testing/tfjsonpath"
)
func main() {
// A typical test would accept *testing.T as a function parameter, for instance `func TestSomething(t *testing.T) { ... }`.
t := &testing.T{}
t.Parallel()
resource.Test(t, resource.TestCase{
// Provider definition omitted.
Steps: []resource.TestStep{
{
Config: `resource "test_resource" "one" {
bool_attribute = true
}
`,
ConfigStateChecks: []statecheck.StateCheck{
statecheck.ExpectKnownValue(
"test_resource.one",
tfjsonpath.New("bool_attribute"),
knownvalue.Bool(true),
),
},
},
},
})
}
Output:
func ExpectSensitiveValue ¶
func ExpectSensitiveValue(resourceAddress string, attributePath tfjsonpath.Path) StateCheck
ExpectSensitiveValue returns a state check that asserts that the specified attribute at the given resource has a sensitive value.
Due to implementation differences between the terraform-plugin-sdk and the terraform-plugin-framework, representation of sensitive values may differ. For example, terraform-plugin-sdk based providers may have less precise representations of sensitive values, such as marking whole maps as sensitive rather than individual element values.