@libp2p/interface-compliance-tests 1.0.8 → 1.1.0
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/stream-muxer/base-test.d.ts.map +1 -1
- package/dist/src/stream-muxer/base-test.js.map +1 -1
- package/dist/src/transport/utils/index.d.ts.map +1 -1
- package/dist/src/transport/utils/index.js +4 -1
- package/dist/src/transport/utils/index.js.map +1 -1
- package/dist/src/utils/mock-connection-gater.d.ts +12 -0
- package/dist/src/utils/mock-connection-gater.d.ts.map +1 -0
- package/dist/src/utils/mock-connection-gater.js +14 -0
- package/dist/src/utils/mock-connection-gater.js.map +1 -0
- package/dist/src/utils/mock-connection.d.ts +5 -0
- package/dist/src/utils/mock-connection.d.ts.map +1 -0
- package/dist/src/utils/mock-connection.js +52 -0
- package/dist/src/utils/mock-connection.js.map +1 -0
- package/dist/src/utils/mock-multiaddr-connection.d.ts +4 -0
- package/dist/src/utils/mock-multiaddr-connection.d.ts.map +1 -0
- package/dist/src/utils/mock-multiaddr-connection.js +14 -0
- package/dist/src/utils/mock-multiaddr-connection.js.map +1 -0
- package/dist/src/utils/mock-muxer.d.ts +3 -0
- package/dist/src/utils/mock-muxer.d.ts.map +1 -0
- package/dist/src/utils/mock-muxer.js +37 -0
- package/dist/src/utils/mock-muxer.js.map +1 -0
- package/dist/src/utils/mock-upgrader.d.ts +7 -0
- package/dist/src/utils/mock-upgrader.d.ts.map +1 -0
- package/dist/src/utils/mock-upgrader.js +24 -0
- package/dist/src/utils/mock-upgrader.js.map +1 -0
- package/package.json +32 -6
- package/src/stream-muxer/base-test.ts +9 -8
- package/src/transport/utils/index.ts +12 -8
- package/src/utils/mock-connection-gater.ts +14 -0
- package/src/utils/mock-connection.ts +66 -0
- package/src/utils/mock-multiaddr-connection.ts +18 -0
- package/src/utils/mock-muxer.ts +43 -0
- package/src/utils/mock-upgrader.ts +33 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"base-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;iCAOlD,UAAU,KAAK,EAAE,YAAY,CAAC;AAAtD,wBAqJC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"base-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transport/utils/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAEjF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transport/utils/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAEjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C;;;GAGG;AACH,wBAAgB,WAAW,CAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAE,MAAa,WAY5D;AAED,wBAAgB,uBAAuB,CAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,mBAAmB,CAaxF;AAED,wBAAgB,SAAS,IAAK,KAAK,CAoClC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,wBAAgB,YAAY,CAAE,OAAO,GAAE,mBAAwB,YAuB9D"}
|
|
@@ -109,6 +109,9 @@ async function createConnection(maConn, direction, muxer) {
|
|
|
109
109
|
tags: [],
|
|
110
110
|
streams,
|
|
111
111
|
newStream: async (protocols) => {
|
|
112
|
+
if (!Array.isArray(protocols)) {
|
|
113
|
+
protocols = [protocols];
|
|
114
|
+
}
|
|
112
115
|
if (protocols.length === 0) {
|
|
113
116
|
throw new Error('protocols must have a length');
|
|
114
117
|
}
|
|
@@ -121,7 +124,7 @@ async function createConnection(maConn, direction, muxer) {
|
|
|
121
124
|
registry.set(id, streamData);
|
|
122
125
|
return streamData;
|
|
123
126
|
},
|
|
124
|
-
addStream: (
|
|
127
|
+
addStream: (stream, metadata) => {
|
|
125
128
|
},
|
|
126
129
|
removeStream: (id) => {
|
|
127
130
|
registry.delete(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/transport/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAM9B;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAE,IAAa,EAAE,KAAa,IAAI;IAC3D,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;KACzC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEtB,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE;QAClC,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAE,MAA0B;IACjE,MAAM,MAAM,GAAwB;QAClC,GAAG,MAAM;QACT,KAAK,CAAC,KAAK;QAEX,CAAC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;SACjB;QACD,UAAU,EAAE,IAAI,SAAS,CAAC,yBAAyB,CAAC;KACrD,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/transport/utils/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function mockConnectionGater(): {
|
|
2
|
+
denyDialPeer: () => Promise<boolean>;
|
|
3
|
+
denyDialMultiaddr: () => Promise<boolean>;
|
|
4
|
+
denyInboundConnection: () => Promise<boolean>;
|
|
5
|
+
denyOutboundConnection: () => Promise<boolean>;
|
|
6
|
+
denyInboundEncryptedConnection: () => Promise<boolean>;
|
|
7
|
+
denyOutboundEncryptedConnection: () => Promise<boolean>;
|
|
8
|
+
denyInboundUpgradedConnection: () => Promise<boolean>;
|
|
9
|
+
denyOutboundUpgradedConnection: () => Promise<boolean>;
|
|
10
|
+
filterMultiaddrForPeer: () => Promise<boolean>;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=mock-connection-gater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-connection-gater.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-connection-gater.ts"],"names":[],"mappings":"AACA,wBAAgB,mBAAmB;;;;;;;;;;EAYlC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function mockConnectionGater() {
|
|
2
|
+
return {
|
|
3
|
+
denyDialPeer: async () => await Promise.resolve(false),
|
|
4
|
+
denyDialMultiaddr: async () => await Promise.resolve(false),
|
|
5
|
+
denyInboundConnection: async () => await Promise.resolve(false),
|
|
6
|
+
denyOutboundConnection: async () => await Promise.resolve(false),
|
|
7
|
+
denyInboundEncryptedConnection: async () => await Promise.resolve(false),
|
|
8
|
+
denyOutboundEncryptedConnection: async () => await Promise.resolve(false),
|
|
9
|
+
denyInboundUpgradedConnection: async () => await Promise.resolve(false),
|
|
10
|
+
denyOutboundUpgradedConnection: async () => await Promise.resolve(false),
|
|
11
|
+
filterMultiaddrForPeer: async () => await Promise.resolve(true)
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mock-connection-gater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-connection-gater.js","sourceRoot":"","sources":["../../../src/utils/mock-connection-gater.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACtD,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC3D,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/D,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACxE,+BAA+B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,6BAA6B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACvE,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACxE,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;KAChE,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MultiaddrConnection } from '@libp2p/interfaces/transport';
|
|
2
|
+
import type { Connection } from '@libp2p/interfaces/connection';
|
|
3
|
+
import type { Muxer } from '@libp2p/interfaces/stream-muxer';
|
|
4
|
+
export declare function mockConnection(maConn: MultiaddrConnection, direction: 'inbound' | 'outbound', muxer: Muxer): Promise<Connection>;
|
|
5
|
+
//# sourceMappingURL=mock-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-connection.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-connection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAoC,MAAM,+BAA+B,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAE5D,wBAAsB,cAAc,CAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CA0DvI"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { PeerId } from '@libp2p/peer-id';
|
|
2
|
+
import { createEd25519PeerId } from '@libp2p/peer-id-factory';
|
|
3
|
+
import { pipe } from 'it-pipe';
|
|
4
|
+
export async function mockConnection(maConn, direction, muxer) {
|
|
5
|
+
const remoteAddr = maConn.remoteAddr;
|
|
6
|
+
const remotePeerIdStr = remoteAddr.getPeerId();
|
|
7
|
+
const remotePeer = remotePeerIdStr != null ? PeerId.fromString(remotePeerIdStr) : await createEd25519PeerId();
|
|
8
|
+
const streams = [];
|
|
9
|
+
let streamId = 0;
|
|
10
|
+
const registry = new Map();
|
|
11
|
+
void pipe(maConn, muxer, maConn);
|
|
12
|
+
return {
|
|
13
|
+
id: 'mock-connection',
|
|
14
|
+
remoteAddr,
|
|
15
|
+
remotePeer,
|
|
16
|
+
stat: {
|
|
17
|
+
status: 'OPEN',
|
|
18
|
+
direction,
|
|
19
|
+
timeline: maConn.timeline,
|
|
20
|
+
multiplexer: 'test-multiplexer',
|
|
21
|
+
encryption: 'yes-yes-very-secure'
|
|
22
|
+
},
|
|
23
|
+
registry,
|
|
24
|
+
tags: [],
|
|
25
|
+
streams,
|
|
26
|
+
newStream: async (protocols) => {
|
|
27
|
+
if (!Array.isArray(protocols)) {
|
|
28
|
+
protocols = [protocols];
|
|
29
|
+
}
|
|
30
|
+
if (protocols.length === 0) {
|
|
31
|
+
throw new Error('protocols must have a length');
|
|
32
|
+
}
|
|
33
|
+
const id = `${streamId++}`;
|
|
34
|
+
const stream = muxer.newStream(id);
|
|
35
|
+
const streamData = {
|
|
36
|
+
protocol: protocols[0],
|
|
37
|
+
stream
|
|
38
|
+
};
|
|
39
|
+
registry.set(id, streamData);
|
|
40
|
+
return streamData;
|
|
41
|
+
},
|
|
42
|
+
addStream: (stream, metadata) => {
|
|
43
|
+
},
|
|
44
|
+
removeStream: (id) => {
|
|
45
|
+
registry.delete(id);
|
|
46
|
+
},
|
|
47
|
+
close: async () => {
|
|
48
|
+
await maConn.close();
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=mock-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-connection.js","sourceRoot":"","sources":["../../../src/utils/mock-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAK9B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAE,MAA2B,EAAE,SAAiC,EAAE,KAAY;IAChH,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;IACpC,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,EAAE,CAAA;IAC9C,MAAM,UAAU,GAAG,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,mBAAmB,EAAE,CAAA;IAE7G,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;IAE1B,KAAK,IAAI,CACP,MAAM,EAAE,KAAK,EAAE,MAAM,CACtB,CAAA;IAED,OAAO;QACL,EAAE,EAAE,iBAAiB;QACrB,UAAU;QACV,UAAU;QACV,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM;YACd,SAAS;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,kBAAkB;YAC/B,UAAU,EAAE,qBAAqB;SAClC;QACD,QAAQ;QACR,IAAI,EAAE,EAAE;QACR,OAAO;QACP,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAC7B,SAAS,GAAG,CAAC,SAAS,CAAC,CAAA;aACxB;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAChD;YAED,MAAM,EAAE,GAAG,GAAG,QAAQ,EAAE,EAAE,CAAA;YAC1B,MAAM,MAAM,GAAW,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAC1C,MAAM,UAAU,GAAmB;gBACjC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;gBACtB,MAAM;aACP,CAAA;YAED,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;YAE5B,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,SAAS,EAAE,CAAC,MAAc,EAAE,QAAkB,EAAE,EAAE;QAElD,CAAC;QACD,YAAY,EAAE,CAAC,EAAU,EAAE,EAAE;YAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACrB,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MultiaddrConnection } from '@libp2p/interfaces/transport';
|
|
2
|
+
import type { Duplex } from 'it-stream-types';
|
|
3
|
+
export declare function mockMultiaddrConnection(source: Duplex<Uint8Array>): MultiaddrConnection;
|
|
4
|
+
//# sourceMappingURL=mock-multiaddr-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-multiaddr-connection.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-multiaddr-connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,wBAAgB,uBAAuB,CAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,mBAAmB,CAaxF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Multiaddr } from '@multiformats/multiaddr';
|
|
2
|
+
export function mockMultiaddrConnection(source) {
|
|
3
|
+
const maConn = {
|
|
4
|
+
...source,
|
|
5
|
+
async close() {
|
|
6
|
+
},
|
|
7
|
+
timeline: {
|
|
8
|
+
open: Date.now()
|
|
9
|
+
},
|
|
10
|
+
remoteAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4001')
|
|
11
|
+
};
|
|
12
|
+
return maConn;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mock-multiaddr-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-multiaddr-connection.js","sourceRoot":"","sources":["../../../src/utils/mock-multiaddr-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAInD,MAAM,UAAU,uBAAuB,CAAE,MAA0B;IACjE,MAAM,MAAM,GAAwB;QAClC,GAAG,MAAM;QACT,KAAK,CAAC,KAAK;QAEX,CAAC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;SACjB;QACD,UAAU,EAAE,IAAI,SAAS,CAAC,yBAAyB,CAAC;KACrD,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-muxer.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-muxer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAE5D,wBAAgB,SAAS,IAAK,KAAK,CAoClC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { pair } from 'it-pair';
|
|
2
|
+
import { pushable } from 'it-pushable';
|
|
3
|
+
import drain from 'it-drain';
|
|
4
|
+
export function mockMuxer() {
|
|
5
|
+
let streamId = 0;
|
|
6
|
+
let streams = [];
|
|
7
|
+
const p = pushable();
|
|
8
|
+
const muxer = {
|
|
9
|
+
source: p,
|
|
10
|
+
sink: async (source) => {
|
|
11
|
+
await drain(source);
|
|
12
|
+
},
|
|
13
|
+
get streams() {
|
|
14
|
+
return streams;
|
|
15
|
+
},
|
|
16
|
+
newStream: (name) => {
|
|
17
|
+
const echo = pair();
|
|
18
|
+
const id = `${streamId++}`;
|
|
19
|
+
const stream = {
|
|
20
|
+
id,
|
|
21
|
+
sink: echo.sink,
|
|
22
|
+
source: echo.source,
|
|
23
|
+
close: () => {
|
|
24
|
+
streams = streams.filter(s => s !== stream);
|
|
25
|
+
},
|
|
26
|
+
abort: () => { },
|
|
27
|
+
reset: () => { },
|
|
28
|
+
timeline: {
|
|
29
|
+
open: 0
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return stream;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return muxer;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=mock-muxer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-muxer.js","sourceRoot":"","sources":["../../../src/utils/mock-muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,MAAM,UAAU,CAAA;AAI5B,MAAM,UAAU,SAAS;IACvB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,OAAO,GAAa,EAAE,CAAA;IAC1B,MAAM,CAAC,GAAG,QAAQ,EAAc,CAAA;IAEhC,MAAM,KAAK,GAAU;QACnB,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;QACD,IAAI,OAAO;YACT,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAI,EAAc,CAAA;YAE/B,MAAM,EAAE,GAAG,GAAG,QAAQ,EAAE,EAAE,CAAA;YAC1B,MAAM,MAAM,GAAW;gBACrB,EAAE;gBACF,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,GAAG,EAAE;oBACV,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;gBAC7C,CAAC;gBACD,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;gBACf,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;gBACf,QAAQ,EAAE;oBACR,IAAI,EAAE,CAAC;iBACR;aACF,CAAA;YAED,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Upgrader } from '@libp2p/interfaces/transport';
|
|
2
|
+
import type { Muxer } from '@libp2p/interfaces/stream-muxer';
|
|
3
|
+
export interface MockUpgraderOptions {
|
|
4
|
+
muxer?: Muxer;
|
|
5
|
+
}
|
|
6
|
+
export declare function mockUpgrader(options?: MockUpgraderOptions): Upgrader;
|
|
7
|
+
//# sourceMappingURL=mock-upgrader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-upgrader.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-upgrader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAuB,MAAM,8BAA8B,CAAA;AACjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAE5D,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,wBAAgB,YAAY,CAAE,OAAO,GAAE,mBAAwB,YAsB9D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { expect } from 'aegir/utils/chai.js';
|
|
2
|
+
import { mockMuxer } from './mock-muxer.js';
|
|
3
|
+
import { mockConnection } from './mock-connection.js';
|
|
4
|
+
export function mockUpgrader(options = {}) {
|
|
5
|
+
const ensureProps = (multiaddrConnection) => {
|
|
6
|
+
['sink', 'source', 'remoteAddr', 'timeline', 'close'].forEach(prop => {
|
|
7
|
+
expect(multiaddrConnection).to.have.property(prop);
|
|
8
|
+
});
|
|
9
|
+
return multiaddrConnection;
|
|
10
|
+
};
|
|
11
|
+
const muxer = options.muxer ?? mockMuxer();
|
|
12
|
+
const upgrader = {
|
|
13
|
+
async upgradeOutbound(multiaddrConnection) {
|
|
14
|
+
ensureProps(multiaddrConnection);
|
|
15
|
+
return await mockConnection(multiaddrConnection, 'outbound', muxer);
|
|
16
|
+
},
|
|
17
|
+
async upgradeInbound(multiaddrConnection) {
|
|
18
|
+
ensureProps(multiaddrConnection);
|
|
19
|
+
return await mockConnection(multiaddrConnection, 'inbound', muxer);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
return upgrader;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=mock-upgrader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-upgrader.js","sourceRoot":"","sources":["../../../src/utils/mock-upgrader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAQrD,MAAM,UAAU,YAAY,CAAE,UAA+B,EAAE;IAC7D,MAAM,WAAW,GAAG,CAAC,mBAAwC,EAAE,EAAE;QAC/D,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnE,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;QACF,OAAO,mBAAmB,CAAA;IAC5B,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,CAAA;IAE1C,MAAM,QAAQ,GAAa;QACzB,KAAK,CAAC,eAAe,CAAE,mBAAmB;YACxC,WAAW,CAAC,mBAAmB,CAAC,CAAA;YAChC,OAAO,MAAM,cAAc,CAAC,mBAAmB,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;QACrE,CAAC;QACD,KAAK,CAAC,cAAc,CAAE,mBAAmB;YACvC,WAAW,CAAC,mBAAmB,CAAC,CAAA;YAChC,OAAO,MAAM,cAAc,CAAC,mBAAmB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QACpE,CAAC;KACF,CAAA;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/interface-compliance-tests",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
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",
|
|
@@ -73,8 +73,12 @@
|
|
|
73
73
|
"types": "./dist/src/stream-muxer/index.d.ts"
|
|
74
74
|
},
|
|
75
75
|
"./topology": {
|
|
76
|
-
"import": "./dist/src/topology/
|
|
77
|
-
"types": "./dist/src/topology/
|
|
76
|
+
"import": "./dist/src/topology/topology.js",
|
|
77
|
+
"types": "./dist/src/topology/topology.d.ts"
|
|
78
|
+
},
|
|
79
|
+
"./topology/multicodec-toplogy": {
|
|
80
|
+
"import": "./dist/src/topology/multicodec-toplogy.js",
|
|
81
|
+
"types": "./dist/src/topology/multicodec-toplogy.d.ts"
|
|
78
82
|
},
|
|
79
83
|
"./transport": {
|
|
80
84
|
"import": "./dist/src/transport/index.js",
|
|
@@ -84,6 +88,30 @@
|
|
|
84
88
|
"import": "./dist/src/transport/utils/index.js",
|
|
85
89
|
"types": "./dist/src/transport/utils/index.d.ts"
|
|
86
90
|
},
|
|
91
|
+
"./utils/mock-connection": {
|
|
92
|
+
"import": "./dist/src/utils/mock-connection.js",
|
|
93
|
+
"types": "./dist/src/utils/mock-connection.d.ts"
|
|
94
|
+
},
|
|
95
|
+
"./utils/mock-connection-gater": {
|
|
96
|
+
"import": "./dist/src/utils/mock-connection-gater.js",
|
|
97
|
+
"types": "./dist/src/utils/mock-connection-gater.d.ts"
|
|
98
|
+
},
|
|
99
|
+
"./utils/mock-multiaddr-connection": {
|
|
100
|
+
"import": "./dist/src/utils/mock-multiaddr-connection.js",
|
|
101
|
+
"types": "./dist/src/utils/mock-multiaddr-connection.d.ts"
|
|
102
|
+
},
|
|
103
|
+
"./utils/mock-muxer": {
|
|
104
|
+
"import": "./dist/src/utils/mock-muxer.js",
|
|
105
|
+
"types": "./dist/src/utils/mock-muxer.d.ts"
|
|
106
|
+
},
|
|
107
|
+
"./utils/mock-peer-store": {
|
|
108
|
+
"import": "./dist/src/utils/mock-peer-store.js",
|
|
109
|
+
"types": "./dist/src/utils/mock-peer-store.d.ts"
|
|
110
|
+
},
|
|
111
|
+
"./utils/mock-upgrader": {
|
|
112
|
+
"import": "./dist/src/utils/mock-upgrader.js",
|
|
113
|
+
"types": "./dist/src/utils/mock-upgrader.d.ts"
|
|
114
|
+
},
|
|
87
115
|
"./utils/peers": {
|
|
88
116
|
"import": "./dist/src/utils/peers.js",
|
|
89
117
|
"types": "./dist/src/utils/peers.d.ts"
|
|
@@ -190,13 +218,11 @@
|
|
|
190
218
|
"test:electron-main": "npm run test -- -t electron-main"
|
|
191
219
|
},
|
|
192
220
|
"dependencies": {
|
|
193
|
-
"@libp2p/connection": "^1.0.0",
|
|
194
221
|
"@libp2p/crypto": "^0.22.2",
|
|
195
222
|
"@libp2p/interfaces": "^1.0.0",
|
|
196
223
|
"@libp2p/peer-id": "^1.0.0",
|
|
197
224
|
"@libp2p/peer-id-factory": "^1.0.0",
|
|
198
|
-
"@libp2p/pubsub": "^1.
|
|
199
|
-
"@libp2p/topology": "^1.0.0",
|
|
225
|
+
"@libp2p/pubsub": "^1.1.0",
|
|
200
226
|
"@multiformats/multiaddr": "^10.1.1",
|
|
201
227
|
"abortable-iterator": "^4.0.0",
|
|
202
228
|
"aegir": "^36.1.3",
|
|
@@ -10,7 +10,8 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
|
10
10
|
import { isValidTick } from '../transport/utils/index.js'
|
|
11
11
|
import type { DeferredPromise } from 'p-defer'
|
|
12
12
|
import type { TestSetup } from '../index.js'
|
|
13
|
-
import type {
|
|
13
|
+
import type { Stream } from '@libp2p/interfaces/connection'
|
|
14
|
+
import type { Muxer, MuxerOptions } from '@libp2p/interfaces/stream-muxer'
|
|
14
15
|
import type { Source, Duplex } from 'it-stream-types'
|
|
15
16
|
|
|
16
17
|
async function drainAndClose (stream: Duplex<Uint8Array>) {
|
|
@@ -22,8 +23,8 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
|
|
|
22
23
|
it('Open a stream from the dialer', async () => {
|
|
23
24
|
const p = duplexPair<Uint8Array>()
|
|
24
25
|
const dialer = await common.setup()
|
|
25
|
-
const onStreamPromise: DeferredPromise<
|
|
26
|
-
const onStreamEndPromise: DeferredPromise<
|
|
26
|
+
const onStreamPromise: DeferredPromise<Stream> = defer()
|
|
27
|
+
const onStreamEndPromise: DeferredPromise<Stream> = defer()
|
|
27
28
|
|
|
28
29
|
const listener = await common.setup({
|
|
29
30
|
onStream: stream => {
|
|
@@ -71,7 +72,7 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
|
|
|
71
72
|
|
|
72
73
|
it('Open a stream from the listener', async () => {
|
|
73
74
|
const p = duplexPair<Uint8Array>()
|
|
74
|
-
const onStreamPromise: DeferredPromise<
|
|
75
|
+
const onStreamPromise: DeferredPromise<Stream> = defer()
|
|
75
76
|
const dialer = await common.setup({
|
|
76
77
|
onStream: stream => {
|
|
77
78
|
onStreamPromise.resolve(stream)
|
|
@@ -99,8 +100,8 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
|
|
|
99
100
|
|
|
100
101
|
it('Open a stream on both sides', async () => {
|
|
101
102
|
const p = duplexPair<Uint8Array>()
|
|
102
|
-
const onDialerStreamPromise: DeferredPromise<
|
|
103
|
-
const onListenerStreamPromise: DeferredPromise<
|
|
103
|
+
const onDialerStreamPromise: DeferredPromise<Stream> = defer()
|
|
104
|
+
const onListenerStreamPromise: DeferredPromise<Stream> = defer()
|
|
104
105
|
const dialer = await common.setup({
|
|
105
106
|
onStream: stream => {
|
|
106
107
|
onDialerStreamPromise.resolve(stream)
|
|
@@ -134,8 +135,8 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
|
|
|
134
135
|
it('Open a stream on one side, write, open a stream on the other side', async () => {
|
|
135
136
|
const toString = (source: Source<Uint8Array>) => map(source, (u) => uint8ArrayToString(u))
|
|
136
137
|
const p = duplexPair<Uint8Array>()
|
|
137
|
-
const onDialerStreamPromise: DeferredPromise<
|
|
138
|
-
const onListenerStreamPromise: DeferredPromise<
|
|
138
|
+
const onDialerStreamPromise: DeferredPromise<Stream> = defer()
|
|
139
|
+
const onListenerStreamPromise: DeferredPromise<Stream> = defer()
|
|
139
140
|
const dialer = await common.setup({
|
|
140
141
|
onStream: stream => {
|
|
141
142
|
onDialerStreamPromise.resolve(stream)
|
|
@@ -7,8 +7,8 @@ import drain from 'it-drain'
|
|
|
7
7
|
import { Multiaddr } from '@multiformats/multiaddr'
|
|
8
8
|
import { pipe } from 'it-pipe'
|
|
9
9
|
import type { Upgrader, MultiaddrConnection } from '@libp2p/interfaces/transport'
|
|
10
|
-
import type { Connection,
|
|
11
|
-
import type {
|
|
10
|
+
import type { Connection, Stream, Metadata, ProtocolStream } from '@libp2p/interfaces/connection'
|
|
11
|
+
import type { Muxer } from '@libp2p/interfaces/stream-muxer'
|
|
12
12
|
import type { Duplex } from 'it-stream-types'
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -46,7 +46,7 @@ export function mockMultiaddrConnection (source: Duplex<Uint8Array>): MultiaddrC
|
|
|
46
46
|
|
|
47
47
|
export function mockMuxer (): Muxer {
|
|
48
48
|
let streamId = 0
|
|
49
|
-
let streams:
|
|
49
|
+
let streams: Stream[] = []
|
|
50
50
|
const p = pushable<Uint8Array>()
|
|
51
51
|
|
|
52
52
|
const muxer: Muxer = {
|
|
@@ -61,7 +61,7 @@ export function mockMuxer (): Muxer {
|
|
|
61
61
|
const echo = pair<Uint8Array>()
|
|
62
62
|
|
|
63
63
|
const id = `${streamId++}`
|
|
64
|
-
const stream:
|
|
64
|
+
const stream: Stream = {
|
|
65
65
|
id,
|
|
66
66
|
sink: echo.sink,
|
|
67
67
|
source: echo.source,
|
|
@@ -116,7 +116,7 @@ async function createConnection (maConn: MultiaddrConnection, direction: 'inboun
|
|
|
116
116
|
const remotePeerIdStr = remoteAddr.getPeerId()
|
|
117
117
|
const remotePeer = remotePeerIdStr != null ? PeerId.fromString(remotePeerIdStr) : await PeerIdFactory.createEd25519PeerId()
|
|
118
118
|
|
|
119
|
-
const streams:
|
|
119
|
+
const streams: Stream[] = []
|
|
120
120
|
let streamId = 0
|
|
121
121
|
|
|
122
122
|
const registry = new Map()
|
|
@@ -140,13 +140,17 @@ async function createConnection (maConn: MultiaddrConnection, direction: 'inboun
|
|
|
140
140
|
tags: [],
|
|
141
141
|
streams,
|
|
142
142
|
newStream: async (protocols) => {
|
|
143
|
+
if (!Array.isArray(protocols)) {
|
|
144
|
+
protocols = [protocols]
|
|
145
|
+
}
|
|
146
|
+
|
|
143
147
|
if (protocols.length === 0) {
|
|
144
148
|
throw new Error('protocols must have a length')
|
|
145
149
|
}
|
|
146
150
|
|
|
147
151
|
const id = `${streamId++}`
|
|
148
|
-
const stream:
|
|
149
|
-
const streamData = {
|
|
152
|
+
const stream: Stream = muxer.newStream(id)
|
|
153
|
+
const streamData: ProtocolStream = {
|
|
150
154
|
protocol: protocols[0],
|
|
151
155
|
stream
|
|
152
156
|
}
|
|
@@ -155,7 +159,7 @@ async function createConnection (maConn: MultiaddrConnection, direction: 'inboun
|
|
|
155
159
|
|
|
156
160
|
return streamData
|
|
157
161
|
},
|
|
158
|
-
addStream: (
|
|
162
|
+
addStream: (stream: Stream, metadata: Metadata) => {
|
|
159
163
|
|
|
160
164
|
},
|
|
161
165
|
removeStream: (id: string) => {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
|
|
2
|
+
export function mockConnectionGater () {
|
|
3
|
+
return {
|
|
4
|
+
denyDialPeer: async () => await Promise.resolve(false),
|
|
5
|
+
denyDialMultiaddr: async () => await Promise.resolve(false),
|
|
6
|
+
denyInboundConnection: async () => await Promise.resolve(false),
|
|
7
|
+
denyOutboundConnection: async () => await Promise.resolve(false),
|
|
8
|
+
denyInboundEncryptedConnection: async () => await Promise.resolve(false),
|
|
9
|
+
denyOutboundEncryptedConnection: async () => await Promise.resolve(false),
|
|
10
|
+
denyInboundUpgradedConnection: async () => await Promise.resolve(false),
|
|
11
|
+
denyOutboundUpgradedConnection: async () => await Promise.resolve(false),
|
|
12
|
+
filterMultiaddrForPeer: async () => await Promise.resolve(true)
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { PeerId } from '@libp2p/peer-id'
|
|
2
|
+
import { createEd25519PeerId } from '@libp2p/peer-id-factory'
|
|
3
|
+
import { pipe } from 'it-pipe'
|
|
4
|
+
import type { MultiaddrConnection } from '@libp2p/interfaces/transport'
|
|
5
|
+
import type { Connection, Stream, Metadata, ProtocolStream } from '@libp2p/interfaces/connection'
|
|
6
|
+
import type { Muxer } from '@libp2p/interfaces/stream-muxer'
|
|
7
|
+
|
|
8
|
+
export async function mockConnection (maConn: MultiaddrConnection, direction: 'inbound' | 'outbound', muxer: Muxer): Promise<Connection> {
|
|
9
|
+
const remoteAddr = maConn.remoteAddr
|
|
10
|
+
const remotePeerIdStr = remoteAddr.getPeerId()
|
|
11
|
+
const remotePeer = remotePeerIdStr != null ? PeerId.fromString(remotePeerIdStr) : await createEd25519PeerId()
|
|
12
|
+
|
|
13
|
+
const streams: Stream[] = []
|
|
14
|
+
let streamId = 0
|
|
15
|
+
|
|
16
|
+
const registry = new Map()
|
|
17
|
+
|
|
18
|
+
void pipe(
|
|
19
|
+
maConn, muxer, maConn
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
id: 'mock-connection',
|
|
24
|
+
remoteAddr,
|
|
25
|
+
remotePeer,
|
|
26
|
+
stat: {
|
|
27
|
+
status: 'OPEN',
|
|
28
|
+
direction,
|
|
29
|
+
timeline: maConn.timeline,
|
|
30
|
+
multiplexer: 'test-multiplexer',
|
|
31
|
+
encryption: 'yes-yes-very-secure'
|
|
32
|
+
},
|
|
33
|
+
registry,
|
|
34
|
+
tags: [],
|
|
35
|
+
streams,
|
|
36
|
+
newStream: async (protocols) => {
|
|
37
|
+
if (!Array.isArray(protocols)) {
|
|
38
|
+
protocols = [protocols]
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (protocols.length === 0) {
|
|
42
|
+
throw new Error('protocols must have a length')
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const id = `${streamId++}`
|
|
46
|
+
const stream: Stream = muxer.newStream(id)
|
|
47
|
+
const streamData: ProtocolStream = {
|
|
48
|
+
protocol: protocols[0],
|
|
49
|
+
stream
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
registry.set(id, streamData)
|
|
53
|
+
|
|
54
|
+
return streamData
|
|
55
|
+
},
|
|
56
|
+
addStream: (stream: Stream, metadata: Metadata) => {
|
|
57
|
+
|
|
58
|
+
},
|
|
59
|
+
removeStream: (id: string) => {
|
|
60
|
+
registry.delete(id)
|
|
61
|
+
},
|
|
62
|
+
close: async () => {
|
|
63
|
+
await maConn.close()
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Multiaddr } from '@multiformats/multiaddr'
|
|
2
|
+
import type { MultiaddrConnection } from '@libp2p/interfaces/transport'
|
|
3
|
+
import type { Duplex } from 'it-stream-types'
|
|
4
|
+
|
|
5
|
+
export function mockMultiaddrConnection (source: Duplex<Uint8Array>): MultiaddrConnection {
|
|
6
|
+
const maConn: MultiaddrConnection = {
|
|
7
|
+
...source,
|
|
8
|
+
async close () {
|
|
9
|
+
|
|
10
|
+
},
|
|
11
|
+
timeline: {
|
|
12
|
+
open: Date.now()
|
|
13
|
+
},
|
|
14
|
+
remoteAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4001')
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return maConn
|
|
18
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { pair } from 'it-pair'
|
|
2
|
+
import { pushable } from 'it-pushable'
|
|
3
|
+
import drain from 'it-drain'
|
|
4
|
+
import type { Stream } from '@libp2p/interfaces/connection'
|
|
5
|
+
import type { Muxer } from '@libp2p/interfaces/stream-muxer'
|
|
6
|
+
|
|
7
|
+
export function mockMuxer (): Muxer {
|
|
8
|
+
let streamId = 0
|
|
9
|
+
let streams: Stream[] = []
|
|
10
|
+
const p = pushable<Uint8Array>()
|
|
11
|
+
|
|
12
|
+
const muxer: Muxer = {
|
|
13
|
+
source: p,
|
|
14
|
+
sink: async (source) => {
|
|
15
|
+
await drain(source)
|
|
16
|
+
},
|
|
17
|
+
get streams () {
|
|
18
|
+
return streams
|
|
19
|
+
},
|
|
20
|
+
newStream: (name?: string) => {
|
|
21
|
+
const echo = pair<Uint8Array>()
|
|
22
|
+
|
|
23
|
+
const id = `${streamId++}`
|
|
24
|
+
const stream: Stream = {
|
|
25
|
+
id,
|
|
26
|
+
sink: echo.sink,
|
|
27
|
+
source: echo.source,
|
|
28
|
+
close: () => {
|
|
29
|
+
streams = streams.filter(s => s !== stream)
|
|
30
|
+
},
|
|
31
|
+
abort: () => {},
|
|
32
|
+
reset: () => {},
|
|
33
|
+
timeline: {
|
|
34
|
+
open: 0
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return stream
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return muxer
|
|
43
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { expect } from 'aegir/utils/chai.js'
|
|
2
|
+
import { mockMuxer } from './mock-muxer.js'
|
|
3
|
+
import { mockConnection } from './mock-connection.js'
|
|
4
|
+
import type { Upgrader, MultiaddrConnection } from '@libp2p/interfaces/transport'
|
|
5
|
+
import type { Muxer } from '@libp2p/interfaces/stream-muxer'
|
|
6
|
+
|
|
7
|
+
export interface MockUpgraderOptions {
|
|
8
|
+
muxer?: Muxer
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function mockUpgrader (options: MockUpgraderOptions = {}) {
|
|
12
|
+
const ensureProps = (multiaddrConnection: MultiaddrConnection) => {
|
|
13
|
+
['sink', 'source', 'remoteAddr', 'timeline', 'close'].forEach(prop => {
|
|
14
|
+
expect(multiaddrConnection).to.have.property(prop)
|
|
15
|
+
})
|
|
16
|
+
return multiaddrConnection
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const muxer = options.muxer ?? mockMuxer()
|
|
20
|
+
|
|
21
|
+
const upgrader: Upgrader = {
|
|
22
|
+
async upgradeOutbound (multiaddrConnection) {
|
|
23
|
+
ensureProps(multiaddrConnection)
|
|
24
|
+
return await mockConnection(multiaddrConnection, 'outbound', muxer)
|
|
25
|
+
},
|
|
26
|
+
async upgradeInbound (multiaddrConnection) {
|
|
27
|
+
ensureProps(multiaddrConnection)
|
|
28
|
+
return await mockConnection(multiaddrConnection, 'inbound', muxer)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return upgrader
|
|
33
|
+
}
|