github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/template/datasource_cloudinit_config_test.go (about)

     1  package template
     2  
     3  import (
     4  	"regexp"
     5  	"testing"
     6  
     7  	r "github.com/hashicorp/terraform/helper/resource"
     8  )
     9  
    10  func TestRender(t *testing.T) {
    11  	testCases := []struct {
    12  		ResourceBlock string
    13  		Expected      string
    14  	}{
    15  		{
    16  			`data "template_cloudinit_config" "foo" {
    17  				gzip = false
    18  				base64_encode = false
    19  
    20  				part {
    21  					content_type = "text/x-shellscript"
    22  					content = "baz"
    23  				}
    24  			}`,
    25  			"Content-Type: multipart/mixed; boundary=\"MIMEBOUNDARY\"\nMIME-Version: 1.0\r\n\r\n--MIMEBOUNDARY\r\nContent-Transfer-Encoding: 7bit\r\nContent-Type: text/x-shellscript\r\nMime-Version: 1.0\r\n\r\nbaz\r\n--MIMEBOUNDARY--\r\n",
    26  		},
    27  		{
    28  			`data "template_cloudinit_config" "foo" {
    29  				gzip = false
    30  				base64_encode = false
    31  
    32  				part {
    33  					content_type = "text/x-shellscript"
    34  					content = "baz"
    35  					filename = "foobar.sh"
    36  				}
    37  			}`,
    38  			"Content-Type: multipart/mixed; boundary=\"MIMEBOUNDARY\"\nMIME-Version: 1.0\r\n\r\n--MIMEBOUNDARY\r\nContent-Disposition: attachment; filename=\"foobar.sh\"\r\nContent-Transfer-Encoding: 7bit\r\nContent-Type: text/x-shellscript\r\nMime-Version: 1.0\r\n\r\nbaz\r\n--MIMEBOUNDARY--\r\n",
    39  		},
    40  		{
    41  			`data "template_cloudinit_config" "foo" {
    42  				gzip = false
    43  				base64_encode = false
    44  
    45  				part {
    46  					content_type = "text/x-shellscript"
    47  					content = "baz"
    48  				}
    49  				part {
    50  					content_type = "text/x-shellscript"
    51  					content = "ffbaz"
    52  				}
    53  			}`,
    54  			"Content-Type: multipart/mixed; boundary=\"MIMEBOUNDARY\"\nMIME-Version: 1.0\r\n\r\n--MIMEBOUNDARY\r\nContent-Transfer-Encoding: 7bit\r\nContent-Type: text/x-shellscript\r\nMime-Version: 1.0\r\n\r\nbaz\r\n--MIMEBOUNDARY\r\nContent-Transfer-Encoding: 7bit\r\nContent-Type: text/x-shellscript\r\nMime-Version: 1.0\r\n\r\nffbaz\r\n--MIMEBOUNDARY--\r\n",
    55  		},
    56  	}
    57  
    58  	for _, tt := range testCases {
    59  		r.UnitTest(t, r.TestCase{
    60  			Providers: testProviders,
    61  			Steps: []r.TestStep{
    62  				{
    63  					Config: tt.ResourceBlock,
    64  					Check: r.ComposeTestCheckFunc(
    65  						r.TestCheckResourceAttr("data.template_cloudinit_config.foo", "rendered", tt.Expected),
    66  					),
    67  				},
    68  			},
    69  		})
    70  	}
    71  }
    72  
    73  // From GH-13572, Correctly handle panic on a misconfigured cloudinit part
    74  func TestRender_handlePanic(t *testing.T) {
    75  	r.UnitTest(t, r.TestCase{
    76  		Providers: testProviders,
    77  		Steps: []r.TestStep{
    78  			{
    79  				Config:      testCloudInitConfig_misconfiguredParts,
    80  				ExpectError: regexp.MustCompile("Unable to parse parts in cloudinit resource declaration"),
    81  			},
    82  		},
    83  	})
    84  }
    85  
    86  var testCloudInitConfig_misconfiguredParts = `
    87  data "template_cloudinit_config" "foo" {
    88    part {
    89      content = ""
    90    }
    91  }
    92  `