@libp2p/interface-compliance-tests 3.0.7-6fdaa7dc → 3.0.7-7fb23cd3

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 (45) hide show
  1. package/dist/src/mocks/connection-manager.d.ts +2 -0
  2. package/dist/src/mocks/connection-manager.d.ts.map +1 -1
  3. package/dist/src/mocks/connection-manager.js.map +1 -1
  4. package/dist/src/pubsub/api.d.ts +6 -0
  5. package/dist/src/pubsub/api.d.ts.map +1 -0
  6. package/dist/src/pubsub/api.js +87 -0
  7. package/dist/src/pubsub/api.js.map +1 -0
  8. package/dist/src/pubsub/connection-handlers.d.ts +6 -0
  9. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -0
  10. package/dist/src/pubsub/connection-handlers.js +329 -0
  11. package/dist/src/pubsub/connection-handlers.js.map +1 -0
  12. package/dist/src/pubsub/emit-self.d.ts +6 -0
  13. package/dist/src/pubsub/emit-self.d.ts.map +1 -0
  14. package/dist/src/pubsub/emit-self.js +80 -0
  15. package/dist/src/pubsub/emit-self.js.map +1 -0
  16. package/dist/src/pubsub/index.d.ts +18 -0
  17. package/dist/src/pubsub/index.d.ts.map +1 -0
  18. package/dist/src/pubsub/index.js +17 -0
  19. package/dist/src/pubsub/index.js.map +1 -0
  20. package/dist/src/pubsub/messages.d.ts +6 -0
  21. package/dist/src/pubsub/messages.d.ts.map +1 -0
  22. package/dist/src/pubsub/messages.js +48 -0
  23. package/dist/src/pubsub/messages.js.map +1 -0
  24. package/dist/src/pubsub/multiple-nodes.d.ts +6 -0
  25. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -0
  26. package/dist/src/pubsub/multiple-nodes.js +350 -0
  27. package/dist/src/pubsub/multiple-nodes.js.map +1 -0
  28. package/dist/src/pubsub/two-nodes.d.ts +6 -0
  29. package/dist/src/pubsub/two-nodes.d.ts.map +1 -0
  30. package/dist/src/pubsub/two-nodes.js +217 -0
  31. package/dist/src/pubsub/two-nodes.js.map +1 -0
  32. package/dist/src/pubsub/utils.d.ts +6 -0
  33. package/dist/src/pubsub/utils.d.ts.map +1 -0
  34. package/dist/src/pubsub/utils.js +22 -0
  35. package/dist/src/pubsub/utils.js.map +1 -0
  36. package/package.json +13 -8
  37. package/src/mocks/connection-manager.ts +2 -0
  38. package/src/pubsub/api.ts +114 -0
  39. package/src/pubsub/connection-handlers.ts +413 -0
  40. package/src/pubsub/emit-self.ts +99 -0
  41. package/src/pubsub/index.ts +34 -0
  42. package/src/pubsub/messages.ts +59 -0
  43. package/src/pubsub/multiple-nodes.ts +440 -0
  44. package/src/pubsub/two-nodes.ts +273 -0
  45. package/src/pubsub/utils.ts +29 -0
@@ -2,6 +2,7 @@ import { type PeerId } from '@libp2p/interface/peer-id';
2
2
  import { type Multiaddr } from '@multiformats/multiaddr';
3
3
  import type { Libp2pEvents } from '@libp2p/interface';
4
4
  import type { EventEmitter } from '@libp2p/interface/events';
5
+ import type { PubSub } from '@libp2p/interface/pubsub';
5
6
  import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager';
6
7
  import type { Registrar } from '@libp2p/interface-internal/registrar';
