github.com/aspring/packer@v0.8.1-0.20150629211158-9db281ac0f89/provisioner/puppet-masterless/provisioner_test.go (about) 1 package puppetmasterless 2 3 import ( 4 "github.com/mitchellh/packer/packer" 5 "io/ioutil" 6 "os" 7 "testing" 8 ) 9 10 func testConfig() map[string]interface{} { 11 tf, err := ioutil.TempFile("", "packer") 12 if err != nil { 13 panic(err) 14 } 15 16 return map[string]interface{}{ 17 "manifest_file": tf.Name(), 18 } 19 } 20 21 func TestProvisioner_Impl(t *testing.T) { 22 var raw interface{} 23 raw = &Provisioner{} 24 if _, ok := raw.(packer.Provisioner); !ok { 25 t.Fatalf("must be a Provisioner") 26 } 27 } 28 29 func TestProvisionerPrepare_hieraConfigPath(t *testing.T) { 30 config := testConfig() 31 32 delete(config, "hiera_config_path") 33 p := new(Provisioner) 34 err := p.Prepare(config) 35 if err != nil { 36 t.Fatalf("err: %s", err) 37 } 38 39 // Test with a good one 40 tf, err := ioutil.TempFile("", "packer") 41 if err != nil { 42 t.Fatalf("error tempfile: %s", err) 43 } 44 defer os.Remove(tf.Name()) 45 46 config["hiera_config_path"] = tf.Name() 47 p = new(Provisioner) 48 err = p.Prepare(config) 49 if err != nil { 50 t.Fatalf("err: %s", err) 51 } 52 } 53 54 func TestProvisionerPrepare_manifestFile(t *testing.T) { 55 config := testConfig() 56 57 delete(config, "manifest_file") 58 p := new(Provisioner) 59 err := p.Prepare(config) 60 if err == nil { 61 t.Fatal("should be an error") 62 } 63 64 // Test with a good one 65 tf, err := ioutil.TempFile("", "packer") 66 if err != nil { 67 t.Fatalf("error tempfile: %s", err) 68 } 69 defer os.Remove(tf.Name()) 70 71 config["manifest_file"] = tf.Name() 72 p = new(Provisioner) 73 err = p.Prepare(config) 74 if err != nil { 75 t.Fatalf("err: %s", err) 76 } 77 } 78 79 func TestProvisionerPrepare_manifestDir(t *testing.T) { 80 config := testConfig() 81 82 delete(config, "manifestdir") 83 p := new(Provisioner) 84 err := p.Prepare(config) 85 if err != nil { 86 t.Fatalf("err: %s", err) 87 } 88 89 // Test with a good one 90 td, err := ioutil.TempDir("", "packer") 91 if err != nil { 92 t.Fatalf("error: %s", err) 93 } 94 defer os.RemoveAll(td) 95 96 config["manifest_dir"] = td 97 p = new(Provisioner) 98 err = p.Prepare(config) 99 if err != nil { 100 t.Fatalf("err: %s", err) 101 } 102 } 103 104 func TestProvisionerPrepare_modulePaths(t *testing.T) { 105 config := testConfig() 106 107 delete(config, "module_paths") 108 p := new(Provisioner) 109 err := p.Prepare(config) 110 if err != nil { 111 t.Fatalf("err: %s", err) 112 } 113 114 // Test with bad paths 115 config["module_paths"] = []string{"i-should-not-exist"} 116 p = new(Provisioner) 117 err = p.Prepare(config) 118 if err == nil { 119 t.Fatal("should be an error") 120 } 121 122 // Test with a good one 123 td, err := ioutil.TempDir("", "packer") 124 if err != nil { 125 t.Fatalf("error: %s", err) 126 } 127 defer os.RemoveAll(td) 128 129 config["module_paths"] = []string{td} 130 p = new(Provisioner) 131 err = p.Prepare(config) 132 if err != nil { 133 t.Fatalf("err: %s", err) 134 } 135 } 136 137 func TestProvisionerPrepare_facterFacts(t *testing.T) { 138 config := testConfig() 139 140 delete(config, "facter") 141 p := new(Provisioner) 142 err := p.Prepare(config) 143 if err != nil { 144 t.Fatalf("err: %s", err) 145 } 146 147 // Test with malformed fact 148 config["facter"] = "fact=stringified" 149 p = new(Provisioner) 150 err = p.Prepare(config) 151 if err == nil { 152 t.Fatal("should be an error") 153 } 154 155 // Test with a good one 156 td, err := ioutil.TempDir("", "packer") 157 if err != nil { 158 t.Fatalf("error: %s", err) 159 } 160 defer os.RemoveAll(td) 161 162 facts := make(map[string]string) 163 facts["fact_name"] = "fact_value" 164 config["facter"] = facts 165 166 p = new(Provisioner) 167 err = p.Prepare(config) 168 if err != nil { 169 t.Fatalf("err: %s", err) 170 } 171 172 // Make sure the default facts are present 173 delete(config, "facter") 174 p = new(Provisioner) 175 err = p.Prepare(config) 176 if p.config.Facter == nil { 177 t.Fatalf("err: Default facts are not set in the Puppet provisioner!") 178 } 179 }