github.com/rstandt/terraform@v0.12.32-0.20230710220336-b1063613405c/communicator/ssh/provisioner_test.go (about) 1 package ssh 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": "ssh", 14 "user": "root", 15 "password": "supersecret", 16 "private_key": "someprivatekeycontents", 17 "certificate": "somecertificate", 18 "host": "127.0.0.1", 19 "port": "22", 20 "timeout": "30s", 21 22 "bastion_host": "127.0.1.1", 23 }, 24 }, 25 } 26 27 conf, err := parseConnectionInfo(r) 28 if err != nil { 29 t.Fatalf("err: %v", err) 30 } 31 32 if conf.User != "root" { 33 t.Fatalf("bad: %v", conf) 34 } 35 if conf.Password != "supersecret" { 36 t.Fatalf("bad: %v", conf) 37 } 38 if conf.PrivateKey != "someprivatekeycontents" { 39 t.Fatalf("bad: %v", conf) 40 } 41 if conf.Certificate != "somecertificate" { 42 t.Fatalf("bad: %v", conf) 43 } 44 if conf.Host != "127.0.0.1" { 45 t.Fatalf("bad: %v", conf) 46 } 47 if conf.Port != 22 { 48 t.Fatalf("bad: %v", conf) 49 } 50 if conf.Timeout != "30s" { 51 t.Fatalf("bad: %v", conf) 52 } 53 if conf.ScriptPath != DefaultScriptPath { 54 t.Fatalf("bad: %v", conf) 55 } 56 if conf.BastionHost != "127.0.1.1" { 57 t.Fatalf("bad: %v", conf) 58 } 59 if conf.BastionPort != 22 { 60 t.Fatalf("bad: %v", conf) 61 } 62 if conf.BastionUser != "root" { 63 t.Fatalf("bad: %v", conf) 64 } 65 if conf.BastionPassword != "supersecret" { 66 t.Fatalf("bad: %v", conf) 67 } 68 if conf.BastionPrivateKey != "someprivatekeycontents" { 69 t.Fatalf("bad: %v", conf) 70 } 71 } 72 73 func TestProvisioner_connInfoIpv6(t *testing.T) { 74 r := &terraform.InstanceState{ 75 Ephemeral: terraform.EphemeralState{ 76 ConnInfo: map[string]string{ 77 "type": "ssh", 78 "user": "root", 79 "password": "supersecret", 80 "private_key": "someprivatekeycontents", 81 "certificate": "somecertificate", 82 "host": "::1", 83 "port": "22", 84 "timeout": "30s", 85 86 "bastion_host": "::1", 87 }, 88 }, 89 } 90 91 conf, err := parseConnectionInfo(r) 92 if err != nil { 93 t.Fatalf("err: %v", err) 94 } 95 96 if conf.Host != "[::1]" { 97 t.Fatalf("bad: %v", conf) 98 } 99 100 if conf.BastionHost != "[::1]" { 101 t.Fatalf("bad %v", conf) 102 } 103 } 104 105 func TestProvisioner_connInfoHostname(t *testing.T) { 106 r := &terraform.InstanceState{ 107 Ephemeral: terraform.EphemeralState{ 108 ConnInfo: map[string]string{ 109 "type": "ssh", 110 "user": "root", 111 "password": "supersecret", 112 "private_key": "someprivatekeycontents", 113 "host": "example.com", 114 "port": "22", 115 "timeout": "30s", 116 "bastion_host": "example.com", 117 }, 118 }, 119 } 120 121 conf, err := parseConnectionInfo(r) 122 if err != nil { 123 t.Fatalf("err: %v", err) 124 } 125 126 if conf.Host != "example.com" { 127 t.Fatalf("bad: %v", conf) 128 } 129 130 if conf.BastionHost != "example.com" { 131 t.Fatalf("bad %v", conf) 132 } 133 }