@libp2p/interface-compliance-tests 1.1.22 → 1.1.25

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.
Files changed (55) hide show
  1. package/dist/src/mocks/connection-manager.d.ts +0 -8
  2. package/dist/src/mocks/connection-manager.d.ts.map +1 -1
  3. package/dist/src/mocks/connection-manager.js +4 -16
  4. package/dist/src/mocks/connection-manager.js.map +1 -1
  5. package/dist/src/mocks/connection.d.ts +2 -1
  6. package/dist/src/mocks/connection.d.ts.map +1 -1
  7. package/dist/src/mocks/connection.js +4 -4
  8. package/dist/src/mocks/connection.js.map +1 -1
  9. package/dist/src/mocks/registrar.d.ts +2 -5
  10. package/dist/src/mocks/registrar.d.ts.map +1 -1
  11. package/dist/src/mocks/registrar.js +4 -4
  12. package/dist/src/mocks/registrar.js.map +1 -1
  13. package/dist/src/pubsub/api.d.ts +2 -2
  14. package/dist/src/pubsub/api.d.ts.map +1 -1
  15. package/dist/src/pubsub/api.js +18 -21
  16. package/dist/src/pubsub/api.js.map +1 -1
  17. package/dist/src/pubsub/connection-handlers.d.ts +2 -2
  18. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -1
  19. package/dist/src/pubsub/connection-handlers.js +84 -162
  20. package/dist/src/pubsub/connection-handlers.js.map +1 -1
  21. package/dist/src/pubsub/emit-self.d.ts +2 -2
  22. package/dist/src/pubsub/emit-self.d.ts.map +1 -1
  23. package/dist/src/pubsub/emit-self.js +18 -12
  24. package/dist/src/pubsub/emit-self.js.map +1 -1
  25. package/dist/src/pubsub/index.d.ts +2 -3
  26. package/dist/src/pubsub/index.d.ts.map +1 -1
  27. package/dist/src/pubsub/index.js.map +1 -1
  28. package/dist/src/pubsub/messages.d.ts +2 -2
  29. package/dist/src/pubsub/messages.d.ts.map +1 -1
  30. package/dist/src/pubsub/messages.js +13 -74
  31. package/dist/src/pubsub/messages.js.map +1 -1
  32. package/dist/src/pubsub/multiple-nodes.d.ts +2 -2
  33. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -1
  34. package/dist/src/pubsub/multiple-nodes.js +87 -167
  35. package/dist/src/pubsub/multiple-nodes.js.map +1 -1
  36. package/dist/src/pubsub/two-nodes.d.ts +2 -2
  37. package/dist/src/pubsub/two-nodes.d.ts.map +1 -1
  38. package/dist/src/pubsub/two-nodes.js +51 -84
  39. package/dist/src/pubsub/two-nodes.js.map +1 -1
  40. package/dist/src/pubsub/utils.d.ts +5 -2
  41. package/dist/src/pubsub/utils.d.ts.map +1 -1
  42. package/dist/src/pubsub/utils.js +12 -2
  43. package/dist/src/pubsub/utils.js.map +1 -1
  44. package/package.json +1 -1
  45. package/src/mocks/connection-manager.ts +4 -20
  46. package/src/mocks/connection.ts +5 -5
  47. package/src/mocks/registrar.ts +6 -10
  48. package/src/pubsub/api.ts +20 -24
  49. package/src/pubsub/connection-handlers.ts +97 -180
  50. package/src/pubsub/emit-self.ts +23 -15
  51. package/src/pubsub/index.ts +2 -3
  52. package/src/pubsub/messages.ts +18 -99
  53. package/src/pubsub/multiple-nodes.ts +106 -184
  54. package/src/pubsub/two-nodes.ts +61 -98
  55. package/src/pubsub/utils.ts +16 -5
@@ -5,11 +5,8 @@ import pDefer from 'p-defer';
5
5
  import pWaitFor from 'p-wait-for';
6
6
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
7
7
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
8
- import { connectPeers, mockRegistrar } from '../mocks/registrar.js';
9
- import { createEd25519PeerId } from '@libp2p/peer-id-factory';
10
- import { CustomEvent } from '@libp2p/interfaces';
11
- import { waitForSubscriptionUpdate } from './utils.js';
12
- import { Components } from '@libp2p/interfaces/components';
8
+ import { connectPeers } from '../mocks/registrar.js';
9
+ import { createComponents, waitForSubscriptionUpdate } from './utils.js';
13
10
  import { start, stop } from '../index.js';
