we need websocket polyfill on relay tests.

This commit is contained in:
fiatjaf
2022-12-21 17:09:00 -03:00
parent 8aa31bb437
commit 26e6da6ba3
2 changed files with 104 additions and 106 deletions

View File

@@ -37,7 +37,8 @@
"node-fetch": "2", "node-fetch": "2",
"ts-jest": "^29.0.3", "ts-jest": "^29.0.3",
"tsd": "^0.22.0", "tsd": "^0.22.0",
"typescript": "^4.9.4" "typescript": "^4.9.4",
"websocket-polyfill": "^0.0.3"
}, },
"scripts": { "scripts": {
"build": "node build.js", "build": "node build.js",

View File

@@ -1,5 +1,6 @@
/* eslint-env jest */ /* eslint-env jest */
require('websocket-polyfill')
const { const {
relayInit, relayInit,
generatePrivateKey, generatePrivateKey,
@@ -8,110 +9,106 @@ const {
signEvent signEvent
} = require('./lib/nostr.cjs') } = require('./lib/nostr.cjs')
describe('relay interaction', () => { let relay = relayInit('wss://nostr-pub.semisol.dev/')
let relay = relayInit('wss://nostr-pub.semisol.dev/')
beforeAll(() => { beforeAll(() => {
relay.connect() relay.connect()
}) })
afterAll(async () => { afterAll(async () => {
await relay.close() await relay.close()
}) })
test('connectivity', () => { test('connectivity', () => {
return expect( return expect(
new Promise(resolve => { new Promise(resolve => {
relay.on('connect', () => { relay.on('connect', () => {
resolve(true) resolve(true)
}) })
relay.on('error', () => { relay.on('error', () => {
resolve(false) resolve(false)
}) })
}) })
).resolves.toBe(true) ).resolves.toBe(true)
}) })
test('querying', () => { test('querying', () => {
var resolve1 var resolve1
var resolve2 var resolve2
let sub = relay.sub([ let sub = relay.sub([
{ {
ids: [ ids: ['d7dd5eb3ab747e16f8d0212d53032ea2a7cadef53837e5a6c66d42849fcb9027']
'd7dd5eb3ab747e16f8d0212d53032ea2a7cadef53837e5a6c66d42849fcb9027' }
] ])
} sub.on('event', event => {
]) expect(event).toHaveProperty(
sub.on('event', event => { 'id',
expect(event).toHaveProperty( 'd7dd5eb3ab747e16f8d0212d53032ea2a7cadef53837e5a6c66d42849fcb9027'
'id', )
'd7dd5eb3ab747e16f8d0212d53032ea2a7cadef53837e5a6c66d42849fcb9027' resolve1(true)
) })
resolve1(true) sub.on('eose', () => {
}) resolve2(true)
sub.on('eose', () => { })
resolve2(true)
}) return expect(
Promise.all([
return expect( new Promise(resolve => {
Promise.all([ resolve1 = resolve
new Promise(resolve => { }),
resolve1 = resolve new Promise(resolve => {
}), resolve2 = resolve
new Promise(resolve => { })
resolve2 = resolve ])
}) ).resolves.toEqual([true, true])
]) })
).resolves.toEqual([true, true])
}) test('listening (twice) and publishing', async () => {
let sk = generatePrivateKey()
test('listening (twice) and publishing', async () => { let pk = getPublicKey(sk)
let sk = generatePrivateKey() var resolve1
let pk = getPublicKey(sk) var resolve2
var resolve1
var resolve2 let sub = relay.sub([
{
let sub = relay.sub([ kinds: [27572],
{ authors: [pk]
kinds: [27572], }
authors: [pk] ])
}
]) sub.on('event', event => {
expect(event).toHaveProperty('pubkey', pk)
sub.on('event', event => { expect(event).toHaveProperty('kind', 27572)
expect(event).toHaveProperty('pubkey', pk) expect(event).toHaveProperty('content', 'nostr-tools test suite')
expect(event).toHaveProperty('kind', 27572) resolve1(true)
expect(event).toHaveProperty('content', 'nostr-tools test suite') })
resolve1(true) sub.on('event', event => {
}) expect(event).toHaveProperty('pubkey', pk)
sub.on('event', event => { expect(event).toHaveProperty('kind', 27572)
expect(event).toHaveProperty('pubkey', pk) expect(event).toHaveProperty('content', 'nostr-tools test suite')
expect(event).toHaveProperty('kind', 27572) resolve2(true)
expect(event).toHaveProperty('content', 'nostr-tools test suite') })
resolve2(true)
}) let event = {
kind: 27572,
let event = { pubkey: pk,
kind: 27572, created_at: Math.floor(Date.now() / 1000),
pubkey: pk, tags: [],
created_at: Math.floor(Date.now() / 1000), content: 'nostr-tools test suite'
tags: [], }
content: 'nostr-tools test suite' event.id = getEventHash(event)
} event.sig = await signEvent(event, sk)
event.id = getEventHash(event)
event.sig = await signEvent(event, sk) relay.publish(event)
return expect(
relay.publish(event) Promise.all([
return expect( new Promise(resolve => {
Promise.all([ resolve1 = resolve
new Promise(resolve => { }),
resolve1 = resolve new Promise(resolve => {
}), resolve2 = resolve
new Promise(resolve => { })
resolve2 = resolve ])
}) ).resolves.toEqual([true, true])
])
).resolves.toEqual([true, true])
})
}) })