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  }