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  }