github.com/askholme/packer@v0.7.2-0.20140924152349-70d9566a6852/builder/null/config_test.go (about)

     1  package null
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func testConfig() map[string]interface{} {
     8  	return map[string]interface{}{
     9  		"host":         "foo",
    10  		"ssh_username": "bar",
    11  		"ssh_password": "baz",
    12  	}
    13  }
    14  
    15  func testConfigStruct(t *testing.T) *Config {
    16  	c, warns, errs := NewConfig(testConfig())
    17  	if len(warns) > 0 {
    18  		t.Fatalf("bad: %#v", len(warns))
    19  	}
    20  	if errs != nil {
    21  		t.Fatalf("bad: %#v", errs)
    22  	}
    23  
    24  	return c
    25  }
    26  
    27  func testConfigErr(t *testing.T, warns []string, err error) {
    28  	if len(warns) > 0 {
    29  		t.Fatalf("bad: %#v", warns)
    30  	}
    31  	if err == nil {
    32  		t.Fatal("should error")
    33  	}
    34  }
    35  
    36  func testConfigOk(t *testing.T, warns []string, err error) {
    37  	if len(warns) > 0 {
    38  		t.Fatalf("bad: %#v", warns)
    39  	}
    40  	if err != nil {
    41  		t.Fatalf("bad: %s", err)
    42  	}
    43  }
    44  
    45  func TestConfigPrepare_port(t *testing.T) {
    46  	raw := testConfig()
    47  
    48  	// default port should be 22
    49  	delete(raw, "port")
    50  	c, warns, errs := NewConfig(raw)
    51  	if c.Port != 22 {
    52  		t.Fatalf("bad: port should default to 22, not %d", c.Port)
    53  	}
    54  	testConfigOk(t, warns, errs)
    55  }
    56  
    57  func TestConfigPrepare_host(t *testing.T) {
    58  	raw := testConfig()
    59  
    60  	// No host
    61  	delete(raw, "host")
    62  	_, warns, errs := NewConfig(raw)
    63  	testConfigErr(t, warns, errs)
    64  
    65  	// Good host
    66  	raw["host"] = "good"
    67  	_, warns, errs = NewConfig(raw)
    68  	testConfigOk(t, warns, errs)
    69  }
    70  
    71  func TestConfigPrepare_sshUsername(t *testing.T) {
    72  	raw := testConfig()
    73  
    74  	// No ssh_username
    75  	delete(raw, "ssh_username")
    76  	_, warns, errs := NewConfig(raw)
    77  	testConfigErr(t, warns, errs)
    78  
    79  	// Good ssh_username
    80  	raw["ssh_username"] = "good"
    81  	_, warns, errs = NewConfig(raw)
    82  	testConfigOk(t, warns, errs)
    83  }
    84  
    85  func TestConfigPrepare_sshCredential(t *testing.T) {
    86  	raw := testConfig()
    87  
    88  	// no ssh_password and no ssh_private_key_file
    89  	delete(raw, "ssh_password")
    90  	delete(raw, "ssh_private_key_file")
    91  	_, warns, errs := NewConfig(raw)
    92  	testConfigErr(t, warns, errs)
    93  
    94  	// only ssh_password
    95  	raw["ssh_password"] = "good"
    96  	_, warns, errs = NewConfig(raw)
    97  	testConfigOk(t, warns, errs)
    98  
    99  	// only ssh_private_key_file
   100  	raw["ssh_private_key_file"] = "good"
   101  	delete(raw, "ssh_password")
   102  	_, warns, errs = NewConfig(raw)
   103  	testConfigOk(t, warns, errs)
   104  
   105  	// both ssh_password and ssh_private_key_file set
   106  	raw["ssh_password"] = "bad"
   107  	_, warns, errs = NewConfig(raw)
   108  	testConfigErr(t, warns, errs)
   109  }