New
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package protocol
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestXORHeaderProfilesRoundTrip(t *testing.T) {
|
||||
for n := 0; n < 256; n++ {
|
||||
mask := byte(n)
|
||||
if ('U'^mask)&7 < 5 {
|
||||
continue
|
||||
}
|
||||
|
||||
var request bytes.Buffer
|
||||
if err := WriteRequestFrameProfile(&request, 7, []byte("CPROBE -"), mask); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
requestID, _, payload, err := ReadRequestFrameProfile(&request, mask)
|
||||
if err != nil || requestID != 7 || !bytes.Equal(payload, []byte("CPROBE -")) {
|
||||
t.Fatalf("mask %02x request did not round-trip: id=%d payload=%q err=%v", mask, requestID, payload, err)
|
||||
}
|
||||
|
||||
var response bytes.Buffer
|
||||
if err := WriteResponseFrameProfile(&response, 7, []byte("PROBEOK"), mask); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
responseID, payload, err := ReadResponseFrameProfile(&response, mask)
|
||||
if err != nil || responseID != 7 || !bytes.Equal(payload, []byte("PROBEOK")) {
|
||||
t.Fatalf("mask %02x response did not round-trip: id=%d payload=%q err=%v", mask, responseID, payload, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type profiledBuffer struct {
|
||||
bytes.Buffer
|
||||
mask byte
|
||||
}
|
||||
|
||||
func (b *profiledBuffer) HeaderMask() byte { return b.mask }
|
||||
|
||||
func TestServerResponseUsesConnectionProfile(t *testing.T) {
|
||||
profiled := &profiledBuffer{mask: 0x3a}
|
||||
if err := WriteResponseFrame(profiled, 9, []byte("ok")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got := profiled.Bytes()[0]; got != 'O'^profiled.mask {
|
||||
t.Fatalf("first byte=%02x, want %02x", got, byte('O')^profiled.mask)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user