forked from quic-go/quic-go
wire: migrate tests away from Ginkgo (#4643)
* wire: translate ACK frame tests * wire: translate CONNECTION_CLOSE frame tests * wire: translate DATA_BLOCKED frame tests * wire: translate DATAGRAM frame tests * wire: translate HANDSHAKE_DONE frame tests * wire: translate MAX_DATA frame tests * wire: translate MAX_STREAM_DATA frame tests * wire: translate MAX_STREAMS frame tests * wire: translate NEW_CONNECTION_ID frame tests * wire: translate NEW_TOKEN frame tests * wire: translate PATH_CHALLENGE frame tests * wire: translate PATH_RESPONSE frame tests * wire: translate PING frame test * wire: translate RESET_STREAM frame tests * wire: translate RETIRE_CONNECTION_ID frame tests * wire: translate STOP_SENDING frame tests * wire: translate STREAM_DATA_BLOCKED frame tests * wire: translate STREAMS_BLOCKED frame tests * wire: translate CRYPTO frame tests * wire: translate STREAM frame tests * wire: translate version negotiation tests * wire: translate header tests * wire: translate pool tests * wire: translate frame logging tests * wire: translate short header tests * wire: translate framer parser tests * wire: translate transport parameter tests
This commit is contained in:
@@ -2,61 +2,50 @@ package wire
|
||||
|
||||
import (
|
||||
"io"
|
||||
"testing"
|
||||
|
||||
"github.com/quic-go/quic-go/internal/protocol"
|
||||
"github.com/quic-go/quic-go/quicvarint"
|
||||
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
var _ = Describe("NEW_TOKEN frame", func() {
|
||||
Context("parsing", func() {
|
||||
It("accepts a sample frame", func() {
|
||||
token := "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
|
||||
data := encodeVarInt(uint64(len(token)))
|
||||
data = append(data, token...)
|
||||
f, l, err := parseNewTokenFrame(data, protocol.Version1)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(string(f.Token)).To(Equal(token))
|
||||
Expect(l).To(Equal(len(data)))
|
||||
})
|
||||
func TestParseNewTokenFrame(t *testing.T) {
|
||||
token := "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
|
||||
data := encodeVarInt(uint64(len(token)))
|
||||
data = append(data, token...)
|
||||
f, l, err := parseNewTokenFrame(data, protocol.Version1)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, token, string(f.Token))
|
||||
require.Equal(t, len(data), l)
|
||||
}
|
||||
|
||||
It("rejects empty tokens", func() {
|
||||
data := encodeVarInt(0)
|
||||
_, _, err := parseNewTokenFrame(data, protocol.Version1)
|
||||
Expect(err).To(MatchError("token must not be empty"))
|
||||
})
|
||||
func TestParseNewTokenFrameRejectsEmptyTokens(t *testing.T) {
|
||||
data := encodeVarInt(0)
|
||||
_, _, err := parseNewTokenFrame(data, protocol.Version1)
|
||||
require.EqualError(t, err, "token must not be empty")
|
||||
}
|
||||
|
||||
It("errors on EOFs", func() {
|
||||
token := "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
|
||||
data := encodeVarInt(uint64(len(token)))
|
||||
data = append(data, token...)
|
||||
_, l, err := parseNewTokenFrame(data, protocol.Version1)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(l).To(Equal(len(data)))
|
||||
for i := range data {
|
||||
_, _, err := parseNewTokenFrame(data[:i], protocol.Version1)
|
||||
Expect(err).To(MatchError(io.EOF))
|
||||
}
|
||||
})
|
||||
})
|
||||
func TestParseNewTokenFrameErrorsOnEOFs(t *testing.T) {
|
||||
token := "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
|
||||
data := encodeVarInt(uint64(len(token)))
|
||||
data = append(data, token...)
|
||||
_, l, err := parseNewTokenFrame(data, protocol.Version1)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(data), l)
|
||||
for i := range data {
|
||||
_, _, err := parseNewTokenFrame(data[:i], protocol.Version1)
|
||||
require.Equal(t, io.EOF, err)
|
||||
}
|
||||
}
|
||||
|
||||
Context("writing", func() {
|
||||
It("writes a sample frame", func() {
|
||||
token := "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
|
||||
f := &NewTokenFrame{Token: []byte(token)}
|
||||
b, err := f.Append(nil, protocol.Version1)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
expected := []byte{newTokenFrameType}
|
||||
expected = append(expected, encodeVarInt(uint64(len(token)))...)
|
||||
expected = append(expected, token...)
|
||||
Expect(b).To(Equal(expected))
|
||||
})
|
||||
|
||||
It("has the correct min length", func() {
|
||||
frame := &NewTokenFrame{Token: []byte("foobar")}
|
||||
Expect(frame.Length(protocol.Version1)).To(BeEquivalentTo(1 + quicvarint.Len(6) + 6))
|
||||
})
|
||||
})
|
||||
})
|
||||
func TestWriteNewTokenFrame(t *testing.T) {
|
||||
token := "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
|
||||
f := &NewTokenFrame{Token: []byte(token)}
|
||||
b, err := f.Append(nil, protocol.Version1)
|
||||
require.NoError(t, err)
|
||||
expected := []byte{newTokenFrameType}
|
||||
expected = append(expected, encodeVarInt(uint64(len(token)))...)
|
||||
expected = append(expected, token...)
|
||||
require.Equal(t, expected, b)
|
||||
require.Equal(t, len(b), int(f.Length(protocol.Version1)))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user