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 }