mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-09 00:28:51 +00:00
we need websocket polyfill on relay tests.
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
207
relay.test.js
207
relay.test.js
@@ -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])
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user