github.com/ezbercih/terraform@v0.1.1-0.20140729011846-3c33865e0839/rpc/resource_provisioner_test.go (about) 1 package rpc 2 3 import ( 4 "errors" 5 "reflect" 6 "testing" 7 8 "github.com/hashicorp/terraform/terraform" 9 ) 10 11 func TestResourceProvisioner_impl(t *testing.T) { 12 var _ terraform.ResourceProvisioner = new(ResourceProvisioner) 13 } 14 15 func TestResourceProvisioner_apply(t *testing.T) { 16 p := new(terraform.MockResourceProvisioner) 17 client, server := testClientServer(t) 18 name, err := Register(server, p) 19 if err != nil { 20 t.Fatalf("err: %s", err) 21 } 22 provisioner := &ResourceProvisioner{Client: client, Name: name} 23 24 // Apply 25 state := &terraform.ResourceState{} 26 conf := &terraform.ResourceConfig{} 27 err = provisioner.Apply(state, conf) 28 if !p.ApplyCalled { 29 t.Fatal("apply should be called") 30 } 31 if !reflect.DeepEqual(p.ApplyConfig, conf) { 32 t.Fatalf("bad: %#v", p.ApplyConfig) 33 } 34 if err != nil { 35 t.Fatalf("bad: %#v", err) 36 } 37 } 38 39 func TestResourceProvisioner_validate(t *testing.T) { 40 p := new(terraform.MockResourceProvisioner) 41 client, server := testClientServer(t) 42 name, err := Register(server, p) 43 if err != nil { 44 t.Fatalf("err: %s", err) 45 } 46 provisioner := &ResourceProvisioner{Client: client, Name: name} 47 48 // Configure 49 config := &terraform.ResourceConfig{ 50 Raw: map[string]interface{}{"foo": "bar"}, 51 } 52 w, e := provisioner.Validate(config) 53 if !p.ValidateCalled { 54 t.Fatal("configure should be called") 55 } 56 if !reflect.DeepEqual(p.ValidateConfig, config) { 57 t.Fatalf("bad: %#v", p.ValidateConfig) 58 } 59 if w != nil { 60 t.Fatalf("bad: %#v", w) 61 } 62 if e != nil { 63 t.Fatalf("bad: %#v", e) 64 } 65 } 66 67 func TestResourceProvisioner_validate_errors(t *testing.T) { 68 p := new(terraform.MockResourceProvisioner) 69 p.ValidateReturnErrors = []error{errors.New("foo")} 70 71 client, server := testClientServer(t) 72 name, err := Register(server, p) 73 if err != nil { 74 t.Fatalf("err: %s", err) 75 } 76 provisioner := &ResourceProvisioner{Client: client, Name: name} 77 78 // Configure 79 config := &terraform.ResourceConfig{ 80 Raw: map[string]interface{}{"foo": "bar"}, 81 } 82 w, e := provisioner.Validate(config) 83 if !p.ValidateCalled { 84 t.Fatal("configure should be called") 85 } 86 if !reflect.DeepEqual(p.ValidateConfig, config) { 87 t.Fatalf("bad: %#v", p.ValidateConfig) 88 } 89 if w != nil { 90 t.Fatalf("bad: %#v", w) 91 } 92 93 if len(e) != 1 { 94 t.Fatalf("bad: %#v", e) 95 } 96 if e[0].Error() != "foo" { 97 t.Fatalf("bad: %#v", e) 98 } 99 } 100 101 func TestResourceProvisioner_validate_warns(t *testing.T) { 102 p := new(terraform.MockResourceProvisioner) 103 p.ValidateReturnWarns = []string{"foo"} 104 105 client, server := testClientServer(t) 106 name, err := Register(server, p) 107 if err != nil { 108 t.Fatalf("err: %s", err) 109 } 110 provisioner := &ResourceProvisioner{Client: client, Name: name} 111 112 // Configure 113 config := &terraform.ResourceConfig{ 114 Raw: map[string]interface{}{"foo": "bar"}, 115 } 116 w, e := provisioner.Validate(config) 117 if !p.ValidateCalled { 118 t.Fatal("configure should be called") 119 } 120 if !reflect.DeepEqual(p.ValidateConfig, config) { 121 t.Fatalf("bad: %#v", p.ValidateConfig) 122 } 123 if e != nil { 124 t.Fatalf("bad: %#v", e) 125 } 126 127 expected := []string{"foo"} 128 if !reflect.DeepEqual(w, expected) { 129 t.Fatalf("bad: %#v", w) 130 } 131 }