github.com/tonnydourado/packer@v0.6.1-0.20140701134019-5d0cd9676a37/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_configTemplate(t *testing.T) { 26 var err error 27 var p Provisioner 28 29 // Test no config template 30 config := testConfig() 31 delete(config, "config_template") 32 err = p.Prepare(config) 33 if err != nil { 34 t.Fatalf("err: %s", err) 35 } 36 37 // Test with a file 38 tf, err := ioutil.TempFile("", "packer") 39 if err != nil { 40 t.Fatalf("err: %s", err) 41 } 42 defer os.Remove(tf.Name()) 43 44 config = testConfig() 45 config["config_template"] = tf.Name() 46 p = Provisioner{} 47 err = p.Prepare(config) 48 if err != nil { 49 t.Fatalf("err: %s", err) 50 } 51 52 // Test with a directory 53 td, err := ioutil.TempDir("", "packer") 54 if err != nil { 55 t.Fatalf("err: %s", err) 56 } 57 defer os.RemoveAll(td) 58 59 config = testConfig() 60 config["config_template"] = td 61 p = Provisioner{} 62 err = p.Prepare(config) 63 if err == nil { 64 t.Fatal("should have err") 65 } 66 } 67 68 func TestProvisionerPrepare_commands(t *testing.T) { 69 commands := []string{ 70 "execute_command", 71 "install_command", 72 } 73 74 for _, command := range commands { 75 var p Provisioner 76 77 // Test not set 78 config := testConfig() 79 delete(config, command) 80 err := p.Prepare(config) 81 if err != nil { 82 t.Fatalf("err: %s", err) 83 } 84 85 // Test invalid template 86 config = testConfig() 87 config[command] = "{{if NOPE}}" 88 err = p.Prepare(config) 89 if err == nil { 90 t.Fatal("should error") 91 } 92 93 // Test good template 94 config = testConfig() 95 config[command] = "{{.Foo}}" 96 err = p.Prepare(config) 97 if err != nil { 98 t.Fatalf("err: %s", err) 99 } 100 } 101 } 102 103 func TestProvisionerPrepare_serverUrl(t *testing.T) { 104 var p Provisioner 105 106 // Test not set 107 config := testConfig() 108 delete(config, "server_url") 109 err := p.Prepare(config) 110 if err == nil { 111 t.Fatal("should error") 112 } 113 114 // Test set 115 config = testConfig() 116 config["server_url"] = "foo" 117 err = p.Prepare(config) 118 if err != nil { 119 t.Fatalf("err: %s", err) 120 } 121 }