package sftp import ( "os" "github.com/stretchr/testify/assert" "testing" ) func TestRequestPflags(t *testing.T) { pflags := newFileOpenFlags(ssh_FXF_READ | ssh_FXF_WRITE | ssh_FXF_APPEND) assert.True(t, pflags.Read) assert.True(t, pflags.Write) assert.True(t, pflags.Append) assert.False(t, pflags.Creat) assert.False(t, pflags.Trunc) assert.False(t, pflags.Excl) } func TestRequestAflags(t *testing.T) { aflags := newFileAttrFlags( ssh_FILEXFER_ATTR_SIZE | ssh_FILEXFER_ATTR_UIDGID) assert.True(t, aflags.Size) assert.True(t, aflags.UidGid) assert.False(t, aflags.Acmodtime) assert.False(t, aflags.Permissions) } func TestRequestAttributes(t *testing.T) { // UID/GID fa := FileStat{UID: 1, GID: 2} fl := uint32(ssh_FILEXFER_ATTR_UIDGID) at := []byte{} at = marshalUint32(at, 1) at = marshalUint32(at, 2) test_fs, _ := getFileStat(fl, at) assert.Equal(t, fa, *test_fs) // Size and Mode fa = FileStat{Mode: 700, Size: 99} fl = uint32(ssh_FILEXFER_ATTR_SIZE | ssh_FILEXFER_ATTR_PERMISSIONS) at = []byte{} at = marshalUint64(at, 99) at = marshalUint32(at, 700) test_fs, _ = getFileStat(fl, at) assert.Equal(t, fa, *test_fs) // FileMode assert.True(t, test_fs.FileMode().IsRegular()) assert.False(t, test_fs.FileMode().IsDir()) assert.Equal(t, test_fs.FileMode().Perm(), os.FileMode(700).Perm()) }