github.com/r3labs/terraform@v0.8.4/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 := &ConfigTransformerOld{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 := &ConfigTransformerOld{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 `