From 703c29a311a7af6513108547488b773beb220ee9 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Fri, 22 Dec 2023 11:38:30 -0300 Subject: [PATCH] fix things so relays tests work. --- abstract-relay.ts | 2 +- relay.test.ts | 49 ++++++++++++++++++++++++++++------------------- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/abstract-relay.ts b/abstract-relay.ts index 1a8d920..ea9f820 100644 --- a/abstract-relay.ts +++ b/abstract-relay.ts @@ -102,7 +102,7 @@ export class AbstractRelay { this._connected = false } - this.ws.onmessage = this._onmessage + this.ws.onmessage = this._onmessage.bind(this) }) return this.connectionPromise diff --git a/relay.test.ts b/relay.test.ts index fb07f0c..0683cfe 100644 --- a/relay.test.ts +++ b/relay.test.ts @@ -1,9 +1,9 @@ import { afterEach, expect, test } from 'bun:test' -import { finalizeEvent, generateSecretKey, getPublicKey } from './pure.ts' +import { NostrEvent, finalizeEvent, generateSecretKey, getPublicKey } from './pure.ts' import { Relay } from './relay.ts' -let relay = new Relay('wss://public.relaying.io') +let relay = new Relay('wss://relay.nostr.bg') afterEach(() => { relay.close() @@ -64,17 +64,20 @@ test('listening and publishing and closing', async () => { let sk = generateSecretKey() let pk = getPublicKey(sk) - var resolve1: (_: void) => void - var resolve2: (_: void) => void + let resolveEose: (_: void) => void + let resolveEvent: (_: void) => void + let resolveClose: (_: void) => void + let eventReceived: NostrEvent | undefined - let waiting = Promise.all([ - new Promise(resolve => { - resolve1 = resolve - }), - new Promise(resolve => { - resolve2 = resolve - }), - ]) + const eosed = new Promise(resolve => { + resolveEose = resolve + }) + const evented = new Promise(resolve => { + resolveEvent = resolve + }) + const closed = new Promise(resolve => { + resolveClose = resolve + }) let sub = relay.subscribe( [ @@ -85,17 +88,20 @@ test('listening and publishing and closing', async () => { ], { onevent(event) { - expect(event).toHaveProperty('pubkey', pk) - expect(event).toHaveProperty('kind', 23571) - expect(event).toHaveProperty('content', 'nostr-tools test suite') - resolve1() + eventReceived = event + resolveEvent() + }, + oneose() { + resolveEose() }, onclose() { - resolve2() + resolveClose() }, }, ) + await eosed + let event = finalizeEvent( { kind: 23571, @@ -107,9 +113,12 @@ test('listening and publishing and closing', async () => { ) await relay.publish(event) + await evented sub.close() + await closed - let [t1, t2] = await waiting - expect(t1).toBeUndefined() - expect(t2).toBeUndefined() + expect(eventReceived).toBeDefined() + expect(eventReceived).toHaveProperty('pubkey', pk) + expect(eventReceived).toHaveProperty('kind', 23571) + expect(eventReceived).toHaveProperty('content', 'nostr-tools test suite') })