2021-05-19 11:00:43 +10:00
|
|
|
import { expect } from 'chai';
|
|
|
|
|
|
|
|
|
|
import { makeLogFileName, NimWaku, NOISE_KEY_1 } from '../../test_utils';
|
|
|
|
|
import { delay } from '../delay';
|
|
|
|
|
import { Waku } from '../waku';
|
|
|
|
|
import { WakuMessage } from '../waku_message';
|
|
|
|
|
|
2021-07-28 11:19:24 +10:00
|
|
|
const TestContentTopic = '/test/1/waku-light-push/utf8';
|
|
|
|
|
|
2021-09-24 17:15:46 +10:00
|
|
|
describe('Waku Light Push [node only]', () => {
|
2021-05-19 11:00:43 +10:00
|
|
|
let waku: Waku;
|
|
|
|
|
let nimWaku: NimWaku;
|
|
|
|
|
|
|
|
|
|
afterEach(async function () {
|
|
|
|
|
nimWaku ? nimWaku.stop() : null;
|
|
|
|
|
waku ? await waku.stop() : null;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
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());
|
2022-01-19 15:43:45 +11:00
|
|
|
await waku.waitForConnectedPeer();
|
2021-05-19 11:00:43 +10:00
|
|
|
|
|
|
|
|
const messageText = 'Light Push works!';
|
2021-07-28 11:19:24 +10:00
|
|
|
const message = await WakuMessage.fromUtf8String(
|
|
|
|
|
messageText,
|
|
|
|
|
TestContentTopic
|
|
|
|
|
);
|
2021-05-19 11:00:43 +10:00
|
|
|
|
2021-06-16 23:37:13 +10:00
|
|
|
const pushResponse = await waku.lightPush.push(message);
|
2021-05-19 11:00:43 +10:00
|
|
|
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);
|
|
|
|
|
});
|
2021-06-09 12:25:56 +10:00
|
|
|
|
|
|
|
|
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({
|
2021-08-20 10:12:19 +10:00
|
|
|
pubSubTopic: customPubSubTopic,
|
2021-06-09 12:25:56 +10:00
|
|
|
staticNoiseKey: NOISE_KEY_1,
|
|
|
|
|
});
|
|
|
|
|
await waku.dial(await nimWaku.getMultiaddrWithId());
|
2022-01-19 15:43:45 +11:00
|
|
|
await waku.waitForConnectedPeer();
|
2021-06-09 12:25:56 +10:00
|
|
|
|
|
|
|
|
const nimPeerId = await nimWaku.getPeerId();
|
|
|
|
|
|
|
|
|
|
const messageText = 'Light Push works!';
|
2021-07-28 11:19:24 +10:00
|
|
|
const message = await WakuMessage.fromUtf8String(
|
|
|
|
|
messageText,
|
|
|
|
|
TestContentTopic
|
|
|
|
|
);
|
2021-06-09 12:25:56 +10:00
|
|
|
|
2021-06-16 23:37:13 +10:00
|
|
|
const pushResponse = await waku.lightPush.push(message, {
|
|
|
|
|
peerId: nimPeerId,
|
|
|
|
|
});
|
2021-06-09 12:25:56 +10:00
|
|
|
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);
|
|
|
|
|
});
|
2021-05-19 11:00:43 +10:00
|
|
|
});
|