github.com/sj26/packer-post-processor-tfvars@v0.1.0/post-processor_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "io/ioutil" 7 "os" 8 "testing" 9 10 awscommon "github.com/mitchellh/packer/builder/amazon/common" 11 "github.com/mitchellh/packer/packer" 12 ) 13 14 func TestPostProcessor_ImplementsPostProcessor(t *testing.T) { 15 var _ packer.PostProcessor = new(PostProcessor) 16 } 17 18 func TestPostProcessor_Export(t *testing.T) { 19 postProcessor := testPP(t) 20 21 tempDir, err := ioutil.TempDir("", "") 22 if err != nil { 23 t.Error(err) 24 } 25 defer os.RemoveAll(tempDir) 26 27 previousDir, err := os.Getwd() 28 if err != nil { 29 t.Error(err) 30 } 31 32 err = os.Chdir(tempDir) 33 if err != nil { 34 t.Error(err) 35 } 36 defer os.Chdir(previousDir) 37 38 _, _, err = postProcessor.PostProcess(testUi(), testArtifact()) 39 if err != nil { 40 t.Error("Couldn't post-process artifact: ", err) 41 } 42 43 if _, err := os.Stat("packer.tfvars"); err != nil { 44 t.Error("Expected packer.tfvars to be created") 45 } 46 47 contents, err := ioutil.ReadFile("packer.tfvars") 48 if err != nil { 49 t.Error(err) 50 } 51 52 var vars map[string]string 53 err = json.Unmarshal(contents, &vars) 54 if err != nil { 55 t.Error("Couldn't unmarshal JSON: ", err) 56 } 57 58 if _, ok := vars["packer-east-test"]; !ok { 59 t.Error("Expected a map key `packer-east-test`: ", vars) 60 } 61 62 if vars["packer-east-test"] != "foo" { 63 t.Error("Expected map key `packer-east-test` to be `foo`: ", vars) 64 } 65 66 if _, ok := vars["packer-west-test"]; !ok { 67 t.Error("Expected a map key `packer-west-test`: ", vars) 68 } 69 70 if vars["packer-west-test"] != "bar" { 71 t.Error("Expected map key `packer-west-test` to be `bar`: ", vars) 72 } 73 } 74 75 // Helpers 76 77 func testConfig() map[string]interface{} { 78 return map[string]interface{}{ 79 "packer_build_name": "test", 80 } 81 } 82 83 func testPP(t *testing.T) *PostProcessor { 84 var p PostProcessor 85 if err := p.Configure(testConfig()); err != nil { 86 t.Fatalf("err: %s", err) 87 } 88 return &p 89 } 90 91 func testUi() *packer.BasicUi { 92 return &packer.BasicUi{ 93 Reader: new(bytes.Buffer), 94 Writer: new(bytes.Buffer), 95 } 96 } 97 98 func testArtifact() packer.Artifact { 99 artifact := &awscommon.Artifact{ 100 BuilderIdValue: "mitchellh.amazonebs", 101 Amis: map[string]string{ 102 "east": "foo", 103 "west": "bar", 104 }, 105 } 106 107 return artifact 108 }