Refactor RDP proxy handling and update related tests
This commit is contained in:
@@ -426,6 +426,59 @@ func TestFabricSessionPacketTransportRunFrameIngressDeliversInbox(t *testing.T)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFabricSessionPacketPeerTransportSendsReplyToLatestRegisteredPeer(t *testing.T) {
|
||||
inbox := NewFabricPacketInbox(4)
|
||||
registry := NewFabricSessionPacketPeerRegistry()
|
||||
sender := &recordingFrameSender{}
|
||||
frame, err := NewFabricVPNPacketDataFrame(FabricVPNPacketFrameInput{
|
||||
StreamID: 7,
|
||||
VPNConnectionID: "vpn-1",
|
||||
Direction: FabricDirectionClientToGateway,
|
||||
Packets: [][]byte{[]byte("request")},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("frame: %v", err)
|
||||
}
|
||||
handled, err := registry.RegisterFrame(context.Background(), sender, frame)
|
||||
if err != nil || !handled {
|
||||
t.Fatalf("register frame handled=%v err=%v", handled, err)
|
||||
}
|
||||
if err := inbox.DeliverFabricSessionFrame(context.Background(), frame); err != nil {
|
||||
t.Fatalf("deliver frame: %v", err)
|
||||
}
|
||||
transport := &FabricSessionPacketPeerTransport{
|
||||
Registry: registry,
|
||||
Inbox: inbox,
|
||||
VPNConnectionID: "vpn-1",
|
||||
}
|
||||
requests, err := transport.ReceiveGatewayPacketBatch(context.Background(), time.Second)
|
||||
if err != nil || len(requests) != 1 || string(requests[0]) != "request" {
|
||||
t.Fatalf("requests=%q err=%v", requests, err)
|
||||
}
|
||||
if err := transport.SendGatewayPacketBatch(context.Background(), [][]byte{[]byte("reply")}); err != nil {
|
||||
t.Fatalf("send reply: %v", err)
|
||||
}
|
||||
if len(sender.frames) != 1 {
|
||||
t.Fatalf("sent frames = %d, want 1", len(sender.frames))
|
||||
}
|
||||
payload, err := DecodeFabricVPNPacketDataFrame(sender.frames[0])
|
||||
if err != nil {
|
||||
t.Fatalf("decode reply: %v", err)
|
||||
}
|
||||
if payload.Direction != FabricDirectionGatewayToClient || string(payload.Packets[0]) != "reply" {
|
||||
t.Fatalf("reply payload = %+v", payload)
|
||||
}
|
||||
}
|
||||
|
||||
type recordingFrameSender struct {
|
||||
frames []fabricproto.Frame
|
||||
}
|
||||
|
||||
func (s *recordingFrameSender) SendFrame(_ context.Context, frame fabricproto.Frame) error {
|
||||
s.frames = append(s.frames, frame)
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestFabricSessionPacketTransportReceiveReadsPumpFrames(t *testing.T) {
|
||||
inbox := NewFabricPacketInbox(4)
|
||||
receiver := memoryFabricSessionReceiver{
|
||||
|
||||
Reference in New Issue
Block a user