1package sftp 2 3import ( 4 "os" 5 6 "github.com/stretchr/testify/assert" 7 8 "testing" 9) 10 11func TestRequestPflags(t *testing.T) { 12 pflags := newFileOpenFlags(ssh_FXF_READ | ssh_FXF_WRITE | ssh_FXF_APPEND) 13 assert.True(t, pflags.Read) 14 assert.True(t, pflags.Write) 15 assert.True(t, pflags.Append) 16 assert.False(t, pflags.Creat) 17 assert.False(t, pflags.Trunc) 18 assert.False(t, pflags.Excl) 19} 20 21func TestRequestAflags(t *testing.T) { 22 aflags := newFileAttrFlags( 23 ssh_FILEXFER_ATTR_SIZE | ssh_FILEXFER_ATTR_UIDGID) 24 assert.True(t, aflags.Size) 25 assert.True(t, aflags.UidGid) 26 assert.False(t, aflags.Acmodtime) 27 assert.False(t, aflags.Permissions) 28} 29 30func TestRequestAttributes(t *testing.T) { 31 // UID/GID 32 fa := FileStat{UID: 1, GID: 2} 33 fl := uint32(ssh_FILEXFER_ATTR_UIDGID) 34 at := []byte{} 35 at = marshalUint32(at, 1) 36 at = marshalUint32(at, 2) 37 test_fs, _ := getFileStat(fl, at) 38 assert.Equal(t, fa, *test_fs) 39 // Size and Mode 40 fa = FileStat{Mode: 700, Size: 99} 41 fl = uint32(ssh_FILEXFER_ATTR_SIZE | ssh_FILEXFER_ATTR_PERMISSIONS) 42 at = []byte{} 43 at = marshalUint64(at, 99) 44 at = marshalUint32(at, 700) 45 test_fs, _ = getFileStat(fl, at) 46 assert.Equal(t, fa, *test_fs) 47 // FileMode 48 assert.True(t, test_fs.FileMode().IsRegular()) 49 assert.False(t, test_fs.FileMode().IsDir()) 50 assert.Equal(t, test_fs.FileMode().Perm(), os.FileMode(700).Perm()) 51} 52