github.com/viant/toolbox@v0.34.5/ssh/service_test.go (about) 1 package ssh_test 2 3 import ( 4 "fmt" 5 "github.com/stretchr/testify/assert" 6 "github.com/viant/toolbox" 7 "github.com/viant/toolbox/cred" 8 "github.com/viant/toolbox/ssh" 9 "io/ioutil" 10 "os" 11 "path" 12 "testing" 13 ) 14 15 func TestNewClient(t *testing.T) { 16 commands, err := ssh.NewReplayCommands("/tmp/ls") 17 if err != nil { 18 return 19 } 20 21 defer commands.Store() 22 service, err := ssh.NewService("127.0.0.1", 22, nil) 23 if err != nil { 24 return 25 } 26 27 assert.NotNil(t, service) 28 commands.Enable(service) 29 30 if err == nil { 31 assert.NotNil(t, service) 32 session, err := service.OpenMultiCommandSession(nil) 33 assert.Nil(t, err) 34 defer session.Close() 35 36 assert.NotNil(t, session) 37 var out string 38 out, err = session.Run("ls /etc/hosts", nil, 2000) 39 assert.Equal(t, "/etc/hosts", out) 40 41 } else { 42 assert.Nil(t, service) 43 } 44 45 } 46 47 func TestClient_Upload(t *testing.T) { 48 service, err := ssh.NewService("127.0.0.1", 22, nil) 49 if err != nil { 50 return 51 } 52 if err == nil { 53 assert.NotNil(t, service) 54 err = service.Upload("/tmp/a/abcd.bin", 0644, []byte{0x1, 0x6, 0x10}) 55 assert.Nil(t, err) 56 57 content, err := service.Download("/tmp/a/abcd.bin") 58 assert.Nil(t, err) 59 assert.Equal(t, []byte{0x1, 0x6, 0x10}, (content)) 60 61 } else { 62 assert.Nil(t, service) 63 } 64 } 65 66 func TestClient_Key(t *testing.T) { 67 auth, err := cred.NewConfig("/Users/awitas/.secret/scp1.json") 68 if err != nil { 69 return 70 } 71 assert.Nil(t, err) 72 service, err := ssh.NewService("127.0.0.1", 22, auth) 73 if err != nil { 74 return 75 } 76 assert.NotNil(t, service) 77 } 78 79 func TestClient_UploadLargeFile(t *testing.T) { 80 81 service, err := ssh.NewService("127.0.0.1", 22, nil) 82 if err != nil { 83 return 84 } 85 86 tempdir := os.TempDir() 87 filename := path.Join(tempdir, "kkk/.bin/largefile.bin") 88 toolbox.RemoveFileIfExist(filename) 89 //defer toolbox.RemoveFileIfExist(filename) 90 //file, err := os.OpenFile(filename, os.O_RDWR | os.O_CREATE, 0644) 91 //assert.Nil(t, err) 92 93 var payload = make([]byte, 1024*1024*16) 94 for i := 0; i < len(payload); i += 32 { 95 payload[i] = byte(i % 256) 96 } 97 //file.Write(payload) 98 //file.Close() 99 100 err = service.Upload(filename, 0644, payload) 101 fmt.Printf("%v\n", err) 102 assert.Nil(t, err) 103 104 data, err := ioutil.ReadFile(filename) 105 assert.Nil(t, err) 106 if assert.Equal(t, len(payload), len(data)) { 107 assert.EqualValues(t, data, payload) 108 } 109 110 }