| package e2etest |
| |
| import ( |
| "path/filepath" |
| "strings" |
| "testing" |
| |
| "github.com/hashicorp/terraform/internal/addrs" |
| "github.com/hashicorp/terraform/internal/e2e" |
| ) |
| |
| func TestTerraformProviderData(t *testing.T) { |
| |
| fixturePath := filepath.Join("testdata", "terraform-managed-data") |
| tf := e2e.NewBinary(t, terraformBin, fixturePath) |
| |
| _, stderr, err := tf.Run("init", "-input=false") |
| if err != nil { |
| t.Fatalf("unexpected init error: %s\nstderr:\n%s", err, stderr) |
| } |
| |
| stdout, stderr, err := tf.Run("plan", "-out=tfplan", "-input=false") |
| if err != nil { |
| t.Fatalf("unexpected plan error: %s\nstderr:\n%s", err, stderr) |
| } |
| |
| if !strings.Contains(stdout, "4 to add, 0 to change, 0 to destroy") { |
| t.Errorf("incorrect plan tally; want 4 to add:\n%s", stdout) |
| } |
| |
| stdout, stderr, err = tf.Run("apply", "-input=false", "tfplan") |
| if err != nil { |
| t.Fatalf("unexpected apply error: %s\nstderr:\n%s", err, stderr) |
| } |
| |
| if !strings.Contains(stdout, "Resources: 4 added, 0 changed, 0 destroyed") { |
| t.Errorf("incorrect apply tally; want 4 added:\n%s", stdout) |
| } |
| |
| state, err := tf.LocalState() |
| if err != nil { |
| t.Fatalf("failed to read state file: %s", err) |
| } |
| |
| // we'll check the final output to validate the resources |
| d := state.Module(addrs.RootModuleInstance).OutputValues["d"].Value |
| input := d.GetAttr("input") |
| output := d.GetAttr("output") |
| if input.IsNull() { |
| t.Fatal("missing input from resource d") |
| } |
| if !input.RawEquals(output) { |
| t.Fatalf("input %#v does not equal output %#v\n", input, output) |
| } |
| } |