From 0592d861850c60f84ff5d66eaa11e472c66eb6b5 Mon Sep 17 00:00:00 2001 From: Brian Flad Date: Wed, 13 Apr 2022 12:50:20 -0400 Subject: [PATCH] Add acceptance test for TF_VAR environment variable usage Reference: https://github.com/hashicorp/terraform-plugin-sdk/issues/935 With github.com/hashicorp/terraform-plugin-sdk/v2@v2.13.0: ```console $ TF_ACC=1 go test -count=1 -run='TestAccFrameworkResourceUser_TF_VAR_Environment_Variable' -v ./internal/frameworkprovider/ === RUN TestAccFrameworkResourceUser_TF_VAR_Environment_Variable resource_user_test.go:117: Step 1/1 error: Error running pre-apply refresh: variable "framework_user_name" was required but not supplied --- FAIL: TestAccFrameworkResourceUser_TF_VAR_Environment_Variable (0.56s) FAIL FAIL github.com/hashicorp/terraform-provider-corner/internal/frameworkprovider 1.324s FAIL ``` Passes with https://github.com/hashicorp/terraform-plugin-sdk/pull/937. --- .../frameworkprovider/resource_user_test.go | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/internal/frameworkprovider/resource_user_test.go b/internal/frameworkprovider/resource_user_test.go index 8e4360e..7148da5 100644 --- a/internal/frameworkprovider/resource_user_test.go +++ b/internal/frameworkprovider/resource_user_test.go @@ -109,6 +109,40 @@ func TestAccFrameworkResourceUser_interpolateLanguage(t *testing.T) { }) } +// Reference: https://github.com/hashicorp/terraform-plugin-sdk/issues/935 +func TestAccFrameworkResourceUser_TF_VAR_Environment_Variable(t *testing.T) { + expectedUserName := "Ford Prefect" + t.Setenv("TF_VAR_framework_user_name", expectedUserName) + + resource.UnitTest(t, resource.TestCase{ + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error){ + "framework": func() (tfprotov6.ProviderServer, error) { + return tfsdk.NewProtocol6Server(New()), nil + }, + }, + Steps: []resource.TestStep{ + { + Config: ` +# Sourced via TF_VAR_framework_user_name environment variable +variable "framework_user_name" { + type = string +} + +resource "framework_user" "test" { + email = "ford@prefect.co" + name = var.framework_user_name + age = 200 + id = "h" +} +`, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("framework_user.test", "name", expectedUserName), + ), + }, + }, + }) +} + const configResourceUserBasic = ` resource "framework_user" "foo" { email = "ford@prefect.co"