github.com/graywolf-at-work-2/terraform-vendor@v1.4.5/internal/builtin/provisioners/file/resource_provisioner_test.go (about) 1 package file 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/hashicorp/terraform/internal/provisioners" 8 "github.com/zclconf/go-cty/cty" 9 ) 10 11 func TestResourceProvider_Validate_good_source(t *testing.T) { 12 v := cty.ObjectVal(map[string]cty.Value{ 13 "source": cty.StringVal("/tmp/foo"), 14 "destination": cty.StringVal("/tmp/bar"), 15 }) 16 17 resp := New().ValidateProvisionerConfig(provisioners.ValidateProvisionerConfigRequest{ 18 Config: v, 19 }) 20 21 if len(resp.Diagnostics) > 0 { 22 t.Fatal(resp.Diagnostics.ErrWithWarnings()) 23 } 24 } 25 26 func TestResourceProvider_Validate_good_content(t *testing.T) { 27 v := cty.ObjectVal(map[string]cty.Value{ 28 "content": cty.StringVal("value to copy"), 29 "destination": cty.StringVal("/tmp/bar"), 30 }) 31 32 resp := New().ValidateProvisionerConfig(provisioners.ValidateProvisionerConfigRequest{ 33 Config: v, 34 }) 35 36 if len(resp.Diagnostics) > 0 { 37 t.Fatal(resp.Diagnostics.ErrWithWarnings()) 38 } 39 } 40 41 func TestResourceProvider_Validate_good_unknown_variable_value(t *testing.T) { 42 v := cty.ObjectVal(map[string]cty.Value{ 43 "content": cty.UnknownVal(cty.String), 44 "destination": cty.StringVal("/tmp/bar"), 45 }) 46 47 resp := New().ValidateProvisionerConfig(provisioners.ValidateProvisionerConfigRequest{ 48 Config: v, 49 }) 50 51 if len(resp.Diagnostics) > 0 { 52 t.Fatal(resp.Diagnostics.ErrWithWarnings()) 53 } 54 } 55 56 func TestResourceProvider_Validate_bad_not_destination(t *testing.T) { 57 v := cty.ObjectVal(map[string]cty.Value{ 58 "source": cty.StringVal("nope"), 59 }) 60 61 resp := New().ValidateProvisionerConfig(provisioners.ValidateProvisionerConfigRequest{ 62 Config: v, 63 }) 64 65 if !resp.Diagnostics.HasErrors() { 66 t.Fatal("Should have errors") 67 } 68 } 69 70 func TestResourceProvider_Validate_bad_no_source(t *testing.T) { 71 v := cty.ObjectVal(map[string]cty.Value{ 72 "destination": cty.StringVal("/tmp/bar"), 73 }) 74 75 resp := New().ValidateProvisionerConfig(provisioners.ValidateProvisionerConfigRequest{ 76 Config: v, 77 }) 78 79 if !resp.Diagnostics.HasErrors() { 80 t.Fatal("Should have errors") 81 } 82 } 83 84 func TestResourceProvider_Validate_bad_to_many_src(t *testing.T) { 85 v := cty.ObjectVal(map[string]cty.Value{ 86 "source": cty.StringVal("nope"), 87 "content": cty.StringVal("vlue to copy"), 88 "destination": cty.StringVal("/tmp/bar"), 89 }) 90 91 resp := New().ValidateProvisionerConfig(provisioners.ValidateProvisionerConfigRequest{ 92 Config: v, 93 }) 94 95 if !resp.Diagnostics.HasErrors() { 96 t.Fatal("Should have errors") 97 } 98 } 99 100 // Validate that Stop can Close can be called even when not provisioning. 101 func TestResourceProvisioner_StopClose(t *testing.T) { 102 p := New() 103 p.Stop() 104 p.Close() 105 } 106 107 func TestResourceProvisioner_connectionRequired(t *testing.T) { 108 p := New() 109 resp := p.ProvisionResource(provisioners.ProvisionResourceRequest{}) 110 if !resp.Diagnostics.HasErrors() { 111 t.Fatal("expected error") 112 } 113 114 got := resp.Diagnostics.Err().Error() 115 if !strings.Contains(got, "Missing connection") { 116 t.Fatalf("expected 'Missing connection' error: got %q", got) 117 } 118 }