github.com/aspring/packer@v0.8.1-0.20150629211158-9db281ac0f89/provisioner/salt-masterless/provisioner_test.go (about) 1 package saltmasterless 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 return map[string]interface{}{ 12 "local_state_tree": os.TempDir(), 13 } 14 } 15 16 func TestProvisioner_Impl(t *testing.T) { 17 var raw interface{} 18 raw = &Provisioner{} 19 if _, ok := raw.(packer.Provisioner); !ok { 20 t.Fatalf("must be a Provisioner") 21 } 22 } 23 24 func TestProvisionerPrepare_Defaults(t *testing.T) { 25 var p Provisioner 26 config := testConfig() 27 28 err := p.Prepare(config) 29 if err != nil { 30 t.Fatalf("err: %s", err) 31 } 32 33 if p.config.TempConfigDir != DefaultTempConfigDir { 34 t.Errorf("unexpected temp config dir: %s", p.config.TempConfigDir) 35 } 36 } 37 38 func TestProvisionerPrepare_InvalidKey(t *testing.T) { 39 var p Provisioner 40 config := testConfig() 41 42 // Add a random key 43 config["i_should_not_be_valid"] = true 44 err := p.Prepare(config) 45 if err == nil { 46 t.Fatal("should have error") 47 } 48 } 49 50 func TestProvisionerPrepare_MinionConfig(t *testing.T) { 51 var p Provisioner 52 config := testConfig() 53 54 config["minion_config"] = "/i/dont/exist/i/think" 55 err := p.Prepare(config) 56 if err == nil { 57 t.Fatal("should have error") 58 } 59 60 tf, err := ioutil.TempFile("", "minion") 61 if err != nil { 62 t.Fatalf("error tempfile: %s", err) 63 } 64 defer os.Remove(tf.Name()) 65 66 config["minion_config"] = tf.Name() 67 err = p.Prepare(config) 68 if err != nil { 69 t.Fatalf("err: %s", err) 70 } 71 } 72 73 func TestProvisionerPrepare_LocalStateTree(t *testing.T) { 74 var p Provisioner 75 config := testConfig() 76 77 config["local_state_tree"] = "/i/dont/exist/i/think" 78 err := p.Prepare(config) 79 if err == nil { 80 t.Fatal("should have error") 81 } 82 83 config["local_state_tree"] = os.TempDir() 84 err = p.Prepare(config) 85 if err != nil { 86 t.Fatalf("err: %s", err) 87 } 88 } 89 90 func TestProvisionerPrepare_LocalPillarRoots(t *testing.T) { 91 var p Provisioner 92 config := testConfig() 93 94 config["local_pillar_roots"] = "/i/dont/exist/i/think" 95 err := p.Prepare(config) 96 if err == nil { 97 t.Fatal("should have error") 98 } 99 100 config["local_pillar_roots"] = os.TempDir() 101 err = p.Prepare(config) 102 if err != nil { 103 t.Fatalf("err: %s", err) 104 } 105 } 106 107 func TestProvisionerSudo(t *testing.T) { 108 var p Provisioner 109 config := testConfig() 110 111 err := p.Prepare(config) 112 if err != nil { 113 t.Fatalf("err: %s", err) 114 } 115 116 withSudo := p.sudo("echo hello") 117 if withSudo != "sudo echo hello" { 118 t.Fatalf("sudo command not generated correctly") 119 } 120 121 config["disable_sudo"] = true 122 err = p.Prepare(config) 123 if err != nil { 124 t.Fatalf("err: %s", err) 125 } 126 withoutSudo := p.sudo("echo hello") 127 if withoutSudo != "echo hello" { 128 t.Fatalf("sudo-less command not generated correctly") 129 } 130 }