github.com/homburg/packer@v0.6.1-0.20140528012651-1dcaf1716848/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  }