github.com/rothwerx/packer@v0.9.0/builder/parallels/common/ssh_config_test.go (about) 1 package common 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 8 "github.com/mitchellh/packer/helper/communicator" 9 ) 10 11 func testSSHConfig() *SSHConfig { 12 return &SSHConfig{ 13 Comm: communicator.Config{ 14 SSHUsername: "foo", 15 }, 16 } 17 } 18 19 func TestSSHConfigPrepare(t *testing.T) { 20 c := testSSHConfig() 21 errs := c.Prepare(testConfigTemplate(t)) 22 if len(errs) > 0 { 23 t.Fatalf("err: %#v", errs) 24 } 25 26 if c.Comm.SSHPort != 22 { 27 t.Errorf("bad ssh port: %d", c.Comm.SSHPort) 28 } 29 } 30 31 func TestSSHConfigPrepare_SSHPrivateKey(t *testing.T) { 32 var c *SSHConfig 33 var errs []error 34 35 c = testSSHConfig() 36 c.Comm.SSHPrivateKey = "" 37 errs = c.Prepare(testConfigTemplate(t)) 38 if len(errs) > 0 { 39 t.Fatalf("should not have error: %#v", errs) 40 } 41 42 c = testSSHConfig() 43 c.Comm.SSHPrivateKey = "/i/dont/exist" 44 errs = c.Prepare(testConfigTemplate(t)) 45 if len(errs) == 0 { 46 t.Fatal("should have error") 47 } 48 49 // Test bad contents 50 tf, err := ioutil.TempFile("", "packer") 51 if err != nil { 52 t.Fatalf("err: %s", err) 53 } 54 defer os.Remove(tf.Name()) 55 defer tf.Close() 56 57 if _, err := tf.Write([]byte("HELLO!")); err != nil { 58 t.Fatalf("err: %s", err) 59 } 60 61 c = testSSHConfig() 62 c.Comm.SSHPrivateKey = tf.Name() 63 errs = c.Prepare(testConfigTemplate(t)) 64 if len(errs) == 0 { 65 t.Fatal("should have error") 66 } 67 68 // Test good contents 69 tf.Seek(0, 0) 70 tf.Truncate(0) 71 tf.Write([]byte(testPem)) 72 c = testSSHConfig() 73 c.Comm.SSHPrivateKey = tf.Name() 74 errs = c.Prepare(testConfigTemplate(t)) 75 if len(errs) > 0 { 76 t.Fatalf("should not have error: %#v", errs) 77 } 78 } 79 80 func TestSSHConfigPrepare_SSHUser(t *testing.T) { 81 var c *SSHConfig 82 var errs []error 83 84 c = testSSHConfig() 85 c.Comm.SSHUsername = "" 86 errs = c.Prepare(testConfigTemplate(t)) 87 if len(errs) == 0 { 88 t.Fatalf("should have error") 89 } 90 91 c = testSSHConfig() 92 c.Comm.SSHUsername = "exists" 93 errs = c.Prepare(testConfigTemplate(t)) 94 if len(errs) > 0 { 95 t.Fatalf("should not have error: %#v", errs) 96 } 97 } 98 99 const testPem = ` 100 -----BEGIN RSA PRIVATE KEY----- 101 MIIEpQIBAAKCAQEAxd4iamvrwRJvtNDGQSIbNvvIQN8imXTRWlRY62EvKov60vqu 102 hh+rDzFYAIIzlmrJopvOe0clqmi3mIP9dtkjPFrYflq52a2CF5q+BdwsJXuRHbJW 103 LmStZUwW1khSz93DhvhmK50nIaczW63u4EO/jJb3xj+wxR1Nkk9bxi3DDsYFt8SN 104 AzYx9kjlEYQ/+sI4/ATfmdV9h78SVotjScupd9KFzzi76gWq9gwyCBLRynTUWlyD 105 2UOfJRkOvhN6/jKzvYfVVwjPSfA9IMuooHdScmC4F6KBKJl/zf/zETM0XyzIDNmH 106 uOPbCiljq2WoRM+rY6ET84EO0kVXbfx8uxUsqQIDAQABAoIBAQCkPj9TF0IagbM3 107 5BSs/CKbAWS4dH/D4bPlxx4IRCNirc8GUg+MRb04Xz0tLuajdQDqeWpr6iLZ0RKV 108 BvreLF+TOdV7DNQ4XE4gSdJyCtCaTHeort/aordL3l0WgfI7mVk0L/yfN1PEG4YG 109 E9q1TYcyrB3/8d5JwIkjabxERLglCcP+geOEJp+QijbvFIaZR/n2irlKW4gSy6ko 110 9B0fgUnhkHysSg49ChHQBPQ+o5BbpuLrPDFMiTPTPhdfsvGGcyCGeqfBA56oHcSF 111 K02Fg8OM+Bd1lb48LAN9nWWY4WbwV+9bkN3Ym8hO4c3a/Dxf2N7LtAQqWZzFjvM3 112 /AaDvAgBAoGBAPLD+Xn1IYQPMB2XXCXfOuJewRY7RzoVWvMffJPDfm16O7wOiW5+ 113 2FmvxUDayk4PZy6wQMzGeGKnhcMMZTyaq2g/QtGfrvy7q1Lw2fB1VFlVblvqhoJa 114 nMJojjC4zgjBkXMHsRLeTmgUKyGs+fdFbfI6uejBnnf+eMVUMIdJ+6I9AoGBANCn 115 kWO9640dttyXURxNJ3lBr2H3dJOkmD6XS+u+LWqCSKQe691Y/fZ/ZL0Oc4Mhy7I6 116 hsy3kDQ5k2V0fkaNODQIFJvUqXw2pMewUk8hHc9403f4fe9cPrL12rQ8WlQw4yoC 117 v2B61vNczCCUDtGxlAaw8jzSRaSI5s6ax3K7enbdAoGBAJB1WYDfA2CoAQO6y9Sl 118 b07A/7kQ8SN5DbPaqrDrBdJziBQxukoMJQXJeGFNUFD/DXFU5Fp2R7C86vXT7HIR 119 v6m66zH+CYzOx/YE6EsUJms6UP9VIVF0Rg/RU7teXQwM01ZV32LQ8mswhTH20o/3 120 uqMHmxUMEhZpUMhrfq0isyApAoGAe1UxGTXfj9AqkIVYylPIq2HqGww7+jFmVEj1 121 9Wi6S6Sq72ffnzzFEPkIQL/UA4TsdHMnzsYKFPSbbXLIWUeMGyVTmTDA5c0e5XIR 122 lPhMOKCAzv8w4VUzMnEkTzkFY5JqFCD/ojW57KvDdNZPVB+VEcdxyAW6aKELXMAc 123 eHLc1nkCgYEApm/motCTPN32nINZ+Vvywbv64ZD+gtpeMNP3CLrbe1X9O+H52AXa 124 1jCoOldWR8i2bs2NVPcKZgdo6fFULqE4dBX7Te/uYEIuuZhYLNzRO1IKU/YaqsXG 125 3bfQ8hKYcSnTfE0gPtLDnqCIxTocaGLSHeG3TH9fTw+dA8FvWpUztI4= 126 -----END RSA PRIVATE KEY----- 127 `