github.com/rudderlabs/rudder-go-kit@v0.30.0/testhelper/docker/resource/sshserver/sshserver_test.go (about)

     1  package sshserver
     2  
     3  import (
     4  	"path/filepath"
     5  	"testing"
     6  
     7  	"github.com/melbahja/goph"
     8  	"github.com/ory/dockertest/v3"
     9  	dc "github.com/ory/dockertest/v3/docker"
    10  	"github.com/stretchr/testify/require"
    11  	"golang.org/x/crypto/ssh"
    12  )
    13  
    14  func TestCredentials(t *testing.T) {
    15  	pool, err := dockertest.NewPool("")
    16  	require.NoError(t, err)
    17  
    18  	res, err := Setup(pool, t,
    19  		WithCredentials("qux", "foobar"),
    20  	)
    21  	require.NoError(t, err)
    22  
    23  	c, err := goph.NewConn(&goph.Config{
    24  		Addr:     "localhost",
    25  		Port:     uint(res.Port),
    26  		User:     "qux",
    27  		Auth:     goph.Password("foobar"),
    28  		Callback: ssh.InsecureIgnoreHostKey(),
    29  	})
    30  	require.NoError(t, err)
    31  
    32  	t.Cleanup(func() {
    33  		require.NoError(t, c.Close())
    34  	})
    35  
    36  	out, err := c.Run("ls /")
    37  	require.NoError(t, err)
    38  	require.Contains(t, string(out), `home`)
    39  }
    40  
    41  func TestKeys(t *testing.T) {
    42  	pool, err := dockertest.NewPool("")
    43  	require.NoError(t, err)
    44  
    45  	network, err := pool.Client.CreateNetwork(dc.CreateNetworkOptions{Name: "test_network"})
    46  	require.NoError(t, err)
    47  	t.Cleanup(func() {
    48  		if err := pool.Client.RemoveNetwork(network.ID); err != nil {
    49  			t.Logf("Error while removing Docker network: %v", err)
    50  		}
    51  	})
    52  
    53  	publicKeyPath, err := filepath.Abs("./testdata/test_key.pub")
    54  	require.NoError(t, err)
    55  	res, err := Setup(pool, t,
    56  		WithPublicKeyPath(publicKeyPath),
    57  		WithCredentials("linuxserver.io", ""),
    58  		WithDockerNetwork(network),
    59  	)
    60  	require.NoError(t, err)
    61  
    62  	privateKeyPath, err := filepath.Abs("./testdata/test_key")
    63  	require.NoError(t, err)
    64  	auth, err := goph.Key(privateKeyPath, "")
    65  	require.NoError(t, err)
    66  
    67  	c, err := goph.NewConn(&goph.Config{
    68  		Addr:     "localhost",
    69  		Port:     uint(res.Port),
    70  		User:     "linuxserver.io",
    71  		Auth:     auth,
    72  		Callback: ssh.InsecureIgnoreHostKey(),
    73  	})
    74  	require.NoError(t, err)
    75  
    76  	t.Cleanup(func() {
    77  		require.NoError(t, c.Close())
    78  	})
    79  
    80  	out, err := c.Run("ls /")
    81  	require.NoError(t, err)
    82  	require.Contains(t, string(out), `home`)
    83  }