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  }