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  }