mirror of https://github.com/pkg/sftp.git
				
				
				
			
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
package filexfer
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
var _ Packet = &OpenPacket{}
 | 
						|
 | 
						|
func TestOpenPacket(t *testing.T) {
 | 
						|
	const (
 | 
						|
		id       = 42
 | 
						|
		filename = "/foo"
 | 
						|
		perms    = 0x87654321
 | 
						|
	)
 | 
						|
 | 
						|
	p := &OpenPacket{
 | 
						|
		Filename: "/foo",
 | 
						|
		PFlags:   FlagRead,
 | 
						|
		Attrs: Attributes{
 | 
						|
			Flags:       AttrPermissions,
 | 
						|
			Permissions: perms,
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	data, err := ComposePacket(p.MarshalPacket(id, nil))
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal("unexpected error:", err)
 | 
						|
	}
 | 
						|
 | 
						|
	want := []byte{
 | 
						|
		0x00, 0x00, 0x00, 25,
 | 
						|
		3,
 | 
						|
		0x00, 0x00, 0x00, 42,
 | 
						|
		0x00, 0x00, 0x00, 4, '/', 'f', 'o', 'o',
 | 
						|
		0x00, 0x00, 0x00, 1,
 | 
						|
		0x00, 0x00, 0x00, 0x04,
 | 
						|
		0x87, 0x65, 0x43, 0x21,
 | 
						|
	}
 | 
						|
 | 
						|
	if !bytes.Equal(data, want) {
 | 
						|
		t.Fatalf("Marshal() = %X, but wanted %X", data, want)
 | 
						|
	}
 | 
						|
 | 
						|
	*p = OpenPacket{}
 | 
						|
 | 
						|
	// UnmarshalPacketBody assumes the (length, type, request-id) have already been consumed.
 | 
						|
	if err := p.UnmarshalPacketBody(NewBuffer(data[9:])); err != nil {
 | 
						|
		t.Fatal("unexpected error:", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if p.Filename != filename {
 | 
						|
		t.Errorf("UnmarshalPacketBody(): Filename was %q, but expected %q", p.Filename, filename)
 | 
						|
	}
 | 
						|
 | 
						|
	if p.PFlags != FlagRead {
 | 
						|
		t.Errorf("UnmarshalPacketBody(): PFlags was %#x, but expected %#x", p.PFlags, FlagRead)
 | 
						|
	}
 | 
						|
 | 
						|
	if p.Attrs.Flags != AttrPermissions {
 | 
						|
		t.Errorf("UnmarshalPacketBody(): Attrs.Flags was %#x, but expected %#x", p.Attrs.Flags, AttrPermissions)
 | 
						|
	}
 | 
						|
 | 
						|
	if p.Attrs.Permissions != perms {
 | 
						|
		t.Errorf("UnmarshalPacketBody(): Attrs.Permissions was %#v, but expected %#v", p.Attrs.Permissions, perms)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
var _ Packet = &OpenDirPacket{}
 | 
						|
 | 
						|
func TestOpenDirPacket(t *testing.T) {
 | 
						|
	const (
 | 
						|
		id   = 42
 | 
						|
		path = "/foo"
 | 
						|
	)
 | 
						|
 | 
						|
	p := &OpenDirPacket{
 | 
						|
		Path: path,
 | 
						|
	}
 | 
						|
 | 
						|
	data, err := ComposePacket(p.MarshalPacket(id, nil))
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal("unexpected error:", err)
 | 
						|
	}
 | 
						|
 | 
						|
	want := []byte{
 | 
						|
		0x00, 0x00, 0x00, 13,
 | 
						|
		11,
 | 
						|
		0x00, 0x00, 0x00, 42,
 | 
						|
		0x00, 0x00, 0x00, 4, '/', 'f', 'o', 'o',
 | 
						|
	}
 | 
						|
 | 
						|
	if !bytes.Equal(data, want) {
 | 
						|
		t.Fatalf("Marshal() = %X, but wanted %X", data, want)
 | 
						|
	}
 | 
						|
 | 
						|
	*p = OpenDirPacket{}
 | 
						|
 | 
						|
	// UnmarshalPacketBody assumes the (length, type, request-id) have already been consumed.
 | 
						|
	if err := p.UnmarshalPacketBody(NewBuffer(data[9:])); err != nil {
 | 
						|
		t.Fatal("unexpected error:", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if p.Path != path {
 | 
						|
		t.Errorf("UnmarshalPacketBody(): Path was %q, but expected %q", p.Path, path)
 | 
						|
	}
 | 
						|
}
 |