@libp2p/interface-compliance-tests 2.0.3 → 3.0.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.
Files changed (192) hide show
  1. package/README.md +19 -11
  2. package/dist/src/{utils/is-valid-tick.d.ts → is-valid-tick.d.ts} +0 -0
  3. package/dist/src/is-valid-tick.d.ts.map +1 -0
  4. package/dist/src/{utils/is-valid-tick.js → is-valid-tick.js} +0 -0
  5. package/dist/src/is-valid-tick.js.map +1 -0
  6. package/dist/src/{utils/peers.d.ts → peers.d.ts} +0 -0
  7. package/dist/src/peers.d.ts.map +1 -0
  8. package/dist/src/{utils/peers.js → peers.js} +0 -0
  9. package/dist/src/peers.js.map +1 -0
  10. package/package.json +11 -89
  11. package/src/{utils/is-valid-tick.ts → is-valid-tick.ts} +0 -0
  12. package/src/{utils/peers.ts → peers.ts} +0 -0
  13. package/dist/src/connection/connection.d.ts +0 -5
  14. package/dist/src/connection/connection.d.ts.map +0 -1
  15. package/dist/src/connection/connection.js +0 -146
  16. package/dist/src/connection/connection.js.map +0 -1
  17. package/dist/src/connection/index.d.ts +0 -5
  18. package/dist/src/connection/index.d.ts.map +0 -1
  19. package/dist/src/connection/index.js +0 -5
  20. package/dist/src/connection/index.js.map +0 -1
  21. package/dist/src/connection-encrypter/index.d.ts +0 -5
  22. package/dist/src/connection-encrypter/index.d.ts.map +0 -1
  23. package/dist/src/connection-encrypter/index.js +0 -77
  24. package/dist/src/connection-encrypter/index.js.map +0 -1
  25. package/dist/src/connection-encrypter/utils/index.d.ts +0 -3
  26. package/dist/src/connection-encrypter/utils/index.d.ts.map +0 -1
  27. package/dist/src/connection-encrypter/utils/index.js +0 -18
  28. package/dist/src/connection-encrypter/utils/index.js.map +0 -1
  29. package/dist/src/mocks/connection-encrypter.d.ts +0 -3
  30. package/dist/src/mocks/connection-encrypter.d.ts.map +0 -1
  31. package/dist/src/mocks/connection-encrypter.js +0 -93
  32. package/dist/src/mocks/connection-encrypter.js.map +0 -1
  33. package/dist/src/mocks/connection-gater.d.ts +0 -12
  34. package/dist/src/mocks/connection-gater.d.ts.map +0 -1
  35. package/dist/src/mocks/connection-gater.js +0 -14
  36. package/dist/src/mocks/connection-gater.js.map +0 -1
  37. package/dist/src/mocks/connection-manager.d.ts +0 -28
  38. package/dist/src/mocks/connection-manager.d.ts.map +0 -1
  39. package/dist/src/mocks/connection-manager.js +0 -107
  40. package/dist/src/mocks/connection-manager.js.map +0 -1
  41. package/dist/src/mocks/connection.d.ts +0 -18
  42. package/dist/src/mocks/connection.d.ts.map +0 -1
  43. package/dist/src/mocks/connection.js +0 -138
  44. package/dist/src/mocks/connection.js.map +0 -1
  45. package/dist/src/mocks/duplex.d.ts +0 -3
  46. package/dist/src/mocks/duplex.d.ts.map +0 -1
  47. package/dist/src/mocks/duplex.js +0 -7
  48. package/dist/src/mocks/duplex.js.map +0 -1
  49. package/dist/src/mocks/index.d.ts +0 -10
  50. package/dist/src/mocks/index.d.ts.map +0 -1
  51. package/dist/src/mocks/index.js +0 -9
  52. package/dist/src/mocks/index.js.map +0 -1
  53. package/dist/src/mocks/multiaddr-connection.d.ts +0 -17
  54. package/dist/src/mocks/multiaddr-connection.d.ts.map +0 -1
  55. package/dist/src/mocks/multiaddr-connection.js +0 -51
  56. package/dist/src/mocks/multiaddr-connection.js.map +0 -1
  57. package/dist/src/mocks/muxer.d.ts +0 -9
  58. package/dist/src/mocks/muxer.d.ts.map +0 -1
  59. package/dist/src/mocks/muxer.js +0 -302
  60. package/dist/src/mocks/muxer.js.map +0 -1
  61. package/dist/src/mocks/registrar.d.ts +0 -18
  62. package/dist/src/mocks/registrar.d.ts.map +0 -1
  63. package/dist/src/mocks/registrar.js +0 -73
  64. package/dist/src/mocks/registrar.js.map +0 -1
  65. package/dist/src/mocks/upgrader.d.ts +0 -15
  66. package/dist/src/mocks/upgrader.d.ts.map +0 -1
  67. package/dist/src/mocks/upgrader.js +0 -33
  68. package/dist/src/mocks/upgrader.js.map +0 -1
  69. package/dist/src/peer-discovery/index.d.ts +0 -6
  70. package/dist/src/peer-discovery/index.d.ts.map +0 -1
  71. package/dist/src/peer-discovery/index.js +0 -64
  72. package/dist/src/peer-discovery/index.js.map +0 -1
  73. package/dist/src/pubsub/api.d.ts +0 -6
  74. package/dist/src/pubsub/api.d.ts.map +0 -1
  75. package/dist/src/pubsub/api.js +0 -87
  76. package/dist/src/pubsub/api.js.map +0 -1
  77. package/dist/src/pubsub/connection-handlers.d.ts +0 -6
  78. package/dist/src/pubsub/connection-handlers.d.ts.map +0 -1
  79. package/dist/src/pubsub/connection-handlers.js +0 -329
  80. package/dist/src/pubsub/connection-handlers.js.map +0 -1
  81. package/dist/src/pubsub/emit-self.d.ts +0 -6
  82. package/dist/src/pubsub/emit-self.d.ts.map +0 -1
  83. package/dist/src/pubsub/emit-self.js +0 -86
  84. package/dist/src/pubsub/emit-self.js.map +0 -1
  85. package/dist/src/pubsub/index.d.ts +0 -10
  86. package/dist/src/pubsub/index.d.ts.map +0 -1
  87. package/dist/src/pubsub/index.js +0 -17
  88. package/dist/src/pubsub/index.js.map +0 -1
  89. package/dist/src/pubsub/messages.d.ts +0 -6
  90. package/dist/src/pubsub/messages.d.ts.map +0 -1
  91. package/dist/src/pubsub/messages.js +0 -46
  92. package/dist/src/pubsub/messages.js.map +0 -1
  93. package/dist/src/pubsub/multiple-nodes.d.ts +0 -6
  94. package/dist/src/pubsub/multiple-nodes.d.ts.map +0 -1
  95. package/dist/src/pubsub/multiple-nodes.js +0 -350
  96. package/dist/src/pubsub/multiple-nodes.js.map +0 -1
  97. package/dist/src/pubsub/two-nodes.d.ts +0 -6
  98. package/dist/src/pubsub/two-nodes.d.ts.map +0 -1
  99. package/dist/src/pubsub/two-nodes.js +0 -185
  100. package/dist/src/pubsub/two-nodes.js.map +0 -1
  101. package/dist/src/pubsub/utils.d.ts +0 -6
  102. package/dist/src/pubsub/utils.d.ts.map +0 -1
  103. package/dist/src/pubsub/utils.js +0 -22
  104. package/dist/src/pubsub/utils.js.map +0 -1
  105. package/dist/src/record/index.d.ts +0 -5
  106. package/dist/src/record/index.d.ts.map +0 -1
  107. package/dist/src/record/index.js +0 -25
  108. package/dist/src/record/index.js.map +0 -1
  109. package/dist/src/stream-muxer/base-test.d.ts +0 -5
  110. package/dist/src/stream-muxer/base-test.d.ts.map +0 -1
  111. package/dist/src/stream-muxer/base-test.js +0 -147
  112. package/dist/src/stream-muxer/base-test.js.map +0 -1
  113. package/dist/src/stream-muxer/close-test.d.ts +0 -5
  114. package/dist/src/stream-muxer/close-test.d.ts.map +0 -1
  115. package/dist/src/stream-muxer/close-test.js +0 -180
  116. package/dist/src/stream-muxer/close-test.js.map +0 -1
  117. package/dist/src/stream-muxer/index.d.ts +0 -5
  118. package/dist/src/stream-muxer/index.d.ts.map +0 -1
  119. package/dist/src/stream-muxer/index.js +0 -13
  120. package/dist/src/stream-muxer/index.js.map +0 -1
  121. package/dist/src/stream-muxer/mega-stress-test.d.ts +0 -5
  122. package/dist/src/stream-muxer/mega-stress-test.d.ts.map +0 -1
  123. package/dist/src/stream-muxer/mega-stress-test.js +0 -12
  124. package/dist/src/stream-muxer/mega-stress-test.js.map +0 -1
  125. package/dist/src/stream-muxer/spawner.d.ts +0 -4
  126. package/dist/src/stream-muxer/spawner.d.ts.map +0 -1
  127. package/dist/src/stream-muxer/spawner.js +0 -34
  128. package/dist/src/stream-muxer/spawner.js.map +0 -1
  129. package/dist/src/stream-muxer/stress-test.d.ts +0 -5
  130. package/dist/src/stream-muxer/stress-test.d.ts.map +0 -1
  131. package/dist/src/stream-muxer/stress-test.js +0 -26
  132. package/dist/src/stream-muxer/stress-test.js.map +0 -1
  133. package/dist/src/topology/topology.d.ts +0 -5
  134. package/dist/src/topology/topology.d.ts.map +0 -1
  135. package/dist/src/topology/topology.js +0 -20
  136. package/dist/src/topology/topology.js.map +0 -1
  137. package/dist/src/transport/dial-test.d.ts +0 -5
  138. package/dist/src/transport/dial-test.d.ts.map +0 -1
  139. package/dist/src/transport/dial-test.js +0 -97
  140. package/dist/src/transport/dial-test.js.map +0 -1
  141. package/dist/src/transport/filter-test.d.ts +0 -5
  142. package/dist/src/transport/filter-test.d.ts.map +0 -1
  143. package/dist/src/transport/filter-test.js +0 -18
  144. package/dist/src/transport/filter-test.js.map +0 -1
  145. package/dist/src/transport/index.d.ts +0 -15
  146. package/dist/src/transport/index.d.ts.map +0 -1
  147. package/dist/src/transport/index.js +0 -11
  148. package/dist/src/transport/index.js.map +0 -1
  149. package/dist/src/transport/listen-test.d.ts +0 -5
  150. package/dist/src/transport/listen-test.d.ts.map +0 -1
  151. package/dist/src/transport/listen-test.js +0 -152
  152. package/dist/src/transport/listen-test.js.map +0 -1
  153. package/dist/src/utils/is-valid-tick.d.ts.map +0 -1
  154. package/dist/src/utils/is-valid-tick.js.map +0 -1
  155. package/dist/src/utils/peers.d.ts.map +0 -1
  156. package/dist/src/utils/peers.js.map +0 -1
  157. package/src/connection/README.md +0 -256
  158. package/src/connection/connection.ts +0 -176
  159. package/src/connection/index.ts +0 -7
  160. package/src/connection-encrypter/index.ts +0 -104
  161. package/src/connection-encrypter/utils/index.ts +0 -23
  162. package/src/mocks/connection-encrypter.ts +0 -110
  163. package/src/mocks/connection-gater.ts +0 -14
  164. package/src/mocks/connection-manager.ts +0 -141
  165. package/src/mocks/connection.ts +0 -205
  166. package/src/mocks/duplex.ts +0 -8
  167. package/src/mocks/index.ts +0 -10
  168. package/src/mocks/multiaddr-connection.ts +0 -66
  169. package/src/mocks/muxer.ts +0 -424
  170. package/src/mocks/registrar.ts +0 -96
  171. package/src/mocks/upgrader.ts +0 -46
  172. package/src/peer-discovery/index.ts +0 -89
  173. package/src/pubsub/api.ts +0 -115
  174. package/src/pubsub/connection-handlers.ts +0 -413
  175. package/src/pubsub/emit-self.ts +0 -105
  176. package/src/pubsub/index.ts +0 -25
  177. package/src/pubsub/messages.ts +0 -58
  178. package/src/pubsub/multiple-nodes.ts +0 -429
  179. package/src/pubsub/two-nodes.ts +0 -235
  180. package/src/pubsub/utils.ts +0 -28
  181. package/src/record/index.ts +0 -32
  182. package/src/stream-muxer/base-test.ts +0 -190
  183. package/src/stream-muxer/close-test.ts +0 -227
  184. package/src/stream-muxer/index.ts +0 -15
  185. package/src/stream-muxer/mega-stress-test.ts +0 -15
  186. package/src/stream-muxer/spawner.ts +0 -52
  187. package/src/stream-muxer/stress-test.ts +0 -29
  188. package/src/topology/topology.ts +0 -25
  189. package/src/transport/dial-test.ts +0 -123
  190. package/src/transport/filter-test.ts +0 -25
  191. package/src/transport/index.ts +0 -25
  192. package/src/transport/listen-test.ts +0 -191
