packer-cn/helper/communicator/config_test.go

156 lines
2.9 KiB
Go
Raw Normal View History

2015-06-13 17:50:45 -04:00
package communicator
import (
"reflect"
2015-06-13 17:50:45 -04:00
"testing"
2017-04-04 16:39:01 -04:00
"github.com/hashicorp/packer/template/interpolate"
"github.com/masterzen/winrm"
2015-06-13 17:50:45 -04:00
)
func testConfig() *Config {
return &Config{
SSH: SSH{
SSHUsername: "root",
},
2015-06-13 17:50:45 -04:00
}
}
func TestConfigType(t *testing.T) {
c := testConfig()
if err := c.Prepare(testContext(t)); len(err) > 0 {
t.Fatalf("bad: %#v", err)
}
if c.Type != "ssh" {
2015-06-13 19:24:57 -04:00
t.Fatalf("bad: %#v", c)
2015-06-13 17:50:45 -04:00
}
}
func TestConfig_none(t *testing.T) {
c := &Config{Type: "none"}
if err := c.Prepare(testContext(t)); len(err) > 0 {
t.Fatalf("bad: %#v", err)
}
}
func TestConfig_badtype(t *testing.T) {
c := &Config{Type: "foo"}
if err := c.Prepare(testContext(t)); len(err) != 1 {
t.Fatalf("bad: %#v", err)
}
}
func TestConfig_winrm_noport(t *testing.T) {
c := &Config{
Type: "winrm",
WinRM: WinRM{
WinRMUser: "admin",
},
}
if err := c.Prepare(testContext(t)); len(err) > 0 {
t.Fatalf("bad: %#v", err)
}
if c.WinRMPort != 5985 {
t.Fatalf("WinRMPort doesn't match default port 5985 when SSL is not enabled and no port is specified.")
}
}
func TestConfig_winrm_noport_ssl(t *testing.T) {
c := &Config{
Type: "winrm",
WinRM: WinRM{
WinRMUser: "admin",
WinRMUseSSL: true,
},
}
if err := c.Prepare(testContext(t)); len(err) > 0 {
t.Fatalf("bad: %#v", err)
}
if c.WinRMPort != 5986 {
t.Fatalf("WinRMPort doesn't match default port 5986 when SSL is enabled and no port is specified.")
}
}
func TestConfig_winrm_port(t *testing.T) {
c := &Config{
Type: "winrm",
WinRM: WinRM{
WinRMUser: "admin",
WinRMPort: 5509,
},
}
if err := c.Prepare(testContext(t)); len(err) > 0 {
t.Fatalf("bad: %#v", err)
}
if c.WinRMPort != 5509 {
t.Fatalf("WinRMPort doesn't match custom port 5509 when SSL is not enabled.")
}
}
func TestConfig_winrm_port_ssl(t *testing.T) {
c := &Config{
Type: "winrm",
WinRM: WinRM{
WinRMUser: "admin",
WinRMPort: 5510,
WinRMUseSSL: true,
},
}
if err := c.Prepare(testContext(t)); len(err) > 0 {
t.Fatalf("bad: %#v", err)
}
if c.WinRMPort != 5510 {
t.Fatalf("WinRMPort doesn't match custom port 5510 when SSL is enabled.")
}
}
func TestConfig_winrm_use_ntlm(t *testing.T) {
c := &Config{
Type: "winrm",
WinRM: WinRM{
WinRMUser: "admin",
WinRMUseNTLM: true,
},
}
if err := c.Prepare(testContext(t)); len(err) > 0 {
t.Fatalf("bad: %#v", err)
}
if c.WinRMTransportDecorator == nil {
t.Fatalf("WinRMTransportDecorator not set.")
}
expected := &winrm.ClientNTLM{}
actual := c.WinRMTransportDecorator()
if !reflect.DeepEqual(expected, actual) {
t.Fatalf("WinRMTransportDecorator isn't ClientNTLM.")
}
}
func TestConfig_winrm(t *testing.T) {
c := &Config{
Type: "winrm",
WinRM: WinRM{
WinRMUser: "admin",
},
}
if err := c.Prepare(testContext(t)); len(err) > 0 {
t.Fatalf("bad: %#v", err)
}
}
2015-06-13 17:50:45 -04:00
func testContext(t *testing.T) *interpolate.Context {
return nil
}