subscription_test.go raw
1 package ws
2
3 // const RELAY = "wss://nos.lol"
4
5 // // test if we can fetch a couple of random events
6 // func TestSubscribeBasic(t *testing.T) {
7 // rl := mustRelayConnect(t, RELAY)
8 // defer rl.Close()
9 //
10 // sub, err := rl.Subscribe(
11 // context.Background(), filters.New(
12 // &filter.F{
13 // Kinds: &kinds.T{K: []*kind.T{kind.TextNote}},
14 // Limit: values.ToUintPointer(2),
15 // },
16 // ),
17 // )
18 // assert.NoError(t, err)
19 // timeout := time.After(5 * time.Second)
20 // n := 0
21 // for {
22 // select {
23 // case event := <-sub.Events:
24 // assert.NotNil(t, event)
25 // n++
26 // case <-sub.EndOfStoredEvents:
27 // assert.Equal(t, 2, n)
28 // sub.Unsub()
29 // return
30 // case <-rl.Context().Done():
31 // t.Fatalf("connection closed: %v", rl.Context().Err())
32 // case <-timeout:
33 // t.Fatalf("timeout")
34 // }
35 // }
36 // }
37 //
38 // // test if we can do multiple nested subscriptions
39 // func TestNestedSubscriptions(t *testing.T) {
40 // rl := mustRelayConnect(t, RELAY)
41 // defer rl.Close()
42 //
43 // n := atomic.Uint32{}
44 //
45 // // fetch 2 replies to a note
46 // sub, err := rl.Subscribe(
47 // context.Background(), filters.New(
48 // &filter.F{
49 // Kinds: kinds.New(kind.TextNote),
50 // Tags: tags.New(
51 // tag.New(
52 // "e",
53 // "0e34a74f8547e3b95d52a2543719b109fd0312aba144e2ef95cba043f42fe8c5",
54 // ),
55 // ),
56 // Limit: values.ToUintPointer(3),
57 // },
58 // ),
59 // )
60 // assert.NoError(t, err)
61 //
62 // for {
63 // select {
64 // case ev := <-sub.Events:
65 // // now fetch author of this
66 // sub, err := rl.Subscribe(
67 // context.Background(), filters.New(
68 // &filter.F{
69 // Kinds: kinds.New(kind.ProfileMetadata),
70 // Authors: tag.New(ev.PubKeyString()),
71 // Limit: values.ToUintPointer(1),
72 // },
73 // ),
74 // )
75 // assert.NoError(t, err)
76 //
77 // for {
78 // select {
79 // case <-sub.Events:
80 // // do another subscription here in "sync" mode, just so
81 // // we're sure things aren't blocking
82 // rl.QuerySync(
83 // context.Background(),
84 // &filter.F{Limit: values.ToUintPointer(1)},
85 // )
86 // n.Add(1)
87 // if n.Load() == 3 {
88 // // if we get here, it means the test passed
89 // return
90 // }
91 // case <-sub.Context.Done():
92 // case <-sub.EndOfStoredEvents:
93 // sub.Unsub()
94 // }
95 // }
96 // case <-sub.EndOfStoredEvents:
97 // sub.Unsub()
98 // return
99 // case <-sub.Context.Done():
100 // t.Fatalf("connection closed: %v", rl.Context().Err())
101 // return
102 // }
103 // }
104 // }
105