@@ -1,123 +0,0 @@
1
- import { expect } from 'aegir/chai'
2
- import { isValidTick } from '../utils/is-valid-tick.js'
3
- import { mockUpgrader } from '../mocks/upgrader.js'
4
- import { mockRegistrar } from '../mocks/registrar.js'
5
- import all from 'it-all'
6
- import { pipe } from 'it-pipe'
7
- import { AbortError } from '@libp2p/interfaces/errors'
8
- import sinon from 'sinon'
9
- import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
10
- import drain from 'it-drain'
11
- import type { TestSetup } from '../index.js'
12
- import type { Transport, Listener, Upgrader } from '@libp2p/interfaces/transport'
13
- import type { TransportTestFixtures, Connector } from './index.js'
14
- import type { Multiaddr } from '@multiformats/multiaddr'
15
- import type { Registrar } from '@libp2p/interfaces/registrar'
16
-
17
- export default (common: TestSetup<TransportTestFixtures>) => {
18
- describe('dial', () => {
19
- let upgrader: Upgrader
20
- let registrar: Registrar
21
- let addrs: Multiaddr[]
22
- let transport: Transport
23
- let connector: Connector
24
- let listener: Listener
25
-
26
- before(async () => {
27
- registrar = mockRegistrar()
28
- upgrader = mockUpgrader({
29
- registrar
30
- });
31
-
32
- ({ addrs, transport, connector } = await common.setup())
33
- })
34
-
35
- after(async () => {
36
- await common.teardown()
37
- })
38
-
39
- beforeEach(async () => {
40
- listener = transport.createListener({
41
- upgrader
42
- })
43
- return await listener.listen(addrs[0])
44
- })
45
-
46
- afterEach(async () => {
47
- sinon.restore()
48
- connector.restore()
49
- return await listener.close()
50
- })
51
-
52
- it('simple', async () => {
53
- const protocol = '/hello/1.0.0'
54
- void registrar.handle(protocol, (data) => {
55
- void pipe([
56
- uint8ArrayFromString('hey')
57
- ],
58
- data.stream,
59
- drain
60
- )
61
- })
62
-
63
- const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
64
- const conn = await transport.dial(addrs[0], {
65
- upgrader
66
- })
67
-
68
- const { stream } = await conn.newStream([protocol])
69
- const result = await all(stream.source)
70
-
71
- expect(upgradeSpy.callCount).to.equal(1)
72
- await expect(upgradeSpy.getCall(0).returnValue).to.eventually.equal(conn)
73
- expect(result.length).to.equal(1)
74
- expect(result[0]).to.equalBytes(uint8ArrayFromString('hey'))
75
- await conn.close()
76
- })
77
-
78
- it('can close connections', async () => {
79
- const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
80
- const conn = await transport.dial(addrs[0], {
81
- upgrader
82
- })
83
-
84
- expect(upgradeSpy.callCount).to.equal(1)
85
- await expect(upgradeSpy.getCall(0).returnValue).to.eventually.equal(conn)
86
- await conn.close()
87
- expect(isValidTick(conn.stat.timeline.close)).to.equal(true)
88
- })
89
-
90
- it('to non existent listener', async () => {
91
- const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
92
-
93
- await expect(transport.dial(addrs[1], {
94
- upgrader
95
- })).to.eventually.be.rejected()
96
- expect(upgradeSpy.callCount).to.equal(0)
97
- })
98
-
99
- it('abort before dialing throws AbortError', async () => {
100
- const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
101
- const controller = new AbortController()
102
- controller.abort()
103
- const conn = transport.dial(addrs[0], { signal: controller.signal, upgrader })
104
-
105
- await expect(conn).to.eventually.be.rejected().with.property('code', AbortError.code)
106
- expect(upgradeSpy.callCount).to.equal(0)
107
- })
108
-
109
- it('abort while dialing throws AbortError', async () => {
110
- const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
111
- // Add a delay to connect() so that we can abort while the dial is in
112
- // progress
113
- connector.delay(100)
114
-
115
- const controller = new AbortController()
116
- const conn = transport.dial(addrs[0], { signal: controller.signal, upgrader })
117
- setTimeout(() => controller.abort(), 50)
118
-
119
- await expect(conn).to.eventually.be.rejected().with.property('code', AbortError.code)
120
- expect(upgradeSpy.callCount).to.equal(0)
121
- })
122
- })
123
- }
@@ -1,25 +0,0 @@
1
- import { expect } from 'aegir/chai'
2
- import type { TestSetup } from '../index.js'
3
- import type { Transport } from '@libp2p/interfaces/transport'
4
- import type { TransportTestFixtures } from './index.js'
5
- import type { Multiaddr } from '@multiformats/multiaddr'
6
-
7
- export default (common: TestSetup<TransportTestFixtures>) => {
8
- describe('filter', () => {
9
- let addrs: Multiaddr[]
10
- let transport: Transport
11
-
12
- before(async () => {
13
- ({ addrs, transport } = await common.setup())
14
- })
15
-
16
- after(async () => {
17
- await common.teardown()
18
- })
19
-
20
- it('filters addresses', () => {
21
- const filteredAddrs = transport.filter(addrs)
22
- expect(filteredAddrs).to.eql(addrs)
23
- })
24
- })
25
- }
@@ -1,25 +0,0 @@
1
- import dial from './dial-test.js'
2
- import listen from './listen-test.js'
3
- import filter from './filter-test.js'
4
- import type { TestSetup } from '../index.js'
5
- import type { Transport } from '@libp2p/interfaces/transport'
6
- import type { Multiaddr } from '@multiformats/multiaddr'
7
-
8
- export interface Connector {
9
- delay: (ms: number) => void
10
- restore: () => void
11
- }
12
-
13
- export interface TransportTestFixtures {
14
- addrs: Multiaddr[]
15
- transport: Transport
16
- connector: Connector
17
- }
18
-
19
- export default (common: TestSetup<TransportTestFixtures>) => {
20
- describe('interface-transport', () => {
21
- dial(common)
22
- listen(common)
23
- filter(common)
24
- })
25
- }
@@ -1,191 +0,0 @@
1
- /* eslint max-nested-callbacks: ["error", 8] */
2
- import { expect } from 'aegir/chai'
3
- import sinon from 'sinon'
4
- import pWaitFor from 'p-wait-for'
5
- import { pipe } from 'it-pipe'
6
- import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
7
- import { isValidTick } from '../utils/is-valid-tick.js'
8
- import { mockUpgrader } from '../mocks/upgrader.js'
9
- import defer from 'p-defer'
10
- import { mockRegistrar } from '../mocks/registrar.js'
11
- import drain from 'it-drain'
12
- import { CustomEvent } from '@libp2p/interfaces/events'
13
- import type { TestSetup } from '../index.js'
14
- import type { Transport, Upgrader } from '@libp2p/interfaces/transport'
15
- import type { TransportTestFixtures } from './index.js'
16
- import type { Multiaddr } from '@multiformats/multiaddr'
17
- import type { Connection } from '@libp2p/interfaces/connection'
18
- import type { Registrar } from '@libp2p/interfaces/registrar'
19
-
20
- export default (common: TestSetup<TransportTestFixtures>) => {
21
- describe('listen', () => {
22
- let upgrader: Upgrader
23
- let addrs: Multiaddr[]
24
- let transport: Transport
25
- let registrar: Registrar
26
-
27
- before(async () => {
28
- registrar = mockRegistrar()
29
- upgrader = mockUpgrader({
30
- registrar
31
- });
32
-
33
- ({ transport, addrs } = await common.setup())
34
- })
35
-
36
- after(async () => {
37
- await common.teardown()
38
- })
39
-
40
- afterEach(() => {
41
- sinon.restore()
42
- })
43
-
44
- it('simple', async () => {
45
- const listener = transport.createListener({
46
- upgrader
47
- })
48
- await listener.listen(addrs[0])
49
- await listener.close()
50
- })
51
-
52
- it('close listener with connections, through timeout', async () => {
53
- const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound')
54
- const listenerConns: Connection[] = []
55
-
56
- const protocol = '/test/protocol'
57
- void registrar.handle(protocol, (data) => {
58
- void drain(data.stream.source)
59
- })
60
-
61
- const listener = transport.createListener({
62
- upgrader,
63
- handler: (conn) => {
64
- listenerConns.push(conn)
65
- }
66
- })
67
-
68
- // Listen
69
- await listener.listen(addrs[0])
70
-
71
- // Create two connections to the listener
72
- const [conn1] = await Promise.all([
73
- transport.dial(addrs[0], {
74
- upgrader
75
- }),
76
- transport.dial(addrs[0], {
77
- upgrader
78
- })
79
- ])
80
-
81
- // Give the listener a chance to finish its upgrade
82
- await pWaitFor(() => listenerConns.length === 2)
83
-
84
- const { stream: stream1 } = await conn1.newStream([protocol])
85
-
86
- // Wait for the data send and close to finish
87
- await Promise.all([
88
- pipe(
89
- [uint8ArrayFromString('Some data that is never handled')],
90
- stream1
91
- ),
92
- // Closer the listener (will take a couple of seconds to time out)
93
- listener.close()
94
- ])
95
-
96
- await stream1.close()
97
- await conn1.close()
98
-
99
- expect(isValidTick(conn1.stat.timeline.close)).to.equal(true)
100
- listenerConns.forEach(conn => {
101
- expect(isValidTick(conn.stat.timeline.close)).to.equal(true)
102
- })
103
-
104
- // 2 dials = 2 connections upgraded
105
- expect(upgradeSpy.callCount).to.equal(2)
106
- })
107
-
108
- it('should not handle connection if upgradeInbound throws', async () => {
109
- sinon.stub(upgrader, 'upgradeInbound').throws()
110
-
111
- const listener = transport.createListener({
112
- upgrader
113
- })
114
-
115
- // Listen
116
- await listener.listen(addrs[0])
117
-
118
- // Create a connection to the listener
119
- const conn = await transport.dial(addrs[0], {
120
- upgrader
121
- })
122
-
123
- await pWaitFor(() => typeof conn.stat.timeline.close === 'number')
124
- await listener.close()
125
- })
126
-
127
- describe('events', () => {
128
- it('connection', async () => {
129
- const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound')
130
- const listener = transport.createListener({
131
- upgrader
132
- })
133
- const deferred = defer()
134
- let conn
135
-
136
- listener.addEventListener('connection', (evt) => {
137
- conn = evt.detail
138
- deferred.resolve()
139
- })
140
-
141
- void (async () => {
142
- await listener.listen(addrs[0])
143
- await transport.dial(addrs[0], {
144
- upgrader
145
- })
146
- })()
147
-
148
- await deferred.promise
149
-
150
- await expect(upgradeSpy.getCall(0).returnValue).to.eventually.equal(conn)
151
- expect(upgradeSpy.callCount).to.equal(1)
152
- await listener.close()
153
- })
154
-
155
- it('listening', (done) => {
156
- const listener = transport.createListener({
157
- upgrader
158
- })
159
- listener.addEventListener('listening', () => {
160
- listener.close().then(done, done)
161
- })
162
- void listener.listen(addrs[0])
163
- })
164
-
165
- it('error', (done) => {
166
- const listener = transport.createListener({
167
- upgrader
168
- })
169
- listener.addEventListener('error', (evt) => {
170
- expect(evt.detail).to.be.an.instanceOf(Error)
171
- listener.close().then(done, done)
172
- })
173
- listener.dispatchEvent(new CustomEvent('error', {
174
- detail: new Error('my err')
175
- }))
176
- })
177
-
178
- it('close', (done) => {
179
- const listener = transport.createListener({
180
- upgrader
181
- })
182
- listener.addEventListener('close', () => done())
183
-
184
- void (async () => {
185
- await listener.listen(addrs[0])
186
- await listener.close()
187
- })()
188
- })
189
- })
190
- })
191
- }