github.com/ns1/terraform@v0.7.10-0.20161109153551-8949419bef40/terraform/transform_provisioner_test.go (about)

     1  package terraform
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/terraform/dag"
     8  )
     9  
    10  func TestMissingProvisionerTransformer(t *testing.T) {
    11  	mod := testModule(t, "transform-provisioner-basic")
    12  
    13  	g := Graph{Path: RootModulePath}
    14  	{
    15  		tf := &ConfigTransformer{Module: mod}
    16  		if err := tf.Transform(&g); err != nil {
    17  			t.Fatalf("err: %s", err)
    18  		}
    19  	}
    20  
    21  	{
    22  		transform := &MissingProvisionerTransformer{Provisioners: []string{"shell"}}
    23  		if err := transform.Transform(&g); err != nil {
    24  			t.Fatalf("err: %s", err)
    25  		}
    26  	}
    27  
    28  	{
    29  		transform := &ProvisionerTransformer{}
    30  		if err := transform.Transform(&g); err != nil {
    31  			t.Fatalf("err: %s", err)
    32  		}
    33  	}
    34  
    35  	actual := strings.TrimSpace(g.String())
    36  	expected := strings.TrimSpace(testTransformMissingProvisionerBasicStr)
    37  	if actual != expected {
    38  		t.Fatalf("bad:\n\n%s", actual)
    39  	}
    40  }
    41  
    42  func TestMissingProvisionerTransformer_module(t *testing.T) {
    43  	mod := testModule(t, "transform-provisioner-module")
    44  
    45  	g := Graph{Path: RootModulePath}
    46  	{
    47  		concreteResource := func(a *NodeAbstractResource) dag.Vertex {
    48  			return a
    49  		}
    50  
    51  		var state State
    52  		state.init()
    53  		state.Modules = []*ModuleState{
    54  			&ModuleState{
    55  				Path: []string{"root"},
    56  				Resources: map[string]*ResourceState{
    57  					"aws_instance.foo": &ResourceState{
    58  						Primary: &InstanceState{ID: "foo"},
    59  					},
    60  				},
    61  			},
    62  
    63  			&ModuleState{
    64  				Path: []string{"root", "child"},
    65  				Resources: map[string]*ResourceState{
    66  					"aws_instance.foo": &ResourceState{
    67  						Primary: &InstanceState{ID: "foo"},
    68  					},
    69  				},
    70  			},
    71  		}
    72  
    73  		tf := &StateTransformer{
    74  			Concrete: concreteResource,
    75  			State:    &state,
    76  		}
    77  		if err := tf.Transform(&g); err != nil {
    78  			t.Fatalf("err: %s", err)
    79  		}
    80  	}
    81  
    82  	{
    83  		transform := &AttachResourceConfigTransformer{Module: mod}
    84  		if err := transform.Transform(&g); err != nil {
    85  			t.Fatalf("err: %s", err)
    86  		}
    87  	}
    88  
    89  	{
    90  		transform := &MissingProvisionerTransformer{Provisioners: []string{"shell"}}
    91  		if err := transform.Transform(&g); err != nil {
    92  			t.Fatalf("err: %s", err)
    93  		}
    94  	}
    95  
    96  	{
    97  		transform := &ProvisionerTransformer{}
    98  		if err := transform.Transform(&g); err != nil {
    99  			t.Fatalf("err: %s", err)
   100  		}
   101  	}
   102  
   103  	actual := strings.TrimSpace(g.String())
   104  	expected := strings.TrimSpace(testTransformMissingProvisionerModuleStr)
   105  	if actual != expected {
   106  		t.Fatalf("bad:\n\n%s", actual)
   107  	}
   108  }
   109  
   110  func TestCloseProvisionerTransformer(t *testing.T) {
   111  	mod := testModule(t, "transform-provisioner-basic")
   112  
   113  	g := Graph{Path: RootModulePath}
   114  	{
   115  		tf := &ConfigTransformer{Module: mod}
   116  		if err := tf.Transform(&g); err != nil {
   117  			t.Fatalf("err: %s", err)
   118  		}
   119  	}
   120  
   121  	{
   122  		transform := &MissingProvisionerTransformer{Provisioners: []string{"shell"}}
   123  		if err := transform.Transform(&g); err != nil {
   124  			t.Fatalf("err: %s", err)
   125  		}
   126  	}
   127  
   128  	{
   129  		transform := &ProvisionerTransformer{}
   130  		if err := transform.Transform(&g); err != nil {
   131  			t.Fatalf("err: %s", err)
   132  		}
   133  	}
   134  
   135  	{
   136  		transform := &CloseProvisionerTransformer{}
   137  		if err := transform.Transform(&g); err != nil {
   138  			t.Fatalf("err: %s", err)
   139  		}
   140  	}
   141  
   142  	actual := strings.TrimSpace(g.String())
   143  	expected := strings.TrimSpace(testTransformCloseProvisionerBasicStr)
   144  	if actual != expected {
   145  		t.Fatalf("bad:\n\n%s", actual)
   146  	}
   147  }
   148  func TestGraphNodeProvisioner_impl(t *testing.T) {
   149  	var _ dag.Vertex = new(graphNodeProvisioner)
   150  	var _ dag.NamedVertex = new(graphNodeProvisioner)
   151  	var _ GraphNodeProvisioner = new(graphNodeProvisioner)
   152  }
   153  
   154  func TestGraphNodeProvisioner_ProvisionerName(t *testing.T) {
   155  	n := &graphNodeProvisioner{ProvisionerNameValue: "foo"}
   156  	if v := n.ProvisionerName(); v != "foo" {
   157  		t.Fatalf("bad: %#v", v)
   158  	}
   159  }
   160  
   161  const testTransformMissingProvisionerBasicStr = `
   162  aws_instance.web
   163    provisioner.shell
   164  provisioner.shell
   165  `
   166  
   167  const testTransformMissingProvisionerModuleStr = `
   168  aws_instance.foo
   169    provisioner.shell
   170  module.child.aws_instance.foo
   171    module.child.provisioner.shell
   172  module.child.provisioner.shell
   173  provisioner.shell
   174  `
   175  
   176  const testTransformCloseProvisionerBasicStr = `
   177  aws_instance.web
   178    provisioner.shell
   179  provisioner.shell
   180  provisioner.shell (close)
   181    aws_instance.web
   182  `