github.com/pkg/sftp@v1.13.6/request-attrs_test.go (about) 1 package sftp 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestRequestPflags(t *testing.T) { 11 pflags := newFileOpenFlags(sshFxfRead | sshFxfWrite | sshFxfAppend) 12 assert.True(t, pflags.Read) 13 assert.True(t, pflags.Write) 14 assert.True(t, pflags.Append) 15 assert.False(t, pflags.Creat) 16 assert.False(t, pflags.Trunc) 17 assert.False(t, pflags.Excl) 18 } 19 20 func TestRequestAflags(t *testing.T) { 21 aflags := newFileAttrFlags( 22 sshFileXferAttrSize | sshFileXferAttrUIDGID) 23 assert.True(t, aflags.Size) 24 assert.True(t, aflags.UidGid) 25 assert.False(t, aflags.Acmodtime) 26 assert.False(t, aflags.Permissions) 27 } 28 29 func TestRequestAttributes(t *testing.T) { 30 // UID/GID 31 fa := FileStat{UID: 1, GID: 2} 32 fl := uint32(sshFileXferAttrUIDGID) 33 at := []byte{} 34 at = marshalUint32(at, 1) 35 at = marshalUint32(at, 2) 36 testFs, _ := unmarshalFileStat(fl, at) 37 assert.Equal(t, fa, *testFs) 38 // Size and Mode 39 fa = FileStat{Mode: 0700, Size: 99} 40 fl = uint32(sshFileXferAttrSize | sshFileXferAttrPermissions) 41 at = []byte{} 42 at = marshalUint64(at, 99) 43 at = marshalUint32(at, 0700) 44 testFs, _ = unmarshalFileStat(fl, at) 45 assert.Equal(t, fa, *testFs) 46 // FileMode 47 assert.True(t, testFs.FileMode().IsRegular()) 48 assert.False(t, testFs.FileMode().IsDir()) 49 assert.Equal(t, testFs.FileMode().Perm(), os.FileMode(0700).Perm()) 50 } 51 52 func TestRequestAttributesEmpty(t *testing.T) { 53 fs, b := unmarshalFileStat(sshFileXferAttrAll, nil) 54 assert.Equal(t, &FileStat{ 55 Extended: []StatExtended{}, 56 }, fs) 57 assert.Empty(t, b) 58 }