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  })