@libp2p/pubsub 1.0.2 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/peer-streams.d.ts +2 -6
- package/dist/src/peer-streams.d.ts.map +1 -1
- package/dist/src/peer-streams.js +4 -9
- package/dist/src/peer-streams.js.map +1 -1
- package/package.json +94 -78
- package/src/peer-streams.ts +6 -10
- package/dist/test/emit-self.spec.d.ts +0 -2
- package/dist/test/emit-self.spec.d.ts.map +0 -1
- package/dist/test/emit-self.spec.js +0 -63
- package/dist/test/emit-self.spec.js.map +0 -1
- package/dist/test/instance.spec.d.ts +0 -2
- package/dist/test/instance.spec.d.ts.map +0 -1
- package/dist/test/instance.spec.js +0 -50
- package/dist/test/instance.spec.js.map +0 -1
- package/dist/test/lifesycle.spec.d.ts +0 -2
- package/dist/test/lifesycle.spec.d.ts.map +0 -1
- package/dist/test/lifesycle.spec.js +0 -192
- package/dist/test/lifesycle.spec.js.map +0 -1
- package/dist/test/message.spec.d.ts +0 -2
- package/dist/test/message.spec.d.ts.map +0 -1
- package/dist/test/message.spec.js +0 -83
- package/dist/test/message.spec.js.map +0 -1
- package/dist/test/pubsub.spec.d.ts +0 -2
- package/dist/test/pubsub.spec.d.ts.map +0 -1
- package/dist/test/pubsub.spec.js +0 -310
- package/dist/test/pubsub.spec.js.map +0 -1
- package/dist/test/sign.spec.d.ts +0 -2
- package/dist/test/sign.spec.d.ts.map +0 -1
- package/dist/test/sign.spec.js +0 -93
- package/dist/test/sign.spec.js.map +0 -1
- package/dist/test/topic-validators.spec.d.ts +0 -2
- package/dist/test/topic-validators.spec.d.ts.map +0 -1
- package/dist/test/topic-validators.spec.js +0 -86
- package/dist/test/topic-validators.spec.js.map +0 -1
- package/dist/test/utils/index.d.ts +0 -23
- package/dist/test/utils/index.d.ts.map +0 -1
- package/dist/test/utils/index.js +0 -86
- package/dist/test/utils/index.js.map +0 -1
- package/dist/test/utils.spec.d.ts +0 -2
- package/dist/test/utils.spec.d.ts.map +0 -1
- package/dist/test/utils.spec.js +0 -53
- package/dist/test/utils.spec.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,192 +0,0 @@
|
|
1
|
-
import { expect } from 'aegir/utils/chai.js';
|
2
|
-
import sinon from 'sinon';
|
3
|
-
import { PubsubBaseProtocol } from '../src/index.js';
|
4
|
-
import { createPeerId, createMockRegistrar, PubsubImplementation, ConnectionPair } from './utils/index.js';
|
5
|
-
class PubsubProtocol extends PubsubBaseProtocol {
|
6
|
-
async _publish(message) {
|
7
|
-
throw new Error('Method not implemented.');
|
8
|
-
}
|
9
|
-
}
|
10
|
-
describe('pubsub base lifecycle', () => {
|
11
|
-
describe('should start and stop properly', () => {
|
12
|
-
let pubsub;
|
13
|
-
let sinonMockRegistrar;
|
14
|
-
beforeEach(async () => {
|
15
|
-
const peerId = await createPeerId();
|
16
|
-
sinonMockRegistrar = {
|
17
|
-
handle: sinon.stub(),
|
18
|
-
register: sinon.stub().returns(`id-${Math.random()}`),
|
19
|
-
unregister: sinon.stub()
|
20
|
-
};
|
21
|
-
pubsub = new PubsubProtocol({
|
22
|
-
debugName: 'pubsub',
|
23
|
-
multicodecs: ['/pubsub/1.0.0'],
|
24
|
-
libp2p: {
|
25
|
-
peerId: peerId,
|
26
|
-
registrar: sinonMockRegistrar
|
27
|
-
}
|
28
|
-
});
|
29
|
-
expect(pubsub.peers.size).to.be.eql(0);
|
30
|
-
});
|
31
|
-
afterEach(() => {
|
32
|
-
sinon.restore();
|
33
|
-
});
|
34
|
-
it('should be able to start and stop', async () => {
|
35
|
-
await pubsub.start();
|
36
|
-
expect(sinonMockRegistrar.handle).to.have.property('calledOnce', true);
|
37
|
-
expect(sinonMockRegistrar.register).to.have.property('calledOnce', true);
|
38
|
-
await pubsub.stop();
|
39
|
-
expect(sinonMockRegistrar.unregister).to.have.property('calledOnce', true);
|
40
|
-
});
|
41
|
-
it('starting should not throw if already started', async () => {
|
42
|
-
await pubsub.start();
|
43
|
-
await pubsub.start();
|
44
|
-
expect(sinonMockRegistrar.handle).to.have.property('calledOnce', true);
|
45
|
-
expect(sinonMockRegistrar.register).to.have.property('calledOnce', true);
|
46
|
-
await pubsub.stop();
|
47
|
-
expect(sinonMockRegistrar.unregister).to.have.property('calledOnce', true);
|
48
|
-
});
|
49
|
-
it('stopping should not throw if not started', async () => {
|
50
|
-
await pubsub.stop();
|
51
|
-
expect(sinonMockRegistrar.register).to.have.property('calledOnce', false);
|
52
|
-
expect(sinonMockRegistrar.unregister).to.have.property('calledOnce', false);
|
53
|
-
});
|
54
|
-
});
|
55
|
-
describe('should be able to register two nodes', () => {
|
56
|
-
const protocol = '/pubsub/1.0.0';
|
57
|
-
let pubsubA, pubsubB;
|
58
|
-
let peerIdA, peerIdB;
|
59
|
-
const registrarRecordA = new Map();
|
60
|
-
const registrarRecordB = new Map();
|
61
|
-
// mount pubsub
|
62
|
-
beforeEach(async () => {
|
63
|
-
peerIdA = await createPeerId();
|
64
|
-
peerIdB = await createPeerId();
|
65
|
-
pubsubA = new PubsubImplementation({
|
66
|
-
multicodecs: [protocol],
|
67
|
-
libp2p: {
|
68
|
-
peerId: peerIdA,
|
69
|
-
registrar: createMockRegistrar(registrarRecordA)
|
70
|
-
}
|
71
|
-
});
|
72
|
-
pubsubB = new PubsubImplementation({
|
73
|
-
multicodecs: [protocol],
|
74
|
-
libp2p: {
|
75
|
-
peerId: peerIdB,
|
76
|
-
registrar: createMockRegistrar(registrarRecordB)
|
77
|
-
}
|
78
|
-
});
|
79
|
-
});
|
80
|
-
// start pubsub
|
81
|
-
beforeEach(() => {
|
82
|
-
pubsubA.start();
|
83
|
-
pubsubB.start();
|
84
|
-
expect(registrarRecordA).to.have.lengthOf(1);
|
85
|
-
expect(registrarRecordB).to.have.lengthOf(1);
|
86
|
-
});
|
87
|
-
afterEach(async () => {
|
88
|
-
sinon.restore();
|
89
|
-
return await Promise.all([
|
90
|
-
pubsubA.stop(),
|
91
|
-
pubsubB.stop()
|
92
|
-
]);
|
93
|
-
});
|
94
|
-
it('should handle onConnect as expected', async () => {
|
95
|
-
const onConnectA = registrarRecordA.get(protocol).onConnect;
|
96
|
-
const handlerB = registrarRecordB.get(protocol).handler;
|
97
|
-
// Notice peers of connection
|
98
|
-
const [c0, c1] = ConnectionPair();
|
99
|
-
await onConnectA(peerIdB, c0);
|
100
|
-
await handlerB({
|
101
|
-
protocol,
|
102
|
-
stream: c1.stream,
|
103
|
-
connection: {
|
104
|
-
remotePeer: peerIdA
|
105
|
-
}
|
106
|
-
});
|
107
|
-
expect(pubsubA.peers.size).to.be.eql(1);
|
108
|
-
expect(pubsubB.peers.size).to.be.eql(1);
|
109
|
-
});
|
110
|
-
it('should use the latest connection if onConnect is called more than once', async () => {
|
111
|
-
const onConnectA = registrarRecordA.get(protocol).onConnect;
|
112
|
-
const handlerB = registrarRecordB.get(protocol).handler;
|
113
|
-
// Notice peers of connection
|
114
|
-
const [c0, c1] = ConnectionPair();
|
115
|
-
const [c2] = ConnectionPair();
|
116
|
-
sinon.spy(c0, 'newStream');
|
117
|
-
await onConnectA(peerIdB, c0);
|
118
|
-
await handlerB({
|
119
|
-
protocol,
|
120
|
-
stream: c1.stream,
|
121
|
-
connection: {
|
122
|
-
remotePeer: peerIdA
|
123
|
-
}
|
124
|
-
});
|
125
|
-
expect(c0.newStream).to.have.property('callCount', 1);
|
126
|
-
// @ts-expect-error _removePeer is a protected method
|
127
|
-
sinon.spy(pubsubA, '_removePeer');
|
128
|
-
sinon.spy(c2, 'newStream');
|
129
|
-
await onConnectA(peerIdB, c2);
|
130
|
-
expect(c2.newStream).to.have.property('callCount', 1);
|
131
|
-
// @ts-expect-error _removePeer is a protected method
|
132
|
-
expect(pubsubA._removePeer).to.have.property('callCount', 0);
|
133
|
-
// Verify the first stream was closed
|
134
|
-
// @ts-expect-error .returnValues is a sinon property
|
135
|
-
const { stream: firstStream } = await c0.newStream.returnValues[0];
|
136
|
-
try {
|
137
|
-
await firstStream.sink(['test']);
|
138
|
-
}
|
139
|
-
catch (err) {
|
140
|
-
expect(err).to.exist();
|
141
|
-
return;
|
142
|
-
}
|
143
|
-
expect.fail('original stream should have ended');
|
144
|
-
});
|
145
|
-
it('should handle newStream errors in onConnect', async () => {
|
146
|
-
const onConnectA = registrarRecordA.get(protocol).onConnect;
|
147
|
-
const handlerB = registrarRecordB.get(protocol).handler;
|
148
|
-
// Notice peers of connection
|
149
|
-
const [c0, c1] = ConnectionPair();
|
150
|
-
const error = new Error('new stream error');
|
151
|
-
sinon.stub(c0, 'newStream').throws(error);
|
152
|
-
await onConnectA(peerIdB, c0);
|
153
|
-
await handlerB({
|
154
|
-
protocol,
|
155
|
-
stream: c1.stream,
|
156
|
-
connection: {
|
157
|
-
remotePeer: peerIdA
|
158
|
-
}
|
159
|
-
});
|
160
|
-
expect(c0.newStream).to.have.property('callCount', 1);
|
161
|
-
});
|
162
|
-
it('should handle onDisconnect as expected', async () => {
|
163
|
-
const onConnectA = registrarRecordA.get(protocol).onConnect;
|
164
|
-
const onDisconnectA = registrarRecordA.get(protocol).onDisconnect;
|
165
|
-
const handlerB = registrarRecordB.get(protocol).handler;
|
166
|
-
const onDisconnectB = registrarRecordB.get(protocol).onDisconnect;
|
167
|
-
// Notice peers of connection
|
168
|
-
const [c0, c1] = ConnectionPair();
|
169
|
-
await onConnectA(peerIdB, c0);
|
170
|
-
await handlerB({
|
171
|
-
protocol,
|
172
|
-
stream: c1.stream,
|
173
|
-
connection: {
|
174
|
-
remotePeer: peerIdA
|
175
|
-
}
|
176
|
-
});
|
177
|
-
// Notice peers of disconnect
|
178
|
-
onDisconnectA(peerIdB);
|
179
|
-
onDisconnectB(peerIdA);
|
180
|
-
expect(pubsubA.peers.size).to.be.eql(0);
|
181
|
-
expect(pubsubB.peers.size).to.be.eql(0);
|
182
|
-
});
|
183
|
-
it('should handle onDisconnect for unknown peers', () => {
|
184
|
-
const onDisconnectA = registrarRecordA.get(protocol).onDisconnect;
|
185
|
-
expect(pubsubA.peers.size).to.be.eql(0);
|
186
|
-
// Notice peers of disconnect
|
187
|
-
onDisconnectA(peerIdB);
|
188
|
-
expect(pubsubA.peers.size).to.be.eql(0);
|
189
|
-
});
|
190
|
-
});
|
191
|
-
});
|
192
|
-
//# sourceMappingURL=lifesycle.spec.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"lifesycle.spec.js","sourceRoot":"","sources":["../../test/lifesycle.spec.ts"],"names":[],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"message.spec.d.ts","sourceRoot":"","sources":["../../test/message.spec.ts"],"names":[],"mappings":""}
|
@@ -1,83 +0,0 @@
|
|
1
|
-
/* eslint-env mocha */
|
2
|
-
import { expect } from 'aegir/utils/chai.js';
|
3
|
-
import sinon from 'sinon';
|
4
|
-
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
5
|
-
import { PubsubBaseProtocol } from '../src/index.js';
|
6
|
-
import { createPeerId, mockRegistrar } from './utils/index.js';
|
7
|
-
class PubsubProtocol extends PubsubBaseProtocol {
|
8
|
-
async _publish(message) {
|
9
|
-
throw new Error('Method not implemented');
|
10
|
-
}
|
11
|
-
async buildMessage(message) {
|
12
|
-
return await this._buildMessage(message);
|
13
|
-
}
|
14
|
-
}
|
15
|
-
describe('pubsub base messages', () => {
|
16
|
-
let peerId;
|
17
|
-
let pubsub;
|
18
|
-
before(async () => {
|
19
|
-
peerId = await createPeerId();
|
20
|
-
pubsub = new PubsubProtocol({
|
21
|
-
debugName: 'pubsub',
|
22
|
-
multicodecs: ['/pubsub/1.0.0'],
|
23
|
-
libp2p: {
|
24
|
-
peerId: peerId,
|
25
|
-
registrar: mockRegistrar
|
26
|
-
}
|
27
|
-
});
|
28
|
-
});
|
29
|
-
afterEach(() => {
|
30
|
-
sinon.restore();
|
31
|
-
});
|
32
|
-
it('_buildMessage normalizes and signs messages', async () => {
|
33
|
-
const message = {
|
34
|
-
from: peerId.multihash.bytes,
|
35
|
-
receivedFrom: peerId.toString(),
|
36
|
-
data: uint8ArrayFromString('hello'),
|
37
|
-
topicIDs: ['test-topic']
|
38
|
-
};
|
39
|
-
const signedMessage = await pubsub.buildMessage(message);
|
40
|
-
await expect(pubsub.validate(signedMessage)).to.eventually.not.be.rejected();
|
41
|
-
});
|
42
|
-
it('validate with StrictNoSign will reject a message with from, signature, key, seqno present', async () => {
|
43
|
-
const message = {
|
44
|
-
from: peerId.multihash.bytes,
|
45
|
-
receivedFrom: peerId.toString(),
|
46
|
-
data: uint8ArrayFromString('hello'),
|
47
|
-
topicIDs: ['test-topic']
|
48
|
-
};
|
49
|
-
sinon.stub(pubsub, 'globalSignaturePolicy').value('StrictSign');
|
50
|
-
const signedMessage = await pubsub.buildMessage(message);
|
51
|
-
sinon.stub(pubsub, 'globalSignaturePolicy').value('StrictNoSign');
|
52
|
-
await expect(pubsub.validate(signedMessage)).to.eventually.be.rejected();
|
53
|
-
delete signedMessage.from;
|
54
|
-
await expect(pubsub.validate(signedMessage)).to.eventually.be.rejected();
|
55
|
-
delete signedMessage.signature;
|
56
|
-
await expect(pubsub.validate(signedMessage)).to.eventually.be.rejected();
|
57
|
-
delete signedMessage.key;
|
58
|
-
await expect(pubsub.validate(signedMessage)).to.eventually.be.rejected();
|
59
|
-
delete signedMessage.seqno;
|
60
|
-
await expect(pubsub.validate(signedMessage)).to.eventually.not.be.rejected();
|
61
|
-
});
|
62
|
-
it('validate with StrictNoSign will validate a message without a signature, key, and seqno', async () => {
|
63
|
-
const message = {
|
64
|
-
from: peerId.multihash.bytes,
|
65
|
-
receivedFrom: peerId.toString(),
|
66
|
-
data: uint8ArrayFromString('hello'),
|
67
|
-
topicIDs: ['test-topic']
|
68
|
-
};
|
69
|
-
sinon.stub(pubsub, 'globalSignaturePolicy').value('StrictNoSign');
|
70
|
-
const signedMessage = await pubsub.buildMessage(message);
|
71
|
-
await expect(pubsub.validate(signedMessage)).to.eventually.not.be.rejected();
|
72
|
-
});
|
73
|
-
it('validate with StrictSign requires a signature', async () => {
|
74
|
-
const message = {
|
75
|
-
from: peerId.multihash.bytes,
|
76
|
-
receivedFrom: peerId.toString(),
|
77
|
-
data: uint8ArrayFromString('hello'),
|
78
|
-
topicIDs: ['test-topic']
|
79
|
-
};
|
80
|
-
await expect(pubsub.validate(message)).to.be.rejectedWith(Error, 'Signing required and no signature was present');
|
81
|
-
});
|
82
|
-
});
|
83
|
-
//# sourceMappingURL=message.spec.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"message.spec.js","sourceRoot":"","sources":["../../test/message.spec.ts"],"names":[],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"pubsub.spec.d.ts","sourceRoot":"","sources":["../../test/pubsub.spec.ts"],"names":[],"mappings":""}
|
package/dist/test/pubsub.spec.js
DELETED
@@ -1,310 +0,0 @@
|
|
1
|
-
/* eslint max-nested-callbacks: ["error", 6] */
|
2
|
-
import { expect } from 'aegir/utils/chai.js';
|
3
|
-
import sinon from 'sinon';
|
4
|
-
import pWaitFor from 'p-wait-for';
|
5
|
-
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
6
|
-
import { PeerStreams } from '../src/peer-streams.js';
|
7
|
-
import { createPeerId, createMockRegistrar, ConnectionPair, mockRegistrar, PubsubImplementation } from './utils/index.js';
|
8
|
-
const protocol = '/pubsub/1.0.0';
|
9
|
-
const topic = 'test-topic';
|
10
|
-
const message = uint8ArrayFromString('hello');
|
11
|
-
describe('pubsub base implementation', () => {
|
12
|
-
describe('publish', () => {
|
13
|
-
let pubsub;
|
14
|
-
beforeEach(async () => {
|
15
|
-
const peerId = await createPeerId();
|
16
|
-
pubsub = new PubsubImplementation({
|
17
|
-
libp2p: {
|
18
|
-
peerId: peerId,
|
19
|
-
registrar: mockRegistrar
|
20
|
-
},
|
21
|
-
multicodecs: [protocol]
|
22
|
-
});
|
23
|
-
});
|
24
|
-
afterEach(() => pubsub.stop());
|
25
|
-
it('calls _publish for router to forward messages', async () => {
|
26
|
-
sinon.spy(pubsub, '_publish');
|
27
|
-
await pubsub.start();
|
28
|
-
await pubsub.publish(topic, message);
|
29
|
-
// @ts-expect-error .callCount is a added by sinon
|
30
|
-
expect(pubsub._publish.callCount).to.eql(1);
|
31
|
-
});
|
32
|
-
it('should sign messages on publish', async () => {
|
33
|
-
sinon.spy(pubsub, '_publish');
|
34
|
-
await pubsub.start();
|
35
|
-
await pubsub.publish(topic, message);
|
36
|
-
// Get the first message sent to _publish, and validate it
|
37
|
-
// @ts-expect-error .getCall is a added by sinon
|
38
|
-
const signedMessage = pubsub._publish.getCall(0).lastArg;
|
39
|
-
await expect(pubsub.validate(signedMessage)).to.eventually.be.undefined();
|
40
|
-
});
|
41
|
-
});
|
42
|
-
describe('subscribe', () => {
|
43
|
-
describe('basics', () => {
|
44
|
-
let pubsub;
|
45
|
-
beforeEach(async () => {
|
46
|
-
const peerId = await createPeerId();
|
47
|
-
pubsub = new PubsubImplementation({
|
48
|
-
multicodecs: [protocol],
|
49
|
-
libp2p: {
|
50
|
-
peerId: peerId,
|
51
|
-
registrar: mockRegistrar
|
52
|
-
}
|
53
|
-
});
|
54
|
-
await pubsub.start();
|
55
|
-
});
|
56
|
-
afterEach(() => pubsub.stop());
|
57
|
-
it('should add subscription', () => {
|
58
|
-
pubsub.subscribe(topic);
|
59
|
-
expect(pubsub.subscriptions.size).to.eql(1);
|
60
|
-
expect(pubsub.subscriptions.has(topic)).to.be.true();
|
61
|
-
});
|
62
|
-
});
|
63
|
-
describe('two nodes', () => {
|
64
|
-
let pubsubA, pubsubB;
|
65
|
-
let peerIdA, peerIdB;
|
66
|
-
const registrarRecordA = new Map();
|
67
|
-
const registrarRecordB = new Map();
|
68
|
-
beforeEach(async () => {
|
69
|
-
peerIdA = await createPeerId();
|
70
|
-
peerIdB = await createPeerId();
|
71
|
-
pubsubA = new PubsubImplementation({
|
72
|
-
multicodecs: [protocol],
|
73
|
-
libp2p: {
|
74
|
-
peerId: peerIdA,
|
75
|
-
registrar: createMockRegistrar(registrarRecordA)
|
76
|
-
}
|
77
|
-
});
|
78
|
-
pubsubB = new PubsubImplementation({
|
79
|
-
multicodecs: [protocol],
|
80
|
-
libp2p: {
|
81
|
-
peerId: peerIdB,
|
82
|
-
registrar: createMockRegistrar(registrarRecordB)
|
83
|
-
}
|
84
|
-
});
|
85
|
-
});
|
86
|
-
// start pubsub and connect nodes
|
87
|
-
beforeEach(async () => {
|
88
|
-
pubsubA.start();
|
89
|
-
pubsubB.start();
|
90
|
-
const onConnectA = registrarRecordA.get(protocol).onConnect;
|
91
|
-
const handlerB = registrarRecordB.get(protocol).handler;
|
92
|
-
// Notice peers of connection
|
93
|
-
const [c0, c1] = ConnectionPair();
|
94
|
-
await onConnectA(peerIdB, c0);
|
95
|
-
await handlerB({
|
96
|
-
protocol,
|
97
|
-
stream: c1.stream,
|
98
|
-
connection: {
|
99
|
-
remotePeer: peerIdA
|
100
|
-
}
|
101
|
-
});
|
102
|
-
});
|
103
|
-
afterEach(() => {
|
104
|
-
pubsubA.stop();
|
105
|
-
pubsubB.stop();
|
106
|
-
});
|
107
|
-
it('should send subscribe message to connected peers', async () => {
|
108
|
-
sinon.spy(pubsubA, '_sendSubscriptions');
|
109
|
-
sinon.spy(pubsubB, '_processRpcSubOpt');
|
110
|
-
pubsubA.subscribe(topic);
|
111
|
-
// Should send subscriptions to a peer
|
112
|
-
// @ts-expect-error .callCount is a added by sinon
|
113
|
-
expect(pubsubA._sendSubscriptions.callCount).to.eql(1);
|
114
|
-
// Other peer should receive subscription message
|
115
|
-
await pWaitFor(() => {
|
116
|
-
const subscribers = pubsubB.getSubscribers(topic);
|
117
|
-
return subscribers.length === 1;
|
118
|
-
});
|
119
|
-
// @ts-expect-error .callCount is a added by sinon
|
120
|
-
expect(pubsubB._processRpcSubOpt.callCount).to.eql(1);
|
121
|
-
});
|
122
|
-
});
|
123
|
-
});
|
124
|
-
describe('unsubscribe', () => {
|
125
|
-
describe('basics', () => {
|
126
|
-
let pubsub;
|
127
|
-
beforeEach(async () => {
|
128
|
-
const peerId = await createPeerId();
|
129
|
-
pubsub = new PubsubImplementation({
|
130
|
-
multicodecs: [protocol],
|
131
|
-
libp2p: {
|
132
|
-
peerId: peerId,
|
133
|
-
registrar: mockRegistrar
|
134
|
-
}
|
135
|
-
});
|
136
|
-
await pubsub.start();
|
137
|
-
});
|
138
|
-
afterEach(() => pubsub.stop());
|
139
|
-
it('should remove all subscriptions for a topic', () => {
|
140
|
-
pubsub.subscribe(topic);
|
141
|
-
pubsub.subscribe(topic);
|
142
|
-
expect(pubsub.subscriptions.size).to.eql(1);
|
143
|
-
pubsub.unsubscribe(topic);
|
144
|
-
expect(pubsub.subscriptions.size).to.eql(0);
|
145
|
-
});
|
146
|
-
});
|
147
|
-
describe('two nodes', () => {
|
148
|
-
let pubsubA, pubsubB;
|
149
|
-
let peerIdA, peerIdB;
|
150
|
-
const registrarRecordA = new Map();
|
151
|
-
const registrarRecordB = new Map();
|
152
|
-
beforeEach(async () => {
|
153
|
-
peerIdA = await createPeerId();
|
154
|
-
peerIdB = await createPeerId();
|
155
|
-
pubsubA = new PubsubImplementation({
|
156
|
-
multicodecs: [protocol],
|
157
|
-
libp2p: {
|
158
|
-
peerId: peerIdA,
|
159
|
-
registrar: createMockRegistrar(registrarRecordA)
|
160
|
-
}
|
161
|
-
});
|
162
|
-
pubsubB = new PubsubImplementation({
|
163
|
-
multicodecs: [protocol],
|
164
|
-
libp2p: {
|
165
|
-
peerId: peerIdB,
|
166
|
-
registrar: createMockRegistrar(registrarRecordB)
|
167
|
-
}
|
168
|
-
});
|
169
|
-
});
|
170
|
-
// start pubsub and connect nodes
|
171
|
-
beforeEach(async () => {
|
172
|
-
pubsubA.start();
|
173
|
-
pubsubB.start();
|
174
|
-
const onConnectA = registrarRecordA.get(protocol).onConnect;
|
175
|
-
const handlerB = registrarRecordB.get(protocol).handler;
|
176
|
-
// Notice peers of connection
|
177
|
-
const [c0, c1] = ConnectionPair();
|
178
|
-
await onConnectA(peerIdB, c0);
|
179
|
-
await handlerB({
|
180
|
-
protocol,
|
181
|
-
stream: c1.stream,
|
182
|
-
connection: {
|
183
|
-
remotePeer: peerIdA
|
184
|
-
}
|
185
|
-
});
|
186
|
-
});
|
187
|
-
afterEach(() => {
|
188
|
-
pubsubA.stop();
|
189
|
-
pubsubB.stop();
|
190
|
-
});
|
191
|
-
it('should send unsubscribe message to connected peers', async () => {
|
192
|
-
sinon.spy(pubsubA, '_sendSubscriptions');
|
193
|
-
sinon.spy(pubsubB, '_processRpcSubOpt');
|
194
|
-
pubsubA.subscribe(topic);
|
195
|
-
// Should send subscriptions to a peer
|
196
|
-
// @ts-expect-error .callCount is a property added by sinon
|
197
|
-
expect(pubsubA._sendSubscriptions.callCount).to.eql(1);
|
198
|
-
// Other peer should receive subscription message
|
199
|
-
await pWaitFor(() => {
|
200
|
-
const subscribers = pubsubB.getSubscribers(topic);
|
201
|
-
return subscribers.length === 1;
|
202
|
-
});
|
203
|
-
// @ts-expect-error .callCount is a property added by sinon
|
204
|
-
expect(pubsubB._processRpcSubOpt.callCount).to.eql(1);
|
205
|
-
// Unsubscribe
|
206
|
-
pubsubA.unsubscribe(topic);
|
207
|
-
// Should send subscriptions to a peer
|
208
|
-
// @ts-expect-error .callCount is a property added by sinon
|
209
|
-
expect(pubsubA._sendSubscriptions.callCount).to.eql(2);
|
210
|
-
// Other peer should receive subscription message
|
211
|
-
await pWaitFor(() => {
|
212
|
-
const subscribers = pubsubB.getSubscribers(topic);
|
213
|
-
return subscribers.length === 0;
|
214
|
-
});
|
215
|
-
// @ts-expect-error .callCount is a property added by sinon
|
216
|
-
expect(pubsubB._processRpcSubOpt.callCount).to.eql(2);
|
217
|
-
});
|
218
|
-
it('should not send unsubscribe message to connected peers if not subscribed', () => {
|
219
|
-
sinon.spy(pubsubA, '_sendSubscriptions');
|
220
|
-
sinon.spy(pubsubB, '_processRpcSubOpt');
|
221
|
-
// Unsubscribe
|
222
|
-
pubsubA.unsubscribe(topic);
|
223
|
-
// Should send subscriptions to a peer
|
224
|
-
// @ts-expect-error .callCount is a property added by sinon
|
225
|
-
expect(pubsubA._sendSubscriptions.callCount).to.eql(0);
|
226
|
-
});
|
227
|
-
});
|
228
|
-
});
|
229
|
-
describe('getTopics', () => {
|
230
|
-
let peerId;
|
231
|
-
let pubsub;
|
232
|
-
beforeEach(async () => {
|
233
|
-
peerId = await createPeerId();
|
234
|
-
pubsub = new PubsubImplementation({
|
235
|
-
multicodecs: [protocol],
|
236
|
-
libp2p: {
|
237
|
-
peerId: peerId,
|
238
|
-
registrar: mockRegistrar
|
239
|
-
}
|
240
|
-
});
|
241
|
-
await pubsub.start();
|
242
|
-
});
|
243
|
-
afterEach(() => pubsub.stop());
|
244
|
-
it('returns the subscribed topics', () => {
|
245
|
-
let subsTopics = pubsub.getTopics();
|
246
|
-
expect(subsTopics).to.have.lengthOf(0);
|
247
|
-
pubsub.subscribe(topic);
|
248
|
-
subsTopics = pubsub.getTopics();
|
249
|
-
expect(subsTopics).to.have.lengthOf(1);
|
250
|
-
expect(subsTopics[0]).to.eql(topic);
|
251
|
-
});
|
252
|
-
});
|
253
|
-
describe('getSubscribers', () => {
|
254
|
-
let peerId;
|
255
|
-
let pubsub;
|
256
|
-
beforeEach(async () => {
|
257
|
-
peerId = await createPeerId();
|
258
|
-
pubsub = new PubsubImplementation({
|
259
|
-
multicodecs: [protocol],
|
260
|
-
libp2p: {
|
261
|
-
peerId: peerId,
|
262
|
-
registrar: mockRegistrar
|
263
|
-
}
|
264
|
-
});
|
265
|
-
});
|
266
|
-
afterEach(() => pubsub.stop());
|
267
|
-
it('should fail if pubsub is not started', () => {
|
268
|
-
const topic = 'topic-test';
|
269
|
-
try {
|
270
|
-
pubsub.getSubscribers(topic);
|
271
|
-
}
|
272
|
-
catch (err) {
|
273
|
-
expect(err).to.exist();
|
274
|
-
expect(err.code).to.eql('ERR_NOT_STARTED_YET');
|
275
|
-
return;
|
276
|
-
}
|
277
|
-
throw new Error('should fail if pubsub is not started');
|
278
|
-
});
|
279
|
-
it('should fail if no topic is provided', async () => {
|
280
|
-
// start pubsub
|
281
|
-
await pubsub.start();
|
282
|
-
try {
|
283
|
-
// @ts-expect-error invalid params
|
284
|
-
pubsub.getSubscribers();
|
285
|
-
}
|
286
|
-
catch (err) {
|
287
|
-
expect(err).to.exist();
|
288
|
-
expect(err.code).to.eql('ERR_NOT_VALID_TOPIC');
|
289
|
-
return;
|
290
|
-
}
|
291
|
-
throw new Error('should fail if no topic is provided');
|
292
|
-
});
|
293
|
-
it('should get peer subscribed to one topic', async () => {
|
294
|
-
const topic = 'topic-test';
|
295
|
-
// start pubsub
|
296
|
-
await pubsub.start();
|
297
|
-
let peersSubscribed = pubsub.getSubscribers(topic);
|
298
|
-
expect(peersSubscribed).to.be.empty();
|
299
|
-
// Set mock peer subscribed
|
300
|
-
const peer = new PeerStreams({ id: peerId, protocol: 'a-protocol' });
|
301
|
-
const id = peer.id.toString();
|
302
|
-
pubsub.topics.set(topic, new Set([id]));
|
303
|
-
pubsub.peers.set(id, peer);
|
304
|
-
peersSubscribed = pubsub.getSubscribers(topic);
|
305
|
-
expect(peersSubscribed).to.not.be.empty();
|
306
|
-
expect(peersSubscribed[0]).to.eql(id);
|
307
|
-
});
|
308
|
-
});
|
309
|
-
});
|
310
|
-
//# sourceMappingURL=pubsub.spec.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"pubsub.spec.js","sourceRoot":"","sources":["../../test/pubsub.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/test/sign.spec.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"sign.spec.d.ts","sourceRoot":"","sources":["../../test/sign.spec.ts"],"names":[],"mappings":""}
|