14
11
  const topic = 'foo';
15
12
  function shouldNotHappen() {
@@ -19,30 +16,20 @@ export default (common) => {
19
16
  describe('pubsub with two nodes', () => {
20
17
  let psA;
21
18
  let psB;
22
- let peerIdA;
23
- let peerIdB;
24
- let registrarA;
25
- let registrarB;
19
+ let componentsA;
20
+ let componentsB;
26
21
  // Create pubsub nodes and connect them
27
22
  beforeEach(async () => {
28
- peerIdA = await createEd25519PeerId();
29
- peerIdB = await createEd25519PeerId();
30
- registrarA = mockRegistrar();
31
- registrarB = mockRegistrar();
23
+ componentsA = await createComponents();
24
+ componentsB = await createComponents();
32
25
  psA = await common.setup({
33
- components: new Components({
34
- peerId: peerIdA,
35
- registrar: registrarA
36
- }),
26
+ components: componentsA,
37
27
  init: {
38
28
  emitSelf: true
39
29
  }
40
30
  });
41
31
  psB = await common.setup({
42
- components: new Components({
43
- peerId: peerIdB,
44
- registrar: registrarB
45
- }),
32
+ components: componentsB,
46
33
  init: {
47
34
  emitSelf: false
48
35
  }
@@ -51,13 +38,7 @@ export default (common) => {
51
38
  await start(psA, psB);
52
39
  expect(psA.getPeers()).to.be.empty();
53
40
  expect(psB.getPeers()).to.be.empty();
54
- await connectPeers(psA.multicodecs[0], {
55
- peerId: peerIdA,
56
- registrar: registrarA
57
- }, {
58
- peerId: peerIdB,
59
- registrar: registrarB
60
- });
41
+ await connectPeers(psA.multicodecs[0], componentsA, componentsB);
61
42
  // Wait for peers to be ready in pubsub
62
43
  await pWaitFor(() => psA.getPeers().length === 1 && psB.getPeers().length === 1);
63
44
  });
@@ -68,11 +49,11 @@ export default (common) => {
68
49
  });
69
50
  it('Subscribe to a topic in nodeA', async () => {
70
51
  const defer = pDefer();
71
- psB.addEventListener('pubsub:subscription-change', (evt) => {
52
+ psB.addEventListener('subscription-change', (evt) => {
72
53
  const { peerId: changedPeerId, subscriptions: changedSubs } = evt.detail;
73
54
  expect(psA.getTopics()).to.deep.equal([topic]);
74
55
  expect(psB.getPeers()).to.have.lengthOf(1);
75
- expect(psB.getSubscribers(topic).map(p => p.toString())).to.deep.equal([peerIdA.toString()]);
56
+ expect(psB.getSubscribers(topic).map(p => p.toString())).to.deep.equal([componentsA.getPeerId().toString()]);
76
57
  expect(changedPeerId).to.deep.equal(psB.getPeers()[0]);
77
58
  expect(changedSubs).to.have.lengthOf(1);
78
59
  expect(changedSubs[0].topic).to.equal(topic);
@@ -86,80 +67,88 @@ export default (common) => {
86
67
  });
87
68
  it('Publish to a topic in nodeA', async () => {
88
69
  const defer = pDefer();
89
- psA.addEventListener(topic, (evt) => {
90
- const msg = evt.detail;
91
- expect(uint8ArrayToString(msg.data)).to.equal('hey');
92
- psB.removeEventListener(topic, shouldNotHappen);
93
- defer.resolve();
70
+ psA.addEventListener('message', (evt) => {
71
+ if (evt.detail.topic === topic) {
72
+ const msg = evt.detail;
73
+ expect(uint8ArrayToString(msg.data)).to.equal('hey');
74
+ psB.removeEventListener('message', shouldNotHappen);
75
+ defer.resolve();
76
+ }
94
77
  }, {
95
78
  once: true
96
79
  });
97
- psB.addEventListener(topic, shouldNotHappen, {
98
- once: true
99
- });
80
+ psA.subscribe(topic);
81
+ psB.subscribe(topic);
100
82
  await Promise.all([
101
- waitForSubscriptionUpdate(psA, psB),
102
- waitForSubscriptionUpdate(psB, psA)
83
+ waitForSubscriptionUpdate(psA, componentsB.getPeerId()),
84
+ waitForSubscriptionUpdate(psB, componentsA.getPeerId())
103
85
  ]);
104
- void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('hey') }));
86
+ await psA.publish(topic, uint8ArrayFromString('hey'));
105
87
  return await defer.promise;
106
88
  });
107
89
  it('Publish to a topic in nodeB', async () => {
108
90
  const defer = pDefer();
109
- psA.addEventListener(topic, (evt) => {
91
+ psA.addEventListener('message', (evt) => {
92
+ if (evt.detail.topic !== topic) {
93
+ return;
94
+ }
110
95
  const msg = evt.detail;
111
- psA.addEventListener(topic, shouldNotHappen, {
96
+ psA.addEventListener('message', (evt) => {
97
+ if (evt.detail.topic === topic) {
98
+ shouldNotHappen();
99
+ }
100
+ }, {
112
101
  once: true
113
102
  });
114
103
  expect(uint8ArrayToString(msg.data)).to.equal('banana');
115
104
  setTimeout(() => {
116
- psA.removeEventListener(topic, shouldNotHappen);
117
- psB.removeEventListener(topic, shouldNotHappen);
105
+ psA.removeEventListener('message');
106
+ psB.removeEventListener('message');
118
107
  defer.resolve();
119
108
  }, 100);
120
109
  }, {
121
110
  once: true
122
111
  });
123
- psB.addEventListener(topic, shouldNotHappen, {
124
- once: true
125
- });
112
+ psB.addEventListener('message', shouldNotHappen);
113
+ psA.subscribe(topic);
114
+ psB.subscribe(topic);
126
115
  await Promise.all([
127
- waitForSubscriptionUpdate(psA, psB),
128
- waitForSubscriptionUpdate(psB, psA)
116
+ waitForSubscriptionUpdate(psA, componentsB.getPeerId()),
117
+ waitForSubscriptionUpdate(psB, componentsA.getPeerId())
129
118
  ]);
130
- void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') }));
119
+ await psB.publish(topic, uint8ArrayFromString('banana'));
131
120
  return await defer.promise;
132
121
  });
133
122
  it('Publish 10 msg to a topic in nodeB', async () => {
134
123
  const defer = pDefer();
135
124
  let counter = 0;
136
- psB.addEventListener(topic, shouldNotHappen, {
137
- once: true
138
- });
139
- psA.addEventListener(topic, receivedMsg);
125
+ psB.addEventListener('message', shouldNotHappen);
126
+ psA.addEventListener('message', receivedMsg);
140
127
  function receivedMsg(evt) {
141
128
  const msg = evt.detail;
142
129
  expect(uint8ArrayToString(msg.data)).to.equal('banana');
143
- expect(msg.from.toString()).to.equal(peerIdB.toString());
130
+ expect(msg.from.toString()).to.equal(componentsB.getPeerId().toString());
144
131
  expect(msg.sequenceNumber).to.be.a('BigInt');
145
132
  expect(msg.topic).to.be.equal(topic);
146
133
  if (++counter === 10) {
147
- psA.removeEventListener(topic, receivedMsg);
148
- psB.removeEventListener(topic, shouldNotHappen);
134
+ psA.removeEventListener('message', receivedMsg);
135
+ psB.removeEventListener('message', shouldNotHappen);
149
136
  defer.resolve();
150
137
  }
151
138
  }
139
+ psA.subscribe(topic);
140
+ psB.subscribe(topic);
152
141
  await Promise.all([
153
- waitForSubscriptionUpdate(psA, psB),
154
- waitForSubscriptionUpdate(psB, psA)
142
+ waitForSubscriptionUpdate(psA, componentsB.getPeerId()),
143
+ waitForSubscriptionUpdate(psB, componentsA.getPeerId())
155
144
  ]);
156
- Array.from({ length: 10 }, (_, i) => psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') })));
145
+ await Promise.all(Array.from({ length: 10 }, async (_, i) => await psB.publish(topic, uint8ArrayFromString('banana'))));
157
146
  return await defer.promise;
158
147
  });
159
148
  it('Unsubscribe from topic in nodeA', async () => {
160
149
  const defer = pDefer();
161
150
  let callCount = 0;
162
- psB.addEventListener('pubsub:subscription-change', (evt) => {
151
+ psB.addEventListener('subscription-change', (evt) => {
163
152
  callCount++;
164
153
  if (callCount === 1) {
165
154
  // notice subscribe
@@ -189,28 +178,6 @@ export default (common) => {
189
178
  expect(psA.getTopics()).to.be.empty();
190
179
  return await defer.promise;
191
180
  });
192
- it.skip('Publish to a topic:Z in nodeA nodeB', async () => {
193
- const defer = pDefer();
194
- const topic = 'Z';
195
- psA.addEventListener(topic, shouldNotHappen, {
196
- once: true
197
- });
198
- psB.addEventListener(topic, shouldNotHappen, {
199
- once: true
200
- });
201
- await Promise.all([
202
- waitForSubscriptionUpdate(psA, psB),
203
- waitForSubscriptionUpdate(psB, psA)
204
- ]);
205
- setTimeout(() => {
206
- psA.removeEventListener(topic, shouldNotHappen);
207
- psB.removeEventListener(topic, shouldNotHappen);
208
- defer.resolve();
209
- }, 100);
210
- void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') }));
211
- void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') }));
212
- return await defer.promise;
213
- });
214
181
  });
215
182
  };
216
183
  //# sourceMappingURL=two-nodes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"two-nodes.js","sourceRoot":"","sources":["../../../src/pubsub/two-nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"two-nodes.js","sourceRoot":"","sources":["../../../src/pubsub/two-nodes.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
- import type { PubSubBaseProtocol } from '@libp2p/pubsub';
2
- export declare function waitForSubscriptionUpdate(a: PubSubBaseProtocol, b: PubSubBaseProtocol): Promise<void>;
1
+ import { Components } from '@libp2p/interfaces/components';
2
+ import type { PubSub } from '@libp2p/interfaces/pubsub';
3
+ import type { PeerId } from '@libp2p/interfaces/peer-id';
4
+ export declare function waitForSubscriptionUpdate(a: PubSub, b: PeerId): Promise<void>;
5
+ export declare function createComponents(): Promise<Components>;
3
6
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/pubsub/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExD,wBAAsB,yBAAyB,CAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,iBAM5F"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/pubsub/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAA0B,MAAM,2BAA2B,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAIxD,wBAAsB,yBAAyB,CAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,iBAMpE;AAED,wBAAsB,gBAAgB,IAAK,OAAO,CAAC,UAAU,CAAC,CAM7D"}
@@ -1,9 +1,19 @@
1
1
  import { pEvent } from 'p-event';
2
2
  import pWaitFor from 'p-wait-for';
3
+ import { Components } from '@libp2p/interfaces/components';
4
+ import { createEd25519PeerId } from '@libp2p/peer-id-factory';
5
+ import { mockConnectionManager, mockRegistrar } from '../mocks/index.js';
3
6
  export async function waitForSubscriptionUpdate(a, b) {
4
7
  await pWaitFor(async () => {
5
- const event = await pEvent(a, 'pubsub:subscription-change');
6
- return event.detail.peerId.equals(b.components.getPeerId());
8
+ const event = await pEvent(a, 'subscription-change');
9
+ return event.detail.peerId.equals(b);
10
+ });
11
+ }
12
+ export async function createComponents() {
13
+ return new Components({
14
+ peerId: await createEd25519PeerId(),
15
+ registrar: mockRegistrar(),
16
+ connectionManager: mockConnectionManager()
7
17
  });
8
18
  }
9
19
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/pubsub/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,QAAQ,MAAM,YAAY,CAAA;AAIjC,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAE,CAAqB,EAAE,CAAqB;IAC3F,MAAM,QAAQ,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAoE,CAAC,EAAE,4BAA4B,CAAC,CAAA;QAE9H,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/pubsub/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAG1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAExE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAE,CAAS,EAAE,CAAS;IACnE,MAAM,QAAQ,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,MAAM,MAAM,CAA6D,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAEhH,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,IAAI,UAAU,CAAC;QACpB,MAAM,EAAE,MAAM,mBAAmB,EAAE;QACnC,SAAS,EAAE,aAAa,EAAE;QAC1B,iBAAiB,EAAE,qBAAqB,EAAE;KAC3C,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/interface-compliance-tests",
3
- "version": "1.1.22",
3
+ "version": "1.1.25",
4
4
  "description": "Compliance tests for JS libp2p interfaces",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interface-compliance-tests#readme",
@@ -5,35 +5,19 @@ import type { ConnectionManager, ConnectionManagerEvents } from '@libp2p/interfa
5
5
 
6
6
  class MockConnectionManager extends EventEmitter<ConnectionManagerEvents> implements ConnectionManager {
7
7
  getConnectionMap (): Map<string, Connection[]> {
8
- throw new Error('Method not implemented.')
8
+ return new Map<string, Connection[]>()
9
9
  }
10
10
 
11
11
  getConnectionList (): Connection[] {
12
- throw new Error('Method not implemented.')
12
+ return []
13
13
  }
14
14
 
15
15
  getConnections (): Connection[] {
16
- throw new Error('Method not implemented.')
16
+ return []
17
17
  }
18
18
 
19
19
  getConnection (peerId: PeerId): Connection | undefined {
20
- throw new Error('Method not implemented.')
21
- }
22
-
23
- listenerCount (type: string): number {
24
- throw new Error('Method not implemented.')
25
- }
26
-
27
- addEventListener<U extends keyof ConnectionManagerEvents>(type: U, callback: ((evt: ConnectionManagerEvents[U]) => void) | { handleEvent: (evt: ConnectionManagerEvents[U]) => void } | null, options?: boolean | AddEventListenerOptions): void {
28
- throw new Error('Method not implemented.')
29
- }
30
-
31
- removeEventListener<U extends keyof ConnectionManagerEvents>(type: U, callback: (((evt: ConnectionManagerEvents[U]) => void) | { handleEvent: (evt: ConnectionManagerEvents[U]) => void } | null) | undefined, options?: boolean | EventListenerOptions): void {
32
- throw new Error('Method not implemented.')
33
- }
34
-
35
- dispatchEvent (event: Event): boolean {
36
- throw new Error('Method not implemented.')
20
+ return undefined
37
21
  }
38
22
  }
39
23
 
@@ -184,18 +184,18 @@ export interface Peer {
184
184
  registrar: Registrar
185
185
  }
186
186
 
187
- export function connectionPair (a: Peer, b: Peer): [ Connection, Connection ] {
187
+ export function connectionPair (a: Components, b: Components): [ Connection, Connection ] {
188
188
  const [peerBtoPeerA, peerAtoPeerB] = duplexPair<Uint8Array>()
189
189
 
190
190
  return [
191
191
  mockConnection(
192
- mockMultiaddrConnection(peerAtoPeerB, b.peerId), {
193
- registrar: a.registrar
192
+ mockMultiaddrConnection(peerAtoPeerB, b.getPeerId()), {
193
+ registrar: a.getRegistrar()
194
194
  }
195
195
  ),
196
196
  mockConnection(
197
- mockMultiaddrConnection(peerBtoPeerA, a.peerId), {
198
- registrar: b.registrar
197
+ mockMultiaddrConnection(peerBtoPeerA, a.getPeerId()), {
198
+ registrar: b.getRegistrar()
199
199
  }
200
200
  )
201
201
  ]
@@ -3,6 +3,7 @@ import type { Connection } from '@libp2p/interfaces/connection'
3
3
  import type { PeerId } from '@libp2p/interfaces/peer-id'
4
4
  import type { Topology } from '@libp2p/interfaces/topology'
5
5
  import { connectionPair } from './connection.js'
6
+ import type { Components } from '@libp2p/interfaces/src/components'
6
7
 
7
8
  export class MockRegistrar implements Registrar {
8
9
  private readonly topologies: Map<string, { topology: Topology, protocols: string[] }> = new Map()
@@ -106,20 +107,15 @@ export async function mockIncomingStreamEvent (protocol: string, conn: Connectio
106
107
  }
107
108
  }
108
109
 
109
- export interface Peer {
110
- peerId: PeerId
111
- registrar: Registrar
112
- }
113
-
114
- export async function connectPeers (protocol: string, a: Peer, b: Peer) {
110
+ export async function connectPeers (protocol: string, a: Components, b: Components) {
115
111
  // Notify peers of connection
116
112
  const [aToB, bToA] = connectionPair(a, b)
117
113
 
118
- for (const topology of a.registrar.getTopologies(protocol)) {
119
- await topology.onConnect(b.peerId, aToB)
114
+ for (const topology of a.getRegistrar().getTopologies(protocol)) {
115
+ await topology.onConnect(b.getPeerId(), aToB)
120
116
  }
121
117
 
122
- for (const topology of b.registrar.getTopologies(protocol)) {
123
- await topology.onConnect(a.peerId, bToA)
118
+ for (const topology of b.getRegistrar().getTopologies(protocol)) {
119
+ await topology.onConnect(a.getPeerId(), bToA)
124
120
  }
125
121
  }
package/src/pubsub/api.ts CHANGED
@@ -3,34 +3,27 @@ import sinon from 'sinon'
3
3
  import pDefer from 'p-defer'
4
4
  import pWaitFor from 'p-wait-for'
5
5
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
6
- import { mockRegistrar } from '../mocks/registrar.js'
7
- import { createEd25519PeerId } from '@libp2p/peer-id-factory'
8
6
  import delay from 'delay'
9
- import { CustomEvent } from '@libp2p/interfaces'
10
7
  import type { TestSetup } from '../index.js'
11
8
  import type { PubSub } from '@libp2p/interfaces/pubsub'
12
9
  import type { PubSubArgs } from './index.js'
13
- import type { Registrar } from '@libp2p/interfaces/registrar'
14
- import type { PubSubBaseProtocol } from '@libp2p/pubsub'
15
- import { Components } from '@libp2p/interfaces/components'
10
+ import type { Components } from '@libp2p/interfaces/components'
11
+ import { createComponents } from './utils.js'
16
12
 
17
13
  const topic = 'foo'
18
14
  const data = uint8ArrayFromString('bar')
19
15
 
20
- export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
16
+ export default (common: TestSetup<PubSub, PubSubArgs>) => {
21
17
  describe('pubsub api', () => {
22
18
  let pubsub: PubSub
23
- let registrar: Registrar
19
+ let components: Components
24
20
 
25
21
  // Create pubsub router
26
22
  beforeEach(async () => {
27
- registrar = mockRegistrar()
23
+ components = await createComponents()
28
24
 
29
25
  pubsub = await common.setup({
30
- components: new Components({
31
- peerId: await createEd25519PeerId(),
32
- registrar
33
- }),
26
+ components,
34
27
  init: {
35
28
  emitSelf: true
36
29
  }
@@ -44,22 +37,22 @@ export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
44
37
  })
45
38
 
46
39
  it('can start correctly', async () => {
47
- sinon.spy(registrar, 'register')
40
+ sinon.spy(components.getRegistrar(), 'register')
48
41
 
49
42
  await pubsub.start()
50
43
 
51
44
  expect(pubsub.isStarted()).to.equal(true)
52
- expect(registrar.register).to.have.property('callCount', 1)
45
+ expect(components.getRegistrar().register).to.have.property('callCount', 1)
53
46
  })
54
47
 
55
48
  it('can stop correctly', async () => {
56
- sinon.spy(registrar, 'unregister')
49
+ sinon.spy(components.getRegistrar(), 'unregister')
57
50
 
58
51
  await pubsub.start()
59
52
  await pubsub.stop()
60
53
 
61
54
  expect(pubsub.isStarted()).to.equal(false)
62
- expect(registrar.unregister).to.have.property('callCount', 1)
55
+ expect(components.getRegistrar().unregister).to.have.property('callCount', 1)
63
56
  })
64
57
 
65
58
  it('can subscribe and unsubscribe correctly', async () => {
@@ -68,19 +61,21 @@ export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
68
61
  }
69
62
 
70
63
  await pubsub.start()
71
- pubsub.addEventListener(topic, handler)
64
+ pubsub.subscribe(topic)
65
+ pubsub.addEventListener('message', handler)
72
66
 
73
67
  await pWaitFor(() => {
74
68
  const topics = pubsub.getTopics()
75
69
  return topics.length === 1 && topics[0] === topic
76
70
  })
77
71
 
78
- pubsub.removeEventListener(topic, handler)
72
+ pubsub.removeEventListener('message', handler)
73
+ pubsub.unsubscribe(topic)
79
74
 
80
75
  await pWaitFor(() => pubsub.getTopics().length === 0)
81
76
 
82
77
  // Publish to guarantee the handler is not called
83
- pubsub.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
78
+ await pubsub.publish(topic, data)
84
79
 
85
80
  // handlers are called async
86
81
  await delay(100)
@@ -93,12 +88,13 @@ export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
93
88
 
94
89
  await pubsub.start()
95
90
 
96
- pubsub.addEventListener(topic, (evt) => {
97
- const msg = evt.detail
98
- expect(msg).to.not.eql(undefined)
91
+ pubsub.subscribe(topic)
92
+ pubsub.addEventListener('message', (evt) => {
93
+ expect(evt).to.have.nested.property('detail.topic', topic)
94
+ expect(evt).to.have.deep.nested.property('detail.data', data)
99
95
  defer.resolve()
100
96
  })
101
- pubsub.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
97
+ await pubsub.publish(topic, data)
102
98
  await defer.promise
103
99
 
104
100
  await pubsub.stop()