@@ -563,6 +563,37 @@ var _ = Describe("Packet packer", func() {
563563 Expect (buffer .Len ()).ToNot (BeZero ())
564564 })
565565
566+ It ("packs PATH_CHALLENGE and PATH_RESPONSE frames" , func () {
567+ pnManager .EXPECT ().PeekPacketNumber (protocol .Encryption1RTT ).Return (protocol .PacketNumber (0x42 ), protocol .PacketNumberLen2 )
568+ pnManager .EXPECT ().PopPacketNumber (protocol .Encryption1RTT ).Return (protocol .PacketNumber (0x42 ))
569+ sealingManager .EXPECT ().Get1RTTSealer ().Return (getSealer (), nil )
570+ framer .EXPECT ().HasData ().Return (true )
571+ ackFramer .EXPECT ().GetAckFrame (protocol .Encryption1RTT , false )
572+ frames := []ackhandler.Frame {
573+ {Frame : & wire.PathChallengeFrame {}},
574+ {Frame : & wire.PathResponseFrame {}},
575+ {Frame : & wire.DataBlockedFrame {}},
576+ }
577+ expectAppendControlFrames (frames ... )
578+ expectAppendStreamFrames ()
579+ buffer := getPacketBuffer ()
580+ p , err := packer .AppendPacket (buffer , maxPacketSize , protocol .Version1 )
581+ Expect (p ).ToNot (BeNil ())
582+ Expect (err ).ToNot (HaveOccurred ())
583+ Expect (p .Frames ).To (HaveLen (3 ))
584+ for i , f := range p .Frames {
585+ Expect (f ).To (BeAssignableToTypeOf (frames [i ]))
586+ switch f .Frame .(type ) {
587+ case * wire.PathChallengeFrame , * wire.PathResponseFrame :
588+ // This means that the frame won't be retransmitted.
589+ Expect (f .Handler ).To (BeNil ())
590+ default :
591+ Expect (f .Handler ).ToNot (BeNil ())
592+ }
593+ }
594+ Expect (buffer .Len ()).ToNot (BeZero ())
595+ })
596+
566597 It ("packs DATAGRAM frames" , func () {
567598 ackFramer .EXPECT ().GetAckFrame (protocol .Encryption1RTT , true )
568599 pnManager .EXPECT ().PeekPacketNumber (protocol .Encryption1RTT ).Return (protocol .PacketNumber (0x42 ), protocol .PacketNumberLen2 )
0 commit comments