blob: 21c84bac793116191c158c1448e912a497706b58 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package dispatcher
import (
"bytes"
"testing"
"time"
)
func TestSplitAndReassembleEnvelope(t *testing.T) {
encoded := bytes.Repeat([]byte("yamn-envelope\n"), 900)
payloads, err := SplitEnvelope(encoded)
if err != nil {
t.Fatal(err)
}
if len(payloads) < 2 {
t.Fatal("expected multiple frames")
}
reassembler := NewReassembler(time.Minute)
var result []byte
for _, payload := range payloads {
if len(payload) > MaxSphinxPayload {
t.Fatalf("payload exceeds limit: %d", len(payload))
}
frame, err := DecodeFrame(payload)
if err != nil {
t.Fatal(err)
}
assembled, complete, err := reassembler.Add(frame)
if err != nil {
t.Fatal(err)
}
if complete {
result = assembled
}
}
if !bytes.Equal(result, encoded) {
t.Fatal("reassembled envelope differs")
}
}
func TestDecodeFrameRejectsOversizedPayload(t *testing.T) {
if _, err := DecodeFrame(make([]byte, MaxSphinxPayload+1)); err == nil {
t.Fatal("expected oversized payload rejection")
}
}
|