tinyrelayfile
tinyrelay/internal/replication/private_delivery_test.go/

internal/replication/private_delivery_test.go raw
1package replication
2
3import (
4 "context"
5 "strings"
6 "testing"
7
8 "github.com/FelineStateMachine/tinyrelay/internal/event"
9 "github.com/FelineStateMachine/tinyrelay/internal/storage"
10)
11
12func TestQueuedPrivateRepositoryMetadataIsNotDelivered(t *testing.T) {
13 store := openReplicationStore(t)
14 ctx := context.Background()
15 transport := &recordingTransport{}
16 handler := NewDeliveryHandler(store, transport)
17 for _, kind := range []int{event.KIND_REPO, event.KIND_REPO_STATE} {
18 e := signedEvent(t, 1)
19 e.Kind = kind
20 e.Tags = [][]string{{"d", "private"}}
21 if kind == event.KIND_REPO {
22 e.Tags = append(e.Tags, []string{"private", "true"})
23 }
24 if err := event.Sign(&e, strings.Repeat("1", 64)); err != nil {
25 t.Fatal(err)
26 }
27 if _, err := store.Save(ctx, e, storage.SaveOptions{Now: e.CreatedAt}); err != nil {
28 t.Fatal(err)
29 }
30 if err := handler(ctx, storage.Intent{Kind: "delivery", EventID: e.ID, Target: "wss://public.example"}); err != nil {
31 t.Fatal(err)
32 }
33 }
34 if len(transport.events) != 0 {
35 t.Fatal("private metadata escaped through a queued public delivery")
36 }
37}
38
39func TestPrivateScopeLookupFailureRetainsDeliveryForRetry(t *testing.T) {
40 store := openReplicationStore(t)
41 ctx := context.Background()
42 e := signedEvent(t, 1)
43 e.Kind = event.KIND_REPO_STATE
44 e.Tags = [][]string{{"d", "private"}}
45 if err := event.Sign(&e, strings.Repeat("1", 64)); err != nil {
46 t.Fatal(err)
47 }
48 if _, err := store.Save(ctx, e, storage.SaveOptions{Now: e.CreatedAt}); err != nil {
49 t.Fatal(err)
50 }
51 announcement := e
52 announcement.Kind = event.KIND_REPO
53 if err := event.Sign(&announcement, strings.Repeat("1", 64)); err != nil {
54 t.Fatal(err)
55 }
56 if _, err := store.Save(ctx, announcement, storage.SaveOptions{Now: announcement.CreatedAt}); err != nil {
57 t.Fatal(err)
58 }
59 if _, err := store.DB().ExecContext(ctx, "UPDATE events SET raw='invalid JSON' WHERE id=?", announcement.ID); err != nil {
60 t.Fatal(err)
61 }
62 transport := &recordingTransport{}
63 err := NewDeliveryHandler(store, transport)(ctx, storage.Intent{Kind: "delivery", EventID: e.ID, Target: "wss://public.example"})
64 if err == nil {
65 t.Fatal("privacy lookup failure was acknowledged instead of retained for retry")
66 }
67 if len(transport.events) != 0 {
68 t.Fatal("delivery proceeded after a privacy lookup failure")
69 }
70}

About

ownerc01503e8035f
visibilitypublic
headd730679639bf

Maintainers

  • c01503e8035f owner
  • ba1b5beed5b5 agent hermes

Clone

  • https://012.run/npub1cq2s86qrtadf36eqq3epm38wmhdynrrcwxf84eldk3f94dkv7ttsrulrz5/tinyrelay.git

Refs