github.com/mponton/terratest@v0.44.0/modules/ssh/agent_test.go (about) 1 package ssh 2 3 import ( 4 "os" 5 "path/filepath" 6 "strings" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestSshAgentWithKeyPair(t *testing.T) { 13 t.Parallel() 14 15 keyPair := GenerateRSAKeyPair(t, 2048) 16 sshAgent := SshAgentWithKeyPair(t, keyPair) 17 18 // ensure that socket directory is set in environment, and it exists 19 sockFile := filepath.Join(sshAgent.socketDir, "ssh_auth.sock") 20 assert.FileExists(t, sockFile) 21 22 // assert that there's 1 key in the agent 23 keys, err := sshAgent.agent.List() 24 assert.NoError(t, err) 25 assert.Len(t, keys, 1) 26 27 sshAgent.Stop() 28 29 // is socketDir removed as expected? 30 if _, err := os.Stat(sshAgent.socketDir); !os.IsNotExist(err) { 31 assert.FailNow(t, "ssh agent failed to remove socketDir on Stop()") 32 } 33 } 34 35 func TestSshAgentWithKeyPairs(t *testing.T) { 36 t.Parallel() 37 38 keyPair := GenerateRSAKeyPair(t, 2048) 39 keyPair2 := GenerateRSAKeyPair(t, 2048) 40 sshAgent := SshAgentWithKeyPairs(t, []*KeyPair{keyPair, keyPair2}) 41 defer sshAgent.Stop() 42 43 keys, err := sshAgent.agent.List() 44 assert.NoError(t, err) 45 assert.Len(t, keys, 2) 46 } 47 48 func TestMultipleSshAgents(t *testing.T) { 49 t.Parallel() 50 51 keyPair := GenerateRSAKeyPair(t, 2048) 52 keyPair2 := GenerateRSAKeyPair(t, 2048) 53 54 // start a couple of agents 55 sshAgent := SshAgentWithKeyPair(t, keyPair) 56 sshAgent2 := SshAgentWithKeyPair(t, keyPair2) 57 defer sshAgent.Stop() 58 defer sshAgent2.Stop() 59 60 // collect public keys from the agents 61 keys, err := sshAgent.agent.List() 62 assert.NoError(t, err) 63 keys2, err := sshAgent2.agent.List() 64 assert.NoError(t, err) 65 66 // check that all keys match up to expected 67 assert.NotEqual(t, keys, keys2) 68 assert.Equal(t, strings.TrimSpace(keyPair.PublicKey), keys[0].String()) 69 assert.Equal(t, strings.TrimSpace(keyPair2.PublicKey), keys2[0].String()) 70 71 }