github.com/mikelsr/quic-go@v0.36.1-0.20230701132136-1d9415b66898/internal/handshake/session_ticket_test.go (about) 1 package handshake 2 3 import ( 4 "time" 5 6 "github.com/mikelsr/quic-go/internal/wire" 7 "github.com/mikelsr/quic-go/quicvarint" 8 9 . "github.com/onsi/ginkgo/v2" 10 . "github.com/onsi/gomega" 11 ) 12 13 var _ = Describe("Session Ticket", func() { 14 It("marshals and unmarshals a session ticket", func() { 15 ticket := &sessionTicket{ 16 Parameters: &wire.TransportParameters{ 17 InitialMaxStreamDataBidiLocal: 1, 18 InitialMaxStreamDataBidiRemote: 2, 19 ActiveConnectionIDLimit: 10, 20 }, 21 RTT: 1337 * time.Microsecond, 22 } 23 var t sessionTicket 24 Expect(t.Unmarshal(ticket.Marshal())).To(Succeed()) 25 Expect(t.Parameters.InitialMaxStreamDataBidiLocal).To(BeEquivalentTo(1)) 26 Expect(t.Parameters.InitialMaxStreamDataBidiRemote).To(BeEquivalentTo(2)) 27 Expect(t.Parameters.ActiveConnectionIDLimit).To(BeEquivalentTo(10)) 28 Expect(t.RTT).To(Equal(1337 * time.Microsecond)) 29 }) 30 31 It("refuses to unmarshal if the ticket is too short for the revision", func() { 32 Expect((&sessionTicket{}).Unmarshal([]byte{})).To(MatchError("failed to read session ticket revision")) 33 }) 34 35 It("refuses to unmarshal if the revision doesn't match", func() { 36 b := quicvarint.Append(nil, 1337) 37 Expect((&sessionTicket{}).Unmarshal(b)).To(MatchError("unknown session ticket revision: 1337")) 38 }) 39 40 It("refuses to unmarshal if the RTT cannot be read", func() { 41 b := quicvarint.Append(nil, sessionTicketRevision) 42 Expect((&sessionTicket{}).Unmarshal(b)).To(MatchError("failed to read RTT")) 43 }) 44 45 It("refuses to unmarshal if unmarshaling the transport parameters fails", func() { 46 b := quicvarint.Append(nil, sessionTicketRevision) 47 b = append(b, []byte("foobar")...) 48 err := (&sessionTicket{}).Unmarshal(b) 49 Expect(err).To(HaveOccurred()) 50 Expect(err.Error()).To(ContainSubstring("unmarshaling transport parameters from session ticket failed")) 51 }) 52 })