github.com/heimweh/terraform@v0.7.4/communicator/winrm/provisioner_test.go (about) 1 package winrm 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/terraform/terraform" 7 ) 8 9 func TestProvisioner_connInfo(t *testing.T) { 10 r := &terraform.InstanceState{ 11 Ephemeral: terraform.EphemeralState{ 12 ConnInfo: map[string]string{ 13 "type": "winrm", 14 "user": "Administrator", 15 "password": "supersecret", 16 "host": "127.0.0.1", 17 "port": "5985", 18 "https": "true", 19 "timeout": "30s", 20 }, 21 }, 22 } 23 24 conf, err := parseConnectionInfo(r) 25 if err != nil { 26 t.Fatalf("err: %v", err) 27 } 28 29 if conf.User != "Administrator" { 30 t.Fatalf("expected: %v: got: %v", "Administrator", conf) 31 } 32 if conf.Password != "supersecret" { 33 t.Fatalf("expected: %v: got: %v", "supersecret", conf) 34 } 35 if conf.Host != "127.0.0.1" { 36 t.Fatalf("expected: %v: got: %v", "127.0.0.1", conf) 37 } 38 if conf.Port != 5985 { 39 t.Fatalf("expected: %v: got: %v", 5985, conf) 40 } 41 if conf.HTTPS != true { 42 t.Fatalf("expected: %v: got: %v", true, conf) 43 } 44 if conf.Timeout != "30s" { 45 t.Fatalf("expected: %v: got: %v", "30s", conf) 46 } 47 if conf.ScriptPath != DefaultScriptPath { 48 t.Fatalf("expected: %v: got: %v", DefaultScriptPath, conf) 49 } 50 } 51 52 func TestProvisioner_connInfoIpv6(t *testing.T) { 53 r := &terraform.InstanceState{ 54 Ephemeral: terraform.EphemeralState{ 55 ConnInfo: map[string]string{ 56 "type": "winrm", 57 "user": "Administrator", 58 "password": "supersecret", 59 "host": "::1", 60 "port": "5985", 61 "https": "true", 62 "timeout": "30s", 63 }, 64 }, 65 } 66 67 conf, err := parseConnectionInfo(r) 68 if err != nil { 69 t.Fatalf("err: %v", err) 70 } 71 72 if conf.User != "Administrator" { 73 t.Fatalf("expected: %v: got: %v", "Administrator", conf) 74 } 75 if conf.Password != "supersecret" { 76 t.Fatalf("expected: %v: got: %v", "supersecret", conf) 77 } 78 if conf.Host != "[::1]" { 79 t.Fatalf("expected: %v: got: %v", "[::1]", conf) 80 } 81 if conf.Port != 5985 { 82 t.Fatalf("expected: %v: got: %v", 5985, conf) 83 } 84 if conf.HTTPS != true { 85 t.Fatalf("expected: %v: got: %v", true, conf) 86 } 87 if conf.Timeout != "30s" { 88 t.Fatalf("expected: %v: got: %v", "30s", conf) 89 } 90 if conf.ScriptPath != DefaultScriptPath { 91 t.Fatalf("expected: %v: got: %v", DefaultScriptPath, conf) 92 } 93 } 94 95 func TestProvisioner_connInfoHostname(t *testing.T) { 96 r := &terraform.InstanceState{ 97 Ephemeral: terraform.EphemeralState{ 98 ConnInfo: map[string]string{ 99 "type": "winrm", 100 "user": "Administrator", 101 "password": "supersecret", 102 "host": "example.com", 103 "port": "5985", 104 "https": "true", 105 "timeout": "30s", 106 }, 107 }, 108 } 109 110 conf, err := parseConnectionInfo(r) 111 if err != nil { 112 t.Fatalf("err: %v", err) 113 } 114 115 if conf.User != "Administrator" { 116 t.Fatalf("expected: %v: got: %v", "Administrator", conf) 117 } 118 if conf.Password != "supersecret" { 119 t.Fatalf("expected: %v: got: %v", "supersecret", conf) 120 } 121 if conf.Host != "example.com" { 122 t.Fatalf("expected: %v: got: %v", "example.com", conf) 123 } 124 if conf.Port != 5985 { 125 t.Fatalf("expected: %v: got: %v", 5985, conf) 126 } 127 if conf.HTTPS != true { 128 t.Fatalf("expected: %v: got: %v", true, conf) 129 } 130 if conf.Timeout != "30s" { 131 t.Fatalf("expected: %v: got: %v", "30s", conf) 132 } 133 if conf.ScriptPath != DefaultScriptPath { 134 t.Fatalf("expected: %v: got: %v", DefaultScriptPath, conf) 135 } 136 } 137 138 func TestProvisioner_formatDuration(t *testing.T) { 139 cases := map[string]struct { 140 InstanceState *terraform.InstanceState 141 Result string 142 }{ 143 "testSeconds": { 144 InstanceState: &terraform.InstanceState{ 145 Ephemeral: terraform.EphemeralState{ 146 ConnInfo: map[string]string{ 147 "timeout": "90s", 148 }, 149 }, 150 }, 151 152 Result: "PT1M30S", 153 }, 154 "testMinutes": { 155 InstanceState: &terraform.InstanceState{ 156 Ephemeral: terraform.EphemeralState{ 157 ConnInfo: map[string]string{ 158 "timeout": "5m", 159 }, 160 }, 161 }, 162 163 Result: "PT5M", 164 }, 165 "testHours": { 166 InstanceState: &terraform.InstanceState{ 167 Ephemeral: terraform.EphemeralState{ 168 ConnInfo: map[string]string{ 169 "timeout": "1h", 170 }, 171 }, 172 }, 173 174 Result: "PT1H", 175 }, 176 } 177 178 for name, tc := range cases { 179 conf, err := parseConnectionInfo(tc.InstanceState) 180 if err != nil { 181 t.Fatalf("err: %v", err) 182 } 183 184 result := formatDuration(conf.TimeoutVal) 185 if result != tc.Result { 186 t.Fatalf("%s: expected: %s got: %s", name, tc.Result, result) 187 } 188 } 189 }