github.com/cycloidio/terraform@v1.1.10-0.20220513142504-76d5c768dc63/command/e2etest/provisioner_test.go (about)

     1  package e2etest
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/cycloidio/terraform/e2e"
     8  )
     9  
    10  // TestProviderDevOverrides is a test that terraform can execute a 3rd party
    11  // provisioner plugin.
    12  func TestProvisioner(t *testing.T) {
    13  	t.Parallel()
    14  
    15  	// This test reaches out to releases.hashicorp.com to download the
    16  	// template and null providers, so it can only run if network access is
    17  	// allowed.
    18  	skipIfCannotAccessNetwork(t)
    19  
    20  	tf := e2e.NewBinary(terraformBin, "testdata/provisioner")
    21  	defer tf.Close()
    22  
    23  	//// INIT
    24  	_, stderr, err := tf.Run("init")
    25  	if err != nil {
    26  		t.Fatalf("unexpected init error: %s\nstderr:\n%s", err, stderr)
    27  	}
    28  
    29  	//// PLAN
    30  	_, stderr, err = tf.Run("plan", "-out=tfplan")
    31  	if err != nil {
    32  		t.Fatalf("unexpected plan error: %s\nstderr:\n%s", err, stderr)
    33  	}
    34  
    35  	//// APPLY
    36  	stdout, stderr, err := tf.Run("apply", "tfplan")
    37  	if err != nil {
    38  		t.Fatalf("unexpected apply error: %s\nstderr:\n%s", err, stderr)
    39  	}
    40  
    41  	if !strings.Contains(stdout, "HelloProvisioner") {
    42  		t.Fatalf("missing provisioner output:\n%s", stdout)
    43  	}
    44  }