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  }