98 lines
2.8 KiB
TypeScript

import { expect } from 'chai';
import debug from 'debug';
import { makeLogFileName, NimWaku, NOISE_KEY_1 } from '../../test_utils';
import { delay } from '../delay';
import { Protocols, Waku } from '../waku';
import { WakuMessage } from '../waku_message';
const dbg = debug('waku:test:lightpush');
const TestContentTopic = '/test/1/waku-light-push/utf8';
describe('Waku Light Push [node only]', () => {
let waku: Waku;
let nimWaku: NimWaku;
afterEach(async function () {
!!nimWaku && nimWaku.stop();
!!waku && waku.stop().catch((e) => console.log('Waku failed to stop', e));
});
it('Push successfully', async function () {
this.timeout(5_000);
nimWaku = new NimWaku(makeLogFileName(this));
await nimWaku.start({ lightpush: true });
waku = await Waku.create({
staticNoiseKey: NOISE_KEY_1,
});
await waku.dial(await nimWaku.getMultiaddrWithId());
await waku.waitForRemotePeer([Protocols.LightPush]);
const messageText = 'Light Push works!';
const message = await WakuMessage.fromUtf8String(
messageText,
TestContentTopic
);
const pushResponse = await waku.lightPush.push(message);
expect(pushResponse?.isSuccess).to.be.true;
let msgs: WakuMessage[] = [];
while (msgs.length === 0) {
await delay(200);
msgs = await nimWaku.messages();
}
expect(msgs[0].contentTopic).to.equal(message.contentTopic);
expect(msgs[0].version).to.equal(message.version);
expect(msgs[0].payloadAsUtf8).to.equal(messageText);
});
it('Push on custom pubsub topic', async function () {
this.timeout(5_000);
const customPubSubTopic = '/waku/2/custom-dapp/proto';
nimWaku = new NimWaku(makeLogFileName(this));
await nimWaku.start({ lightpush: true, topics: customPubSubTopic });
waku = await Waku.create({
pubSubTopic: customPubSubTopic,
staticNoiseKey: NOISE_KEY_1,
});
await waku.dial(await nimWaku.getMultiaddrWithId());
await waku.waitForRemotePeer([Protocols.LightPush]);
const nimPeerId = await nimWaku.getPeerId();
const messageText = 'Light Push works!';
const message = await WakuMessage.fromUtf8String(
messageText,
TestContentTopic
);
dbg('Send message via lightpush');
const pushResponse = await waku.lightPush.push(message, {
peerId: nimPeerId,
});
dbg('Ack received', pushResponse);
expect(pushResponse?.isSuccess).to.be.true;
let msgs: WakuMessage[] = [];
dbg('Waiting for message to show on nim-waku side');
while (msgs.length === 0) {
await delay(200);
msgs = await nimWaku.messages();
}
expect(msgs[0].contentTopic).to.equal(message.contentTopic);
expect(msgs[0].version).to.equal(message.version);
expect(msgs[0].payloadAsUtf8).to.equal(messageText);
});
});