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 }