github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/ignition/resource_ignition_config_test.go (about) 1 package ignition 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "regexp" 7 "testing" 8 9 "github.com/coreos/ignition/config/types" 10 "github.com/hashicorp/terraform/helper/resource" 11 "github.com/hashicorp/terraform/terraform" 12 ) 13 14 func TestIngnitionFileReplace(t *testing.T) { 15 testIgnition(t, ` 16 data "ignition_config" "test" { 17 replace { 18 source = "foo" 19 verification = "sha512-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" 20 } 21 } 22 `, func(c *types.Config) error { 23 r := c.Ignition.Config.Replace 24 if r == nil { 25 return fmt.Errorf("unable to find replace config") 26 } 27 28 if r.Source.String() != "foo" { 29 return fmt.Errorf("config.replace.source, found %q", r.Source) 30 } 31 32 if r.Verification.Hash.Sum != "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" { 33 return fmt.Errorf("config.replace.verification, found %q", r.Verification.Hash) 34 } 35 36 return nil 37 }) 38 } 39 40 func TestIngnitionFileAppend(t *testing.T) { 41 testIgnition(t, ` 42 data "ignition_config" "test" { 43 append { 44 source = "foo" 45 verification = "sha512-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" 46 } 47 48 append { 49 source = "foo" 50 verification = "sha512-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" 51 } 52 } 53 `, func(c *types.Config) error { 54 a := c.Ignition.Config.Append 55 if len(a) != 2 { 56 return fmt.Errorf("unable to find append config, expected 2") 57 } 58 59 if a[0].Source.String() != "foo" { 60 return fmt.Errorf("config.replace.source, found %q", a[0].Source) 61 } 62 63 if a[0].Verification.Hash.Sum != "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" { 64 return fmt.Errorf("config.replace.verification, found %q", a[0].Verification.Hash) 65 } 66 67 return nil 68 }) 69 } 70 71 func testIgnitionError(t *testing.T, input string, expectedErr *regexp.Regexp) { 72 resource.Test(t, resource.TestCase{ 73 Providers: testProviders, 74 Steps: []resource.TestStep{ 75 { 76 Config: fmt.Sprintf(testTemplate, input), 77 ExpectError: expectedErr, 78 }, 79 }, 80 }) 81 } 82 83 func testIgnition(t *testing.T, input string, assert func(*types.Config) error) { 84 check := func(s *terraform.State) error { 85 got := s.RootModule().Outputs["rendered"].Value.(string) 86 87 c := &types.Config{} 88 err := json.Unmarshal([]byte(got), c) 89 if err != nil { 90 return err 91 } 92 93 return assert(c) 94 } 95 96 resource.Test(t, resource.TestCase{ 97 Providers: testProviders, 98 Steps: []resource.TestStep{ 99 { 100 Config: fmt.Sprintf(testTemplate, input), 101 Check: check, 102 }, 103 }, 104 }) 105 } 106 107 var testTemplate = ` 108 %s 109 110 output "rendered" { 111 value = "${data.ignition_config.test.rendered}" 112 } 113 114 `