github.com/askholme/packer@v0.7.2-0.20140924152349-70d9566a6852/provisioner/chef-client/provisioner_test.go (about) 1 package chefclient 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 8 "github.com/mitchellh/packer/packer" 9 ) 10 11 func testConfig() map[string]interface{} { 12 return map[string]interface{}{ 13 "server_url": "foo", 14 } 15 } 16 17 func TestProvisioner_Impl(t *testing.T) { 18 var raw interface{} 19 raw = &Provisioner{} 20 if _, ok := raw.(packer.Provisioner); !ok { 21 t.Fatalf("must be a Provisioner") 22 } 23 } 24 25 func TestProvisionerPrepare_chefEnvironment(t *testing.T) { 26 var p Provisioner 27 28 config := testConfig() 29 config["chef_environment"] = "some-env" 30 31 err := p.Prepare(config) 32 if err != nil { 33 t.Fatalf("err: %s", err) 34 } 35 36 if p.config.ChefEnvironment != "some-env" { 37 t.Fatalf("unexpected: %#v", p.config.ChefEnvironment) 38 } 39 } 40 41 func TestProvisionerPrepare_configTemplate(t *testing.T) { 42 var err error 43 var p Provisioner 44 45 // Test no config template 46 config := testConfig() 47 delete(config, "config_template") 48 err = p.Prepare(config) 49 if err != nil { 50 t.Fatalf("err: %s", err) 51 } 52 53 // Test with a file 54 tf, err := ioutil.TempFile("", "packer") 55 if err != nil { 56 t.Fatalf("err: %s", err) 57 } 58 defer os.Remove(tf.Name()) 59 60 config = testConfig() 61 config["config_template"] = tf.Name() 62 p = Provisioner{} 63 err = p.Prepare(config) 64 if err != nil { 65 t.Fatalf("err: %s", err) 66 } 67 68 // Test with a directory 69 td, err := ioutil.TempDir("", "packer") 70 if err != nil { 71 t.Fatalf("err: %s", err) 72 } 73 defer os.RemoveAll(td) 74 75 config = testConfig() 76 config["config_template"] = td 77 p = Provisioner{} 78 err = p.Prepare(config) 79 if err == nil { 80 t.Fatal("should have err") 81 } 82 } 83 84 func TestProvisionerPrepare_commands(t *testing.T) { 85 commands := []string{ 86 "execute_command", 87 "install_command", 88 } 89 90 for _, command := range commands { 91 var p Provisioner 92 93 // Test not set 94 config := testConfig() 95 delete(config, command) 96 err := p.Prepare(config) 97 if err != nil { 98 t.Fatalf("err: %s", err) 99 } 100 101 // Test invalid template 102 config = testConfig() 103 config[command] = "{{if NOPE}}" 104 err = p.Prepare(config) 105 if err == nil { 106 t.Fatal("should error") 107 } 108 109 // Test good template 110 config = testConfig() 111 config[command] = "{{.Foo}}" 112 err = p.Prepare(config) 113 if err != nil { 114 t.Fatalf("err: %s", err) 115 } 116 } 117 } 118 119 func TestProvisionerPrepare_serverUrl(t *testing.T) { 120 var p Provisioner 121 122 // Test not set 123 config := testConfig() 124 delete(config, "server_url") 125 err := p.Prepare(config) 126 if err == nil { 127 t.Fatal("should error") 128 } 129 130 // Test set 131 config = testConfig() 132 config["server_url"] = "foo" 133 err = p.Prepare(config) 134 if err != nil { 135 t.Fatalf("err: %s", err) 136 } 137 }