github.com/pkg/sftp@v1.13.6/internal/encoding/ssh/filexfer/openssh/fsync_test.go (about)

     1  package openssh
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	sshfx "github.com/pkg/sftp/internal/encoding/ssh/filexfer"
     8  )
     9  
    10  var _ sshfx.PacketMarshaller = &FSyncExtendedPacket{}
    11  
    12  func init() {
    13  	RegisterExtensionFSync()
    14  }
    15  
    16  func TestFSyncExtendedPacket(t *testing.T) {
    17  	const (
    18  		id     = 42
    19  		handle = "somehandle"
    20  	)
    21  
    22  	ep := &FSyncExtendedPacket{
    23  		Handle: handle,
    24  	}
    25  
    26  	data, err := sshfx.ComposePacket(ep.MarshalPacket(id, nil))
    27  	if err != nil {
    28  		t.Fatal("unexpected error:", err)
    29  	}
    30  
    31  	want := []byte{
    32  		0x00, 0x00, 0x00, 40,
    33  		200,
    34  		0x00, 0x00, 0x00, 42,
    35  		0x00, 0x00, 0x00, 17, 'f', 's', 'y', 'n', 'c', '@', 'o', 'p', 'e', 'n', 's', 's', 'h', '.', 'c', 'o', 'm',
    36  		0x00, 0x00, 0x00, 10, 's', 'o', 'm', 'e', 'h', 'a', 'n', 'd', 'l', 'e',
    37  	}
    38  
    39  	if !bytes.Equal(data, want) {
    40  		t.Fatalf("MarshalPacket() = %X, but wanted %X", data, want)
    41  	}
    42  
    43  	var p sshfx.ExtendedPacket
    44  
    45  	// UnmarshalPacketBody assumes the (length, type, request-id) have already been consumed.
    46  	if err := p.UnmarshalPacketBody(sshfx.NewBuffer(data[9:])); err != nil {
    47  		t.Fatal("unexpected error:", err)
    48  	}
    49  
    50  	if p.ExtendedRequest != extensionFSync {
    51  		t.Errorf("UnmarshalPacketBody(): ExtendedRequest was %q, but expected %q", p.ExtendedRequest, extensionFSync)
    52  	}
    53  
    54  	ep, ok := p.Data.(*FSyncExtendedPacket)
    55  	if !ok {
    56  		t.Fatalf("UnmarshaledPacketBody(): Data was type %T, but expected *FSyncExtendedPacket", p.Data)
    57  	}
    58  
    59  	if ep.Handle != handle {
    60  		t.Errorf("UnmarshalPacketBody(): Handle was %q, but expected %q", ep.Handle, handle)
    61  	}
    62  }