fix things so relays tests work.

This commit is contained in:
fiatjaf
2023-12-22 11:38:30 -03:00
parent ddf1064da9
commit 703c29a311
2 changed files with 30 additions and 21 deletions

View File

@@ -102,7 +102,7 @@ export class AbstractRelay {
this._connected = false this._connected = false
} }
this.ws.onmessage = this._onmessage this.ws.onmessage = this._onmessage.bind(this)
}) })
return this.connectionPromise return this.connectionPromise

View File

@@ -1,9 +1,9 @@
import { afterEach, expect, test } from 'bun:test' 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' import { Relay } from './relay.ts'
let relay = new Relay('wss://public.relaying.io') let relay = new Relay('wss://relay.nostr.bg')
afterEach(() => { afterEach(() => {
relay.close() relay.close()
@@ -64,17 +64,20 @@ test('listening and publishing and closing', async () => {
let sk = generateSecretKey() let sk = generateSecretKey()
let pk = getPublicKey(sk) let pk = getPublicKey(sk)
var resolve1: (_: void) => void let resolveEose: (_: void) => void
var resolve2: (_: void) => void let resolveEvent: (_: void) => void
let resolveClose: (_: void) => void
let eventReceived: NostrEvent | undefined
let waiting = Promise.all([ const eosed = new Promise(resolve => {
new Promise(resolve => { resolveEose = resolve
resolve1 = resolve })
}), const evented = new Promise(resolve => {
new Promise(resolve => { resolveEvent = resolve
resolve2 = resolve })
}), const closed = new Promise(resolve => {
]) resolveClose = resolve
})
let sub = relay.subscribe( let sub = relay.subscribe(
[ [
@@ -85,17 +88,20 @@ test('listening and publishing and closing', async () => {
], ],
{ {
onevent(event) { onevent(event) {
expect(event).toHaveProperty('pubkey', pk) eventReceived = event
expect(event).toHaveProperty('kind', 23571) resolveEvent()
expect(event).toHaveProperty('content', 'nostr-tools test suite') },
resolve1() oneose() {
resolveEose()
}, },
onclose() { onclose() {
resolve2() resolveClose()
}, },
}, },
) )
await eosed
let event = finalizeEvent( let event = finalizeEvent(
{ {
kind: 23571, kind: 23571,
@@ -107,9 +113,12 @@ test('listening and publishing and closing', async () => {
) )
await relay.publish(event) await relay.publish(event)
await evented
sub.close() sub.close()
await closed
let [t1, t2] = await waiting expect(eventReceived).toBeDefined()
expect(t1).toBeUndefined() expect(eventReceived).toHaveProperty('pubkey', pk)
expect(t2).toBeUndefined() expect(eventReceived).toHaveProperty('kind', 23571)
expect(eventReceived).toHaveProperty('content', 'nostr-tools test suite')
}) })