github.com/mmcquillan/packer@v1.1.1-0.20171009221028-c85cf0483a5d/provisioner/ansible-local/provisioner_test.go (about) 1 package ansiblelocal 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "strings" 8 "testing" 9 10 "github.com/hashicorp/packer/packer" 11 ) 12 13 func testConfig() map[string]interface{} { 14 m := make(map[string]interface{}) 15 return m 16 } 17 18 func TestProvisioner_Impl(t *testing.T) { 19 var raw interface{} 20 raw = &Provisioner{} 21 if _, ok := raw.(packer.Provisioner); !ok { 22 t.Fatalf("must be a Provisioner") 23 } 24 } 25 26 func TestProvisionerPrepare_Defaults(t *testing.T) { 27 var p Provisioner 28 config := testConfig() 29 30 playbook_file, err := ioutil.TempFile("", "playbook") 31 if err != nil { 32 t.Fatalf("err: %s", err) 33 } 34 defer os.Remove(playbook_file.Name()) 35 36 config["playbook_file"] = playbook_file.Name() 37 err = p.Prepare(config) 38 if err != nil { 39 t.Fatalf("err: %s", err) 40 } 41 42 if !strings.HasPrefix(filepath.ToSlash(p.config.StagingDir), DefaultStagingDir) { 43 t.Fatalf("unexpected staging dir %s, expected %s", 44 p.config.StagingDir, DefaultStagingDir) 45 } 46 } 47 48 func TestProvisionerPrepare_PlaybookFile(t *testing.T) { 49 var p Provisioner 50 config := testConfig() 51 52 err := p.Prepare(config) 53 if err == nil { 54 t.Fatal("should have error") 55 } 56 57 config["playbook_file"] = "" 58 err = p.Prepare(config) 59 if err == nil { 60 t.Fatal("should have error") 61 } 62 63 playbook_file, err := ioutil.TempFile("", "playbook") 64 if err != nil { 65 t.Fatalf("err: %s", err) 66 } 67 defer os.Remove(playbook_file.Name()) 68 69 config["playbook_file"] = playbook_file.Name() 70 err = p.Prepare(config) 71 if err != nil { 72 t.Fatalf("err: %s", err) 73 } 74 } 75 76 func TestProvisionerPrepare_InventoryFile(t *testing.T) { 77 var p Provisioner 78 config := testConfig() 79 80 err := p.Prepare(config) 81 if err == nil { 82 t.Fatal("should have error") 83 } 84 85 config["playbook_file"] = "" 86 err = p.Prepare(config) 87 if err == nil { 88 t.Fatal("should have error") 89 } 90 91 playbook_file, err := ioutil.TempFile("", "playbook") 92 if err != nil { 93 t.Fatalf("err: %s", err) 94 } 95 defer os.Remove(playbook_file.Name()) 96 97 config["playbook_file"] = playbook_file.Name() 98 err = p.Prepare(config) 99 if err != nil { 100 t.Fatalf("err: %s", err) 101 } 102 103 inventory_file, err := ioutil.TempFile("", "inventory") 104 if err != nil { 105 t.Fatalf("err: %s", err) 106 } 107 defer os.Remove(inventory_file.Name()) 108 109 config["inventory_file"] = inventory_file.Name() 110 err = p.Prepare(config) 111 if err != nil { 112 t.Fatalf("err: %s", err) 113 } 114 } 115 116 func TestProvisionerPrepare_Dirs(t *testing.T) { 117 var p Provisioner 118 config := testConfig() 119 120 err := p.Prepare(config) 121 if err == nil { 122 t.Fatal("should have error") 123 } 124 125 config["playbook_file"] = "" 126 err = p.Prepare(config) 127 if err == nil { 128 t.Fatal("should have error") 129 } 130 131 playbook_file, err := ioutil.TempFile("", "playbook") 132 if err != nil { 133 t.Fatalf("err: %s", err) 134 } 135 defer os.Remove(playbook_file.Name()) 136 137 config["playbook_file"] = playbook_file.Name() 138 err = p.Prepare(config) 139 if err != nil { 140 t.Fatalf("err: %s", err) 141 } 142 143 config["playbook_paths"] = []string{playbook_file.Name()} 144 err = p.Prepare(config) 145 if err == nil { 146 t.Fatal("should error if playbook paths is not a dir") 147 } 148 149 config["playbook_paths"] = []string{os.TempDir()} 150 err = p.Prepare(config) 151 if err != nil { 152 t.Fatalf("err: %s", err) 153 } 154 155 config["role_paths"] = []string{playbook_file.Name()} 156 err = p.Prepare(config) 157 if err == nil { 158 t.Fatal("should error if role paths is not a dir") 159 } 160 161 config["role_paths"] = []string{os.TempDir()} 162 err = p.Prepare(config) 163 if err != nil { 164 t.Fatalf("err: %s", err) 165 } 166 167 config["group_vars"] = playbook_file.Name() 168 err = p.Prepare(config) 169 if err == nil { 170 t.Fatalf("should error if group_vars path is not a dir") 171 } 172 173 config["group_vars"] = os.TempDir() 174 err = p.Prepare(config) 175 if err != nil { 176 t.Fatalf("err: %s", err) 177 } 178 179 config["host_vars"] = playbook_file.Name() 180 err = p.Prepare(config) 181 if err == nil { 182 t.Fatalf("should error if host_vars path is not a dir") 183 } 184 185 config["host_vars"] = os.TempDir() 186 err = p.Prepare(config) 187 if err != nil { 188 t.Fatalf("err: %s", err) 189 } 190 }