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