diff --git a/subscription_test.go b/subscription_test.go new file mode 100644 index 0000000..082d73a --- /dev/null +++ b/subscription_test.go @@ -0,0 +1,45 @@ +package nostr + +import ( + "context" + "testing" + "time" +) + +// test if we can connect to wss://relay.damus.io and fetch a couple of random events +func TestSubscribe(t *testing.T) { + rl := mustRelayConnect("wss://relay.damus.io") + defer rl.Close("") + + sub, err := rl.Subscribe(context.Background(), Filters{{Kinds: []int{1}, Limit: 2}}) + if err != nil { + t.Errorf("subscription failed: %v", err) + return + } + + timeout := time.After(5 * time.Second) + events := 0 + + for { + select { + case event := <-sub.Events: + if event == nil { + t.Errorf("event is nil: %v", event) + } + events++ + case <-sub.EndOfStoredEvents: + goto end + case <-rl.ConnectionContext.Done(): + t.Errorf("connection closed: %v", rl.ConnectionContext.Err()) + goto end + case <-timeout: + t.Errorf("timeout") + goto end + } + } + +end: + if events != 2 { + t.Errorf("expected 2 events, got %d", events) + } +}