diff options
| author | Gab <24553253+gabrix73@users.noreply.github.com> | 2026-08-13 14:04:30 +0200 |
|---|---|---|
| committer | Gab <24553253+gabrix73@users.noreply.github.com> | 2026-08-13 14:04:30 +0200 |
| commit | 994071243fc80990cf09e820b671006e9bd31c76 (patch) | |
| tree | b65e02724b98033240aa6f9d153acea021abc456 /katzenpost/dispatcher/frame_test.go | |
| parent | 47d903de3bca4165e96d6ec8830eafbacf524cd2 (diff) | |
| download | yamnweb-994071243fc80990cf09e820b671006e9bd31c76.tar.gz yamnweb-994071243fc80990cf09e820b671006e9bd31c76.tar.xz yamnweb-994071243fc80990cf09e820b671006e9bd31c76.zip | |
Separate active YAMN code from Katzenpost PoC
Diffstat (limited to 'katzenpost/dispatcher/frame_test.go')
| -rw-r--r-- | katzenpost/dispatcher/frame_test.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/katzenpost/dispatcher/frame_test.go b/katzenpost/dispatcher/frame_test.go new file mode 100644 index 0000000..21c84ba --- /dev/null +++ b/katzenpost/dispatcher/frame_test.go @@ -0,0 +1,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") + } +} |
