github.com/pulumi/terraform@v1.4.0/pkg/builtin/provisioners/file/resource_provisioner_test.go (about)

     1  package file
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/pulumi/terraform/pkg/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  }