7
8
  export interface MockNetworkComponents {
@@ -9,6 +10,7 @@ export interface MockNetworkComponents {
9
10
  registrar: Registrar;
10
11
  connectionManager: ConnectionManager;
11
12
  events: EventEmitter<Libp2pEvents>;
13
+ pubsub?: PubSub;
12
14
  }
13
15
  declare class MockNetwork {
14
16
  private components;
@@ -1 +1 @@
1
- {"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../src/mocks/connection-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGjE,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,+CAA+C,CAAA;AACnG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAErE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED,cAAM,WAAW;IACf,OAAO,CAAC,UAAU,CAA8B;IAEhD,OAAO,CAAE,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAIjD,OAAO,CAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAG,GAAG,qBAAqB;IAc9D,KAAK,IAAK,IAAI;CAGf;AAED,eAAO,MAAM,WAAW,aAAoB,CAAA;AAE5C,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AA0JD,wBAAgB,qBAAqB,CAAE,UAAU,EAAE,+BAA+B,GAAG,iBAAiB,CAErG"}
1
+ {"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../src/mocks/connection-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGjE,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,+CAA+C,CAAA;AACnG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAErE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,cAAM,WAAW;IACf,OAAO,CAAC,UAAU,CAA8B;IAEhD,OAAO,CAAE,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAIjD,OAAO,CAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAG,GAAG,qBAAqB;IAc9D,KAAK,IAAK,IAAI;CAGf;AAED,eAAO,MAAM,WAAW,aAAoB,CAAA;AAE5C,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AA0JD,wBAAgB,qBAAqB,CAAE,UAAU,EAAE,+BAA+B,GAAG,iBAAiB,CAErG"}
@@ -1 +1 @@
1
- {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../../src/mocks/connection-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../../src/mocks/connection-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PubSubArgs } from './index.js';
2
+ import type { TestSetup } from '../index.js';
3
+ import type { PubSub } from '@libp2p/interface/pubsub';
4
+ declare const _default: (common: TestSetup<PubSub, PubSubArgs>) => void;
5
+ export default _default;
6
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/pubsub/api.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;iCAK9B,UAAU,MAAM,EAAE,UAAU,CAAC,KAAG,IAAI;AAA5D,wBAiGC"}
@@ -0,0 +1,87 @@
1
+ import { isStartable, start, stop } from '@libp2p/interface/startable';
2
+ import { expect } from 'aegir/chai';
3
+ import delay from 'delay';
4
+ import pDefer from 'p-defer';
5
+ import pWaitFor from 'p-wait-for';
6
+ import sinon from 'sinon';
7
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
8
+ import { mockNetwork } from '../mocks/index.js';
9
+ import { createComponents } from './utils.js';
10
+ const topic = 'foo';
11
+ const data = uint8ArrayFromString('bar');
12
+ export default (common) => {
13
+ describe('pubsub api', () => {
14
+ let pubsub;
15
+ let components;
16
+ // Create pubsub router
17
+ beforeEach(async () => {
18
+ mockNetwork.reset();
19
+ components = await createComponents();
20
+ pubsub = components.pubsub = await common.setup({
21
+ components,
22
+ init: {
23
+ emitSelf: true
24
+ }
25
+ });
26
+ });
27
+ afterEach(async () => {
28
+ sinon.restore();
29
+ await stop(...Object.values(components));
30
+ await common.teardown();
31
+ mockNetwork.reset();
32
+ });
33
+ it('can start correctly', async () => {
34
+ if (!isStartable(pubsub)) {
35
+ return;
36
+ }
37
+ sinon.spy(components.registrar, 'register');
38
+ await start(...Object.values(components));
39
+ expect(pubsub.isStarted()).to.equal(true);
40
+ expect(components.registrar.register).to.have.property('callCount', 1);
41
+ });
42
+ it('can stop correctly', async () => {
43
+ if (!isStartable(pubsub)) {
44
+ return;
45
+ }
46
+ sinon.spy(components.registrar, 'unregister');
47
+ await start(...Object.values(components));
48
+ await stop(...Object.values(components));
49
+ expect(pubsub.isStarted()).to.equal(false);
50
+ expect(components.registrar.unregister).to.have.property('callCount', 1);
51
+ });
52
+ it('can subscribe and unsubscribe correctly', async () => {
53
+ const handler = () => {
54
+ throw new Error('a message should not be received');
55
+ };
56
+ await start(...Object.values(components));
57
+ pubsub.subscribe(topic);
58
+ pubsub.addEventListener('message', handler);
59
+ await pWaitFor(() => {
60
+ const topics = pubsub.getTopics();
61
+ return topics.length === 1 && topics[0] === topic;
62
+ });
63
+ pubsub.removeEventListener('message', handler);
64
+ pubsub.unsubscribe(topic);
65
+ await pWaitFor(() => pubsub.getTopics().length === 0);
66
+ // Publish to guarantee the handler is not called
67
+ await pubsub.publish(topic, data);
68
+ // handlers are called async
69
+ await delay(100);
70
+ await stop(...Object.values(components));
71
+ });
72
+ it('can subscribe and publish correctly', async () => {
73
+ const defer = pDefer();
74
+ await start(...Object.values(components));
75
+ pubsub.subscribe(topic);
76
+ pubsub.addEventListener('message', (evt) => {
77
+ expect(evt).to.have.nested.property('detail.topic', topic);
78
+ expect(evt).to.have.deep.nested.property('detail.data', data);
79
+ defer.resolve();
80
+ });
81
+ await pubsub.publish(topic, data);
82
+ await defer.promise;
83
+ await stop(...Object.values(components));
84
+ });
85
+ });
86
+ };
87
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/pubsub/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAK7C,MAAM,KAAK,GAAG,KAAK,CAAA;AACnB,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;AAExC,eAAe,CAAC,MAAqC,EAAQ,EAAE;IAC7D,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAI,MAAc,CAAA;QAClB,IAAI,UAA4B,CAAA;QAEhC,uBAAuB;QACvB,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,WAAW,CAAC,KAAK,EAAE,CAAA;YACnB,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAA;YAErC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBAC9C,UAAU;gBACV,IAAI,EAAE;oBACJ,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YACxC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;YACvB,WAAW,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;gBACxB,OAAM;aACP;YAED,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;YAE3C,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YAEzC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACzC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;gBACxB,OAAM;aACP;YAED,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;YAE7C,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YACzC,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YAExC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;YACrD,CAAC,CAAA;YAED,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YACzC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACvB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAE3C,MAAM,QAAQ,CAAC,GAAG,EAAE;gBAClB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;gBACjC,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAA;YACnD,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAC9C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAEzB,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;YAErD,iDAAiD;YACjD,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAEjC,4BAA4B;YAC5B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YAEhB,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAA;YAEtB,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YAEzC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACvB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBACzC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;gBAC1D,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;gBAC7D,KAAK,CAAC,OAAO,EAAE,CAAA;YACjB,CAAC,CAAC,CAAA;YACF,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACjC,MAAM,KAAK,CAAC,OAAO,CAAA;YAEnB,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { PubSubArgs } from './index.js';
2
+ import type { TestSetup } from '../index.js';
3
+ import type { PubSub } from '@libp2p/interface/pubsub';
4
+ declare const _default: (common: TestSetup<PubSub, PubSubArgs>) => void;
5
+ export default _default;
6
+ //# sourceMappingURL=connection-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-handlers.d.ts","sourceRoot":"","sources":["../../../src/pubsub/connection-handlers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,0BAA0B,CAAA;iCAEvC,UAAU,MAAM,EAAE,UAAU,CAAC,KAAG,IAAI;AAA5D,wBA6YC"}
@@ -0,0 +1,329 @@
1
+ import { start, stop } from '@libp2p/interface/startable';
2
+ import { expect } from 'aegir/chai';
3
+ import pDefer from 'p-defer';
4
+ import { pEvent } from 'p-event';
5
+ import pWaitFor from 'p-wait-for';
6
+ import sinon from 'sinon';
7
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
8
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
9
+ import { mockNetwork } from '../mocks/index.js';
10
+ import { createComponents } from './utils.js';
11
+ export default (common) => {
12
+ describe('pubsub connection handlers', () => {
13
+ let psA;
14
+ let psB;
15
+ let componentsA;
16
+ let componentsB;
17
+ describe('nodes send state on connection', () => {
18
+ // Create pubsub nodes and connect them
19
+ beforeEach(async () => {
20
+ mockNetwork.reset();
21
+ componentsA = await createComponents();
22
+ componentsB = await createComponents();
23
+ psA = componentsA.pubsub = await common.setup({
24
+ components: componentsA,
25
+ init: {}
26
+ });
27
+ psB = componentsB.pubsub = await common.setup({
28
+ components: componentsB,
29
+ init: {}
30
+ });
31
+ // Start pubsub
32
+ await start(...Object.values(componentsA), ...Object.values(componentsB));
33
+ expect(psA.getPeers()).to.be.empty();
34
+ expect(psB.getPeers()).to.be.empty();
35
+ // Make subscriptions prior to nodes connected
36
+ psA.subscribe('Za');
37
+ psB.subscribe('Zb');
38
+ expect(psA.getPeers()).to.be.empty();
39
+ expect(psA.getTopics()).to.deep.equal(['Za']);
40
+ expect(psB.getPeers()).to.be.empty();
41
+ expect(psB.getTopics()).to.deep.equal(['Zb']);
42
+ });
43
+ afterEach(async () => {
44
+ sinon.restore();
45
+ await stop(...Object.values(componentsA), ...Object.values(componentsB));
46
+ await common.teardown();
47
+ mockNetwork.reset();
48
+ });
49
+ it('existing subscriptions are sent upon peer connection', async function () {
50
+ const subscriptionsChanged = Promise.all([
51
+ pEvent(psA, 'subscription-change'),
52
+ pEvent(psB, 'subscription-change')
53
+ ]);
54
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
55
+ await subscriptionsChanged;
56
+ expect(psA.getPeers()).to.have.lengthOf(1);
57
+ expect(psB.getPeers()).to.have.lengthOf(1);
58
+ expect(psA.getTopics()).to.deep.equal(['Za']);
59
+ expect(psB.getTopics()).to.deep.equal(['Zb']);
60
+ expect(psA.getSubscribers('Zb').map(p => p.toString())).to.deep.equal([componentsB.peerId.toString()]);
61
+ expect(psB.getSubscribers('Za').map(p => p.toString())).to.deep.equal([componentsA.peerId.toString()]);
62
+ });
63
+ });
64
+ describe('pubsub started before connect', () => {
65
+ let psA;
66
+ let psB;
67
+ let componentsA;
68
+ let componentsB;
69
+ // Create pubsub nodes and start them
70
+ beforeEach(async () => {
71
+ mockNetwork.reset();
72
+ componentsA = await createComponents();
73
+ componentsB = await createComponents();
74
+ psA = componentsA.pubsub = await common.setup({
75
+ components: componentsA,
76
+ init: {}
77
+ });
78
+ psB = componentsB.pubsub = await common.setup({
79
+ components: componentsB,
80
+ init: {}
81
+ });
82
+ await start(...Object.values(componentsA), ...Object.values(componentsB));
83
+ });
84
+ afterEach(async () => {
85
+ sinon.restore();
86
+ await stop(...Object.values(componentsA), ...Object.values(componentsB));
87
+ await common.teardown();
88
+ mockNetwork.reset();
89
+ });
90
+ it('should get notified of connected peers on dial', async () => {
91
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
92
+ return Promise.all([
93
+ pWaitFor(() => psA.getPeers().length === 1),
94
+ pWaitFor(() => psB.getPeers().length === 1)
95
+ ]);
96
+ });
97
+ it('should receive pubsub messages', async () => {
98
+ const defer = pDefer();
99
+ const topic = 'test-topic';
100
+ const data = uint8ArrayFromString('hey!');
101
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
102
+ let subscribedTopics = psA.getTopics();
103
+ expect(subscribedTopics).to.not.include(topic);
104
+ psA.subscribe(topic);
105
+ psA.addEventListener('message', (evt) => {
106
+ if (evt.detail.topic === topic) {
107
+ const msg = evt.detail;
108
+ expect(msg.data).to.equalBytes(data);
109
+ defer.resolve();
110
+ }
111
+ });
112
+ psA.subscribe(topic);
113
+ subscribedTopics = psA.getTopics();
114
+ expect(subscribedTopics).to.include(topic);
115
+ // wait for psB to know about psA subscription
116
+ await pWaitFor(() => {
117
+ const subscribedPeers = psB.getSubscribers(topic);
118
+ return subscribedPeers.map(p => p.toString()).includes(componentsA.peerId.toString()); // eslint-disable-line max-nested-callbacks
119
+ });
120
+ await psB.publish(topic, data);
121
+ await defer.promise;
122
+ });
123
+ });
124
+ describe('pubsub started after connect', () => {
125
+ let psA;
126
+ let psB;
127
+ let componentsA;
128
+ let componentsB;
129
+ // Create pubsub nodes
130
+ beforeEach(async () => {
131
+ mockNetwork.reset();
132
+ componentsA = await createComponents();
133
+ componentsB = await createComponents();
134
+ psA = componentsA.pubsub = await common.setup({
135
+ components: componentsA,
136
+ init: {}
137
+ });
138
+ psB = componentsB.pubsub = await common.setup({
139
+ components: componentsB,
140
+ init: {}
141
+ });
142
+ });
143
+ afterEach(async () => {
144
+ sinon.restore();
145
+ await stop(...Object.values(componentsA), ...Object.values(componentsB));
146
+ await common.teardown();
147
+ mockNetwork.reset();
148
+ });
149
+ it('should get notified of connected peers after starting', async () => {
150
+ await start(...Object.values(componentsA), ...Object.values(componentsB));
151
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
152
+ return Promise.all([
153
+ pWaitFor(() => psA.getPeers().length === 1),
154
+ pWaitFor(() => psB.getPeers().length === 1)
155
+ ]);
156
+ });
157
+ it('should receive pubsub messages', async () => {
158
+ const defer = pDefer();
159
+ const topic = 'test-topic';
160
+ const data = uint8ArrayFromString('hey!');
161
+ await start(...Object.values(componentsA), ...Object.values(componentsB));
162
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
163
+ await Promise.all([
164
+ pWaitFor(() => psA.getPeers().length === 1),
165
+ pWaitFor(() => psB.getPeers().length === 1)
166
+ ]);
167
+ let subscribedTopics = psA.getTopics();
168
+ expect(subscribedTopics).to.not.include(topic);
169
+ psA.subscribe(topic);
170
+ psA.addEventListener('message', (evt) => {
171
+ if (evt.detail.topic === topic) {
172
+ const msg = evt.detail;
173
+ expect(msg.data).to.equalBytes(data);
174
+ defer.resolve();
175
+ }
176
+ });
177
+ psA.subscribe(topic);
178
+ subscribedTopics = psA.getTopics();
179
+ expect(subscribedTopics).to.include(topic);
180
+ // wait for psB to know about psA subscription
181
+ await pWaitFor(() => {
182
+ const subscribedPeers = psB.getSubscribers(topic);
183
+ return subscribedPeers.map(p => p.toString()).includes(componentsA.peerId.toString()); // eslint-disable-line max-nested-callbacks
184
+ });
185
+ await psB.publish(topic, data);
186
+ await defer.promise;
187
+ });
188
+ });
189
+ describe('pubsub with intermittent connections', () => {
190
+ let psA;
191
+ let psB;
192
+ let componentsA;
193
+ let componentsB;
194
+ // Create pubsub nodes and start them
195
+ beforeEach(async () => {
196
+ mockNetwork.reset();
197
+ componentsA = await createComponents();
198
+ componentsB = await createComponents();
199
+ psA = componentsA.pubsub = await common.setup({
200
+ components: componentsA,
201
+ init: {}
202
+ });
203
+ psB = componentsB.pubsub = await common.setup({
204
+ components: componentsB,
205
+ init: {}
206
+ });
207
+ await start(...Object.values(componentsA), ...Object.values(componentsB));
208
+ });
209
+ afterEach(async () => {
210
+ sinon.restore();
211
+ await stop(...Object.values(componentsA), ...Object.values(componentsB));
212
+ await common.teardown();
213
+ mockNetwork.reset();
214
+ });
215
+ it.skip('should receive pubsub messages after a node restart', async function () {
216
+ const topic = 'test-topic';
217
+ const data = uint8ArrayFromString('hey!');
218
+ let counter = 0;
219
+ const defer1 = pDefer();
220
+ const defer2 = pDefer();
221
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
222
+ let subscribedTopics = psA.getTopics();
223
+ expect(subscribedTopics).to.not.include(topic);
224
+ psA.subscribe(topic);
225
+ psA.addEventListener('message', (evt) => {
226
+ if (evt.detail.topic === topic) {
227
+ const msg = evt.detail;
228
+ expect(msg.data).to.equalBytes(data);
229
+ counter++;
230
+ counter === 1 ? defer1.resolve() : defer2.resolve();
231
+ }
232
+ });
233
+ psA.subscribe(topic);
234
+ subscribedTopics = psA.getTopics();
235
+ expect(subscribedTopics).to.include(topic);
236
+ // wait for psB to know about psA subscription
237
+ await pWaitFor(() => {
238
+ const subscribedPeers = psB.getSubscribers(topic);
239
+ return subscribedPeers.map(p => p.toString()).includes(componentsA.peerId.toString()); // eslint-disable-line max-nested-callbacks
240
+ });
241
+ await psB.publish(topic, data);
242
+ await defer1.promise;
243
+ await stop(psB);
244
+ await pWaitFor(() => {
245
+ // @ts-expect-error protected fields
246
+ const aHasConnectionToB = psA._libp2p.connectionManager.get(psB.peerId);
247
+ // @ts-expect-error protected fields
248
+ const bHasConnectionToA = psB._libp2p.connectionManager.get(psA.peerId);
249
+ return aHasConnectionToB != null && bHasConnectionToA != null;
250
+ });
251
+ await start(psB);
252
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
253
+ // wait for remoteLibp2p to know about libp2p subscription
254
+ await pWaitFor(() => {
255
+ const subscribedPeers = psB.getSubscribers(topic);
256
+ return subscribedPeers.toString().includes(componentsA.peerId.toString());
257
+ });
258
+ await psB.publish(topic, data);
259
+ await defer2.promise;
260
+ });
261
+ it.skip('should handle quick reconnects with a delayed disconnect', async () => {
262
+ // Subscribe on both
263
+ let aReceivedFirstMessageFromB = false;
264
+ let aReceivedSecondMessageFromB = false;
265
+ let bReceivedFirstMessageFromA = false;
266
+ let bReceivedSecondMessageFromA = false;
267
+ const topic = 'reconnect-channel';
268
+ const handlerSpyA = (evt) => {
269
+ if (evt.detail.topic !== topic) {
270
+ return;
271
+ }
272
+ const message = evt.detail;
273
+ const data = uint8ArrayToString(message.data);
274
+ if (data === 'message-from-b-1') {
275
+ aReceivedFirstMessageFromB = true;
276
+ }
277
+ if (data === 'message-from-b-2') {
278
+ aReceivedSecondMessageFromB = true;
279
+ }
280
+ };
281
+ const handlerSpyB = (evt) => {
282
+ if (evt.detail.topic !== topic) {
283
+ return;
284
+ }
285
+ const message = evt.detail;
286
+ const data = uint8ArrayToString(message.data);
287
+ if (data === 'message-from-a-1') {
288
+ bReceivedFirstMessageFromA = true;
289
+ }
290
+ if (data === 'message-from-a-2') {
291
+ bReceivedSecondMessageFromA = true;
292
+ }
293
+ };
294
+ psA.addEventListener('message', handlerSpyA);
295
+ psB.addEventListener('message', handlerSpyB);
296
+ psA.subscribe(topic);
297
+ psB.subscribe(topic);
298
+ // Create two connections to the remote peer
299
+ // @ts-expect-error protected fields
300
+ const originalConnection = await psA._libp2p.dialer.connectToPeer(psB.peerId);
301
+ // second connection
302
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
303
+ // Wait for subscriptions to occur
304
+ await pWaitFor(() => {
305
+ return psA.getSubscribers(topic).map(p => p.toString()).includes(componentsB.peerId.toString()) &&
306
+ psB.getSubscribers(topic).map(p => p.toString()).includes(componentsA.peerId.toString());
307
+ });
308
+ // Verify messages go both ways
309
+ await psA.publish(topic, uint8ArrayFromString('message-from-a-1'));
310
+ await psB.publish(topic, uint8ArrayFromString('message-from-b-1'));
311
+ await pWaitFor(() => {
312
+ return aReceivedFirstMessageFromB && bReceivedFirstMessageFromA;
313
+ });
314
+ // Disconnect the first connection (this acts as a delayed reconnect)
315
+ // @ts-expect-error protected fields
316
+ const psAConnUpdateSpy = sinon.spy(psA._libp2p.connectionManager.connections, 'set');
317
+ await originalConnection.close();
318
+ await pWaitFor(() => psAConnUpdateSpy.callCount === 1);
319
+ // Verify messages go both ways after the disconnect
320
+ await psA.publish(topic, uint8ArrayFromString('message-from-a-2'));
321
+ await psB.publish(topic, uint8ArrayFromString('message-from-b-2'));
322
+ await pWaitFor(() => {
323
+ return aReceivedSecondMessageFromB && bReceivedSecondMessageFromA;
324
+ });
325
+ });
326
+ });
327
+ });
328
+ };
329
+ //# sourceMappingURL=connection-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-handlers.js","sourceRoot":"","sources":["../../../src/pubsub/connection-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PubSubArgs } from './index.js';
2
+ import type { TestSetup } from '../index.js';
3
+ import type { PubSub } from '@libp2p/interface/pubsub';
4
+ declare const _default: (common: TestSetup<PubSub, PubSubArgs>) => void;
5
+ export default _default;
6
+ //# sourceMappingURL=emit-self.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-self.d.ts","sourceRoot":"","sources":["../../../src/pubsub/emit-self.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;iCAM9B,UAAU,MAAM,EAAE,UAAU,CAAC,KAAG,IAAI;AAA5D,wBAoFC"}
@@ -0,0 +1,80 @@
1
+ import { start, stop } from '@libp2p/interface/startable';
2
+ import { expect } from 'aegir/chai';
3
+ import sinon from 'sinon';
4
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
5
+ import { mockNetwork } from '../mocks/index.js';
6
+ import { createComponents } from './utils.js';
7
+ const topic = 'foo';
8
+ const data = uint8ArrayFromString('bar');
9
+ const shouldNotHappen = () => expect.fail();
10
+ export default (common) => {
11
+ describe('emit self', () => {
12
+ describe('enabled', () => {
13
+ let pubsub;
14
+ let components;
15
+ before(async () => {
16
+ mockNetwork.reset();
17
+ components = await createComponents();
18
+ pubsub = components.pubsub = await common.setup({
19
+ components,
20
+ init: {
21
+ emitSelf: true
22
+ }
23
+ });
24
+ await start(...Object.values(components));
25
+ pubsub.subscribe(topic);
26
+ });
27
+ after(async () => {
28
+ sinon.restore();
29
+ await stop(...Object.values(components));
30
+ await common.teardown();
31
+ mockNetwork.reset();
32
+ });
33
+ it('should emit to self on publish', async () => {
34
+ const promise = new Promise((resolve) => {
35
+ pubsub.addEventListener('message', (evt) => {
36
+ if (evt.detail.topic === topic) {
37
+ resolve();
38
+ }
39
+ }, {
40
+ once: true
41
+ });
42
+ });
43
+ const result = await pubsub.publish(topic, data);
44
+ await promise;
45
+ expect(result).to.have.property('recipients').with.lengthOf(1);
46
+ });
47
+ });
48
+ describe('disabled', () => {
49
+ let pubsub;
50
+ let components;
51
+ before(async () => {
52
+ mockNetwork.reset();
53
+ components = await createComponents();
54
+ pubsub = components.pubsub = await common.setup({
55
+ components,
56
+ init: {
57
+ emitSelf: false
58
+ }
59
+ });
60
+ await start(...Object.values(components));
61
+ pubsub.subscribe(topic);
62
+ });
63
+ after(async () => {
64
+ sinon.restore();
65
+ await stop(...Object.values(components));
66
+ await common.teardown();
67
+ mockNetwork.reset();
68
+ });
69
+ it('should not emit to self on publish', async () => {
70
+ pubsub.addEventListener('message', shouldNotHappen, {
71
+ once: true
72
+ });
73
+ await pubsub.publish(topic, data);
74
+ // Wait 1 second to guarantee that self is not noticed
75
+ await new Promise((resolve) => setTimeout(resolve, 1000));
76
+ });
77
+ });
78
+ });
79
+ };
80
+ //# sourceMappingURL=emit-self.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-self.js","sourceRoot":"","sources":["../../../src/pubsub/emit-self.ts"],"names":[],"mappings":"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"}