@streamr/dht 102.0.0-beta.0 → 102.0.0-beta.2

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 (264) hide show
  1. package/dist/generated/packages/dht/protos/DhtRpc.d.ts +16 -8
  2. package/dist/generated/packages/dht/protos/DhtRpc.js +7 -5
  3. package/dist/generated/packages/dht/protos/DhtRpc.js.map +1 -1
  4. package/dist/package.json +15 -16
  5. package/dist/src/connection/ConnectionManager.js +18 -8
  6. package/dist/src/connection/ConnectionManager.js.map +1 -1
  7. package/dist/src/connection/Handshaker.d.ts +1 -1
  8. package/dist/src/connection/Handshaker.js +9 -5
  9. package/dist/src/connection/Handshaker.js.map +1 -1
  10. package/dist/src/connection/ManagedConnection.js +17 -7
  11. package/dist/src/connection/ManagedConnection.js.map +1 -1
  12. package/dist/src/connection/connectivityChecker.js +20 -10
  13. package/dist/src/connection/connectivityChecker.js.map +1 -1
  14. package/dist/src/connection/connectivityRequestHandler.js +3 -3
  15. package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
  16. package/dist/src/connection/simulator/Simulator.js +3 -2
  17. package/dist/src/connection/simulator/Simulator.js.map +1 -1
  18. package/dist/src/connection/simulator/pings.d.ts +1 -1
  19. package/dist/src/connection/simulator/pings.js +3 -3
  20. package/dist/src/connection/simulator/pings.js.map +1 -1
  21. package/dist/src/connection/webrtc/NodeWebrtcConnection.js +0 -2
  22. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
  23. package/dist/src/connection/webrtc/WebrtcConnector.js +19 -9
  24. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  25. package/dist/src/connection/webrtc/iceServerAsString.js +1 -2
  26. package/dist/src/connection/webrtc/iceServerAsString.js.map +1 -1
  27. package/dist/src/connection/websocket/AbstractWebsocketClientConnection.d.ts +0 -2
  28. package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.d.ts +0 -1
  29. package/dist/src/connection/websocket/WebsocketServerConnection.d.ts +0 -1
  30. package/dist/src/connection/websocket/WebsocketServerConnector.js +28 -18
  31. package/dist/src/connection/websocket/WebsocketServerConnector.js.map +1 -1
  32. package/dist/src/dht/DhtNode.d.ts +1 -0
  33. package/dist/src/dht/DhtNode.js +3 -2
  34. package/dist/src/dht/DhtNode.js.map +1 -1
  35. package/dist/src/dht/DhtNodeRpcLocal.d.ts +1 -1
  36. package/dist/src/dht/PeerManager.d.ts +2 -1
  37. package/dist/src/dht/PeerManager.js +2 -1
  38. package/dist/src/dht/PeerManager.js.map +1 -1
  39. package/dist/src/dht/contact/SortedContactList.js +1 -1
  40. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  41. package/dist/src/dht/discovery/DiscoverySession.d.ts +0 -1
  42. package/dist/src/dht/discovery/PeerDiscovery.d.ts +0 -1
  43. package/dist/src/dht/discovery/RingDiscoverySession.d.ts +0 -1
  44. package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +2 -2
  45. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  46. package/dist/src/dht/routing/RoutingSession.js +2 -2
  47. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  48. package/dist/src/dht/routing/RoutingTablesCache.d.ts +1 -1
  49. package/dist/src/dht/store/LocalDataStore.js +1 -1
  50. package/dist/src/dht/store/LocalDataStore.js.map +1 -1
  51. package/dist/src/dht/store/StoreManager.d.ts +1 -1
  52. package/dist/src/dht/store/StoreRpcLocal.d.ts +1 -1
  53. package/dist/src/helpers/AddressTools.js +2 -3
  54. package/dist/src/helpers/AddressTools.js.map +1 -1
  55. package/dist/src/helpers/debugHelpers.js +2 -2
  56. package/dist/src/helpers/debugHelpers.js.map +1 -1
  57. package/dist/src/helpers/protoClasses.d.ts +1 -1
  58. package/dist/src/helpers/protoClasses.js.map +1 -1
  59. package/dist/src/helpers/protoToString.js +1 -2
  60. package/dist/src/helpers/protoToString.js.map +1 -1
  61. package/dist/src/helpers/version.d.ts +1 -1
  62. package/dist/src/helpers/version.js +4 -4
  63. package/dist/src/helpers/version.js.map +1 -1
  64. package/eslint.config.mjs +12 -0
  65. package/jest.config.ts +12 -0
  66. package/package.json +15 -16
  67. package/protos/DhtRpc.proto +6 -4
  68. package/.eslintignore +0 -5
  69. package/.eslintrc +0 -3
  70. package/generated/google/protobuf/any.ts +0 -326
  71. package/generated/google/protobuf/empty.ts +0 -81
  72. package/generated/google/protobuf/timestamp.ts +0 -287
  73. package/generated/packages/dht/protos/DhtRpc.client.ts +0 -419
  74. package/generated/packages/dht/protos/DhtRpc.server.ts +0 -165
  75. package/generated/packages/dht/protos/DhtRpc.ts +0 -1266
  76. package/generated/packages/proto-rpc/protos/ProtoRpc.ts +0 -108
  77. package/jest.config.js +0 -5
  78. package/src/connection/Connection.ts +0 -28
  79. package/src/connection/ConnectionLockRpcLocal.ts +0 -78
  80. package/src/connection/ConnectionLockRpcRemote.ts +0 -64
  81. package/src/connection/ConnectionLockStates.ts +0 -131
  82. package/src/connection/ConnectionManager.ts +0 -661
  83. package/src/connection/ConnectionsView.ts +0 -8
  84. package/src/connection/ConnectorFacade.ts +0 -217
  85. package/src/connection/Handshaker.ts +0 -205
  86. package/src/connection/IConnection.ts +0 -40
  87. package/src/connection/ManagedConnection.ts +0 -113
  88. package/src/connection/OutputBuffer.ts +0 -28
  89. package/src/connection/PendingConnection.ts +0 -68
  90. package/src/connection/connectivityChecker.ts +0 -108
  91. package/src/connection/connectivityRequestHandler.ts +0 -116
  92. package/src/connection/simulator/Simulator.ts +0 -368
  93. package/src/connection/simulator/SimulatorConnection.ts +0 -137
  94. package/src/connection/simulator/SimulatorConnector.ts +0 -98
  95. package/src/connection/simulator/SimulatorTransport.ts +0 -15
  96. package/src/connection/simulator/pings.ts +0 -42
  97. package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -242
  98. package/src/connection/webrtc/IWebrtcConnection.ts +0 -24
  99. package/src/connection/webrtc/NodeWebrtcConnection.ts +0 -247
  100. package/src/connection/webrtc/WebrtcConnector.ts +0 -234
  101. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +0 -108
  102. package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +0 -60
  103. package/src/connection/webrtc/iceServerAsString.ts +0 -15
  104. package/src/connection/websocket/AbstractWebsocketClientConnection.ts +0 -122
  105. package/src/connection/websocket/AutoCertifierClientFacade.ts +0 -89
  106. package/src/connection/websocket/BrowserWebsocketClientConnection.ts +0 -44
  107. package/src/connection/websocket/NodeWebsocketClientConnection.ts +0 -39
  108. package/src/connection/websocket/WebsocketClientConnector.ts +0 -119
  109. package/src/connection/websocket/WebsocketClientConnectorRpcLocal.ts +0 -38
  110. package/src/connection/websocket/WebsocketClientConnectorRpcRemote.ts +0 -19
  111. package/src/connection/websocket/WebsocketServer.ts +0 -164
  112. package/src/connection/websocket/WebsocketServerConnection.ts +0 -109
  113. package/src/connection/websocket/WebsocketServerConnector.ts +0 -286
  114. package/src/dht/DhtNode.ts +0 -678
  115. package/src/dht/DhtNodeRpcLocal.ts +0 -84
  116. package/src/dht/DhtNodeRpcRemote.ts +0 -107
  117. package/src/dht/ExternalApiRpcLocal.ts +0 -58
  118. package/src/dht/ExternalApiRpcRemote.ts +0 -41
  119. package/src/dht/PeerManager.ts +0 -303
  120. package/src/dht/contact/Contact.ts +0 -19
  121. package/src/dht/contact/ContactList.ts +0 -43
  122. package/src/dht/contact/RandomContactList.ts +0 -56
  123. package/src/dht/contact/RingContactList.ts +0 -143
  124. package/src/dht/contact/RpcRemote.ts +0 -72
  125. package/src/dht/contact/SortedContactList.ts +0 -173
  126. package/src/dht/contact/getClosestNodes.ts +0 -24
  127. package/src/dht/contact/ringIdentifiers.ts +0 -62
  128. package/src/dht/discovery/DiscoverySession.ts +0 -129
  129. package/src/dht/discovery/PeerDiscovery.ts +0 -244
  130. package/src/dht/discovery/RingDiscoverySession.ts +0 -148
  131. package/src/dht/recursive-operation/RecursiveOperationManager.ts +0 -251
  132. package/src/dht/recursive-operation/RecursiveOperationRpcLocal.ts +0 -34
  133. package/src/dht/recursive-operation/RecursiveOperationRpcRemote.ts +0 -43
  134. package/src/dht/recursive-operation/RecursiveOperationSession.ts +0 -231
  135. package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +0 -35
  136. package/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.ts +0 -30
  137. package/src/dht/routing/DuplicateDetector.ts +0 -34
  138. package/src/dht/routing/Router.ts +0 -246
  139. package/src/dht/routing/RouterRpcLocal.ts +0 -78
  140. package/src/dht/routing/RouterRpcRemote.ts +0 -80
  141. package/src/dht/routing/RoutingSession.ts +0 -243
  142. package/src/dht/routing/RoutingTablesCache.ts +0 -60
  143. package/src/dht/routing/getPreviousPeer.ts +0 -6
  144. package/src/dht/store/LocalDataStore.ts +0 -84
  145. package/src/dht/store/StoreManager.ts +0 -170
  146. package/src/dht/store/StoreRpcLocal.ts +0 -89
  147. package/src/dht/store/StoreRpcRemote.ts +0 -32
  148. package/src/exports.ts +0 -33
  149. package/src/helpers/AddressTools.ts +0 -28
  150. package/src/helpers/Connectivity.ts +0 -19
  151. package/src/helpers/browser/isBrowserEnvironment.ts +0 -1
  152. package/src/helpers/browser/isBrowserEnvironment_override.ts +0 -3
  153. package/src/helpers/createPeerDescriptor.ts +0 -57
  154. package/src/helpers/createPeerDescriptorSignaturePayload.ts +0 -28
  155. package/src/helpers/debugHelpers.ts +0 -9
  156. package/src/helpers/errors.ts +0 -49
  157. package/src/helpers/offering.ts +0 -15
  158. package/src/helpers/protoClasses.ts +0 -57
  159. package/src/helpers/protoToString.ts +0 -21
  160. package/src/helpers/version.ts +0 -32
  161. package/src/identifiers.ts +0 -29
  162. package/src/rpc-protocol/DhtCallContext.ts +0 -14
  163. package/src/rpc-protocol/DhtRpcOptions.ts +0 -10
  164. package/src/transport/ITransport.ts +0 -37
  165. package/src/transport/ListeningRpcCommunicator.ts +0 -32
  166. package/src/transport/RoutingRpcCommunicator.ts +0 -66
  167. package/src/types/ServiceID.ts +0 -1
  168. package/src/types/textencoding.d.ts +0 -6
  169. package/test/benchmark/Find.test.ts +0 -72
  170. package/test/benchmark/KademliaCorrectness.test.ts +0 -114
  171. package/test/benchmark/RingCorrectness.test.ts +0 -157
  172. package/test/benchmark/SortedContactListBenchmark.test.ts +0 -108
  173. package/test/benchmark/WebsocketServerMemoryLeak.test.ts +0 -41
  174. package/test/benchmark/hybrid-network-simulation/RingContactList.test.ts +0 -71
  175. package/test/end-to-end/GeoIpLayer0.test.ts +0 -55
  176. package/test/end-to-end/Layer0-Layer1.test.ts +0 -93
  177. package/test/end-to-end/Layer0.test.ts +0 -76
  178. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +0 -110
  179. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +0 -137
  180. package/test/end-to-end/Layer0Webrtc.test.ts +0 -85
  181. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +0 -82
  182. package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +0 -76
  183. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +0 -52
  184. package/test/end-to-end/WebsocketConnectionRequest.test.ts +0 -69
  185. package/test/end-to-end/memory-leak.test.ts +0 -80
  186. package/test/integration/ConnectionLocking.test.ts +0 -182
  187. package/test/integration/ConnectionManager.test.ts +0 -528
  188. package/test/integration/ConnectivityChecking.test.ts +0 -53
  189. package/test/integration/DhtJoinPeerDiscovery.test.ts +0 -49
  190. package/test/integration/DhtNode.test.ts +0 -66
  191. package/test/integration/DhtNodeExternalAPI.test.ts +0 -48
  192. package/test/integration/DhtNodeRpcRemote.test.ts +0 -66
  193. package/test/integration/DhtRpc.test.ts +0 -121
  194. package/test/integration/Find.test.ts +0 -45
  195. package/test/integration/GeoIpConnectivityChecking.test.ts +0 -72
  196. package/test/integration/Layer1-scale.test.ts +0 -189
  197. package/test/integration/Mock-Layer1-Layer0.test.ts +0 -85
  198. package/test/integration/MultipleEntryPointJoining.test.ts +0 -105
  199. package/test/integration/ReplicateData.test.ts +0 -104
  200. package/test/integration/RouteMessage.test.ts +0 -230
  201. package/test/integration/RouterRpcRemote.test.ts +0 -77
  202. package/test/integration/SimultaneousConnections.test.ts +0 -316
  203. package/test/integration/Store.test.ts +0 -85
  204. package/test/integration/StoreAndDelete.test.ts +0 -77
  205. package/test/integration/StoreOnDhtWithThreeNodes.test.ts +0 -59
  206. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +0 -51
  207. package/test/integration/StoreRpcRemote.test.ts +0 -54
  208. package/test/integration/WebrtcConnectionManagement.test.ts +0 -219
  209. package/test/integration/WebrtcConnectorRpc.test.ts +0 -125
  210. package/test/integration/Websocket.test.ts +0 -65
  211. package/test/integration/WebsocketClientConnectorRpc.test.ts +0 -69
  212. package/test/integration/WebsocketConnectionManagement.test.ts +0 -191
  213. package/test/integration/rpc-connections-over-webrtc.test.ts +0 -158
  214. package/test/kademlia-simulation/data/nodeids.json +0 -13002
  215. package/test/kademlia-simulation/data/orderedneighbors.json +0 -1001
  216. package/test/types/global.d.ts +0 -1
  217. package/test/unit/AddressTools.test.ts +0 -44
  218. package/test/unit/AutoCertifierClientFacade.test.ts +0 -58
  219. package/test/unit/ConnectionManager.test.ts +0 -65
  220. package/test/unit/ConnectivityHelpers.test.ts +0 -61
  221. package/test/unit/DiscoverySession.test.ts +0 -87
  222. package/test/unit/DuplicateDetector.test.ts +0 -31
  223. package/test/unit/Handshaker.test.ts +0 -169
  224. package/test/unit/ListeningRpcCommunicator.test.ts +0 -52
  225. package/test/unit/LocalDataStore.test.ts +0 -108
  226. package/test/unit/ManagedConnection.test.ts +0 -58
  227. package/test/unit/PeerManager.test.ts +0 -93
  228. package/test/unit/PendingConnection.test.ts +0 -57
  229. package/test/unit/ProtobufMessage.test.ts +0 -21
  230. package/test/unit/RandomContactList.test.ts +0 -58
  231. package/test/unit/RecursiveOperationManager.test.ts +0 -161
  232. package/test/unit/RecursiveOperationSession.test.ts +0 -68
  233. package/test/unit/Router.test.ts +0 -137
  234. package/test/unit/RoutingSession.test.ts +0 -79
  235. package/test/unit/SortedContactList.test.ts +0 -115
  236. package/test/unit/StoreManager.test.ts +0 -146
  237. package/test/unit/StoreRpcLocal.test.ts +0 -167
  238. package/test/unit/WebrtcConnection.test.ts +0 -29
  239. package/test/unit/WebrtcConnector.test.ts +0 -56
  240. package/test/unit/WebsocketClientConnector.test.ts +0 -101
  241. package/test/unit/WebsocketServer.test.ts +0 -66
  242. package/test/unit/WebsocketServerConnector.test.ts +0 -102
  243. package/test/unit/connectivityRequestHandler.test.ts +0 -104
  244. package/test/unit/createPeerDescriptor.test.ts +0 -69
  245. package/test/unit/customMatchers.test.ts +0 -16
  246. package/test/unit/getClosestNodes.test.ts +0 -30
  247. package/test/unit/version.test.ts +0 -18
  248. package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +0 -18
  249. package/test/utils/FakeConnectorFacade.ts +0 -41
  250. package/test/utils/FakeRpcCommunicator.ts +0 -23
  251. package/test/utils/FakeTransport.ts +0 -79
  252. package/test/utils/customMatchers.ts +0 -71
  253. package/test/utils/mock/MockConnection.ts +0 -26
  254. package/test/utils/mock/MockConnectionsView.ts +0 -18
  255. package/test/utils/mock/MockRouter.ts +0 -62
  256. package/test/utils/mock/MockRpcCommunicator.ts +0 -7
  257. package/test/utils/mock/MockTransport.ts +0 -26
  258. package/test/utils/mock/mockDataEntry.ts +0 -38
  259. package/test/utils/topology.ts +0 -80
  260. package/test/utils/utils.ts +0 -268
  261. package/tsconfig.browser.json +0 -17
  262. package/tsconfig.jest.json +0 -25
  263. package/tsconfig.json +0 -3
  264. package/tsconfig.node.json +0 -24
@@ -1,101 +0,0 @@
1
- /* eslint-disable max-len */
2
- import { WebsocketClientConnector } from '../../src/connection/websocket/WebsocketClientConnector'
3
- import { NodeType } from '../../generated/packages/dht/protos/DhtRpc'
4
- import { MockConnection } from '../utils/mock/MockConnection'
5
- import { MockRpcCommunicator } from '../utils/mock/MockRpcCommunicator'
6
- import { createMockPeerDescriptor } from '../utils/utils'
7
-
8
- describe('WebsocketClientConnector', () => {
9
-
10
- let connector: WebsocketClientConnector
11
-
12
- beforeEach(() => {
13
- connector = new WebsocketClientConnector({
14
- rpcCommunicator: new MockRpcCommunicator(),
15
- canConnect: () => {}
16
- } as any)
17
- })
18
-
19
- afterEach(() => {
20
- connector.destroy()
21
- })
22
-
23
- describe('isPossibleToFormConnection', () => {
24
-
25
- it('node without server', () => {
26
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS }))
27
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(true)
28
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
29
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
30
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
31
- })
32
-
33
- it('node with TLS server', () => {
34
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: true } }))
35
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(true)
36
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
37
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
38
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
39
- })
40
-
41
- it('node with non-TLS server', () => {
42
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
43
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(true)
44
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
45
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
46
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
47
- })
48
-
49
- it('node with non-TLS server in local network', () => {
50
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '192.168.11.11', port: 11, tls: false } }))
51
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(true)
52
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
53
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
54
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
55
- })
56
-
57
- it('browser', () => {
58
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.BROWSER }))
59
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
60
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
61
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
62
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
63
- })
64
- })
65
-
66
- describe('Connect', () => {
67
-
68
- it('Returns existing connecting connection', () => {
69
- connector.setLocalPeerDescriptor(createMockPeerDescriptor())
70
- const remotePeerDescriptor = createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } })
71
- const firstConnection = connector.connect(remotePeerDescriptor)
72
- const secondConnection = connector.connect(remotePeerDescriptor)
73
- expect(firstConnection).toEqual(secondConnection)
74
- firstConnection.close(false)
75
- })
76
-
77
- it('Disconnected event removes connecting connection', () => {
78
- connector.setLocalPeerDescriptor(createMockPeerDescriptor())
79
- const remotePeerDescriptor = createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } })
80
- const firstConnection = connector.connect(remotePeerDescriptor)
81
- firstConnection.emit('disconnected', false)
82
- const secondConnection = connector.connect(remotePeerDescriptor)
83
- expect(firstConnection).not.toEqual(secondConnection)
84
- firstConnection.close(false)
85
- secondConnection.close(false)
86
- })
87
-
88
- it('Connected event removes connecting connection', () => {
89
- connector.setLocalPeerDescriptor(createMockPeerDescriptor())
90
- const remotePeerDescriptor = createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } })
91
- const firstConnection = connector.connect(remotePeerDescriptor)
92
- firstConnection.onHandshakeCompleted(new MockConnection())
93
- const secondConnection = connector.connect(remotePeerDescriptor)
94
- expect(firstConnection).not.toEqual(secondConnection)
95
- firstConnection.close(false)
96
- secondConnection.close(false)
97
- })
98
-
99
- })
100
-
101
- })
@@ -1,66 +0,0 @@
1
- import { WebsocketServer } from '../../src/connection/websocket/WebsocketServer'
2
-
3
- describe('WebsocketServer', () => {
4
-
5
- it('starts and stops', async () => {
6
- const server = new WebsocketServer({
7
- portRange: { min: 19792, max: 19792 },
8
- enableTls: false
9
- })
10
- const port = await server.start()
11
- expect(port).toEqual(19792)
12
- await server.stop()
13
- })
14
-
15
- it('throws if server is already in use', async () => {
16
- const server1 = new WebsocketServer({
17
- portRange: { min: 19792, max: 19792 },
18
- enableTls: false
19
- })
20
- const port = await server1.start()
21
- expect(port).toEqual(19792)
22
-
23
- const server2 = new WebsocketServer({
24
- portRange: { min: 19792, max: 19792 },
25
- enableTls: false
26
- })
27
- await expect(server2.start())
28
- .rejects
29
- .toThrow()
30
-
31
- await server1.stop()
32
- await server2.stop()
33
- })
34
-
35
- it('Starts server in next port if first one is already in use', async () => {
36
- const server1 = new WebsocketServer({
37
- portRange: { min: 19792, max: 19793 },
38
- enableTls: false
39
- })
40
- const port1 = await server1.start()
41
- expect(port1).toEqual(19792)
42
-
43
- const server2 = new WebsocketServer({
44
- portRange: { min: 19792, max: 19793 },
45
- enableTls: false
46
- })
47
- const port2 = await server2.start()
48
- expect(port2).toEqual(19793)
49
-
50
- await server1.stop()
51
- await server2.stop()
52
- })
53
-
54
- it('throws if too big a port number is given', async () => {
55
- const server = new WebsocketServer({
56
- portRange: { min: 197923233, max: 197923233 },
57
- enableTls: false
58
- })
59
-
60
- await expect(server.start())
61
- .rejects
62
- .toThrow()
63
-
64
- await server.stop()
65
- })
66
- })
@@ -1,102 +0,0 @@
1
- /* eslint-disable max-len */
2
- import { WebsocketServerConnector } from '../../src/connection/websocket/WebsocketServerConnector'
3
- import { NodeType } from '../../generated/packages/dht/protos/DhtRpc'
4
- import { MockConnection } from '../utils/mock/MockConnection'
5
- import { MockRpcCommunicator } from '../utils/mock/MockRpcCommunicator'
6
- import { createMockPeerDescriptor } from '../utils/utils'
7
-
8
- describe('WebsocketServerConnector', () => {
9
-
10
- let connector: WebsocketServerConnector
11
-
12
- beforeEach(() => {
13
- connector = new WebsocketServerConnector({
14
- rpcCommunicator: new MockRpcCommunicator(),
15
- canConnect: () => {}
16
- } as any)
17
- })
18
-
19
- afterEach(() => {
20
- connector.destroy()
21
- })
22
-
23
- describe('isPossibleToFormConnection', () => {
24
-
25
- it('node without server', () => {
26
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS }))
27
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
28
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
29
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
30
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
31
- })
32
-
33
- it('node with TLS server', () => {
34
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: true } }))
35
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
36
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
37
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(true)
38
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(true)
39
- })
40
-
41
- it('node with non-TLS server', () => {
42
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
43
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
44
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
45
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(true)
46
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
47
- })
48
-
49
- it('node with non-TLS server in local network', () => {
50
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '192.168.11.11', port: 11, tls: false } }))
51
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
52
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
53
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(true)
54
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(true)
55
- })
56
-
57
- it('browser', () => {
58
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.BROWSER }))
59
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
60
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
61
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
62
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
63
- })
64
-
65
- })
66
-
67
- describe('Connect', () => {
68
-
69
- it('Returns existing connecting connection', () => {
70
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
71
- const remotePeerDescriptor = createMockPeerDescriptor()
72
- const firstConnection = connector.connect(remotePeerDescriptor)
73
- const secondConnection = connector.connect(remotePeerDescriptor)
74
- expect(firstConnection).toEqual(secondConnection)
75
- firstConnection.close(false)
76
- })
77
-
78
- it('Disconnected event removes connecting connection', () => {
79
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
80
- const remotePeerDescriptor = createMockPeerDescriptor()
81
- const firstConnection = connector.connect(remotePeerDescriptor)
82
- firstConnection.emit('disconnected', false)
83
- const secondConnection = connector.connect(remotePeerDescriptor)
84
- expect(firstConnection).not.toEqual(secondConnection)
85
- firstConnection.close(false)
86
- secondConnection.close(false)
87
- })
88
-
89
- it('Connected event removes connecting connection', () => {
90
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
91
- const remotePeerDescriptor = createMockPeerDescriptor()
92
- const firstConnection = connector.connect(remotePeerDescriptor)
93
- firstConnection.onHandshakeCompleted(new MockConnection())
94
- const secondConnection = connector.connect(remotePeerDescriptor)
95
- expect(firstConnection).not.toEqual(secondConnection)
96
- firstConnection.close(false)
97
- secondConnection.close(false)
98
- })
99
-
100
- })
101
-
102
- })
@@ -1,104 +0,0 @@
1
- import { ipv4ToNumber, waitForCondition } from '@streamr/utils'
2
- import { EventEmitter } from 'eventemitter3'
3
- import { once } from 'events'
4
- import { Server as HttpServer, createServer as createHttpServer } from 'http'
5
- import { server as WsServer } from 'websocket'
6
- import { CONNECTIVITY_CHECKER_SERVICE_ID } from '../../src/connection/connectivityChecker'
7
- import { attachConnectivityRequestHandler } from '../../src/connection/connectivityRequestHandler'
8
- import { Message } from '../../generated/packages/dht/protos/DhtRpc'
9
- import { LOCAL_PROTOCOL_VERSION } from '../../src/helpers/version'
10
-
11
- const HOST = '127.0.0.1'
12
- const PORT = 15001
13
-
14
- describe('connectivityRequestHandler', () => {
15
-
16
- let httpServer: HttpServer
17
- let wsServer: WsServer
18
- let connection: any
19
-
20
- beforeEach(async () => {
21
- httpServer = createHttpServer()
22
- wsServer = new WsServer({
23
- httpServer,
24
- autoAcceptConnections: true
25
- })
26
- httpServer.listen(PORT)
27
- await once(httpServer, 'listening')
28
- connection = new EventEmitter()
29
- connection.send = jest.fn()
30
- connection.getRemoteIpAddress = () => HOST
31
- })
32
-
33
- afterEach(async () => {
34
- wsServer.shutDown()
35
- httpServer.close()
36
- await once(httpServer, 'close')
37
- })
38
-
39
- it('happy path', async () => {
40
- attachConnectivityRequestHandler(connection)
41
- const request: Message = {
42
- serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
43
- messageId: 'mock-message-id',
44
- body: {
45
- oneofKind: 'connectivityRequest',
46
- connectivityRequest: { port: PORT, host: HOST, tls: false, allowSelfSignedCertificate: false }
47
- }
48
- }
49
- connection.emit('data', Message.toBinary(request))
50
-
51
- await waitForCondition(() => connection.send.mock.calls.length > 0)
52
-
53
- const receivedMessage = Message.fromBinary(connection.send.mock.calls[0][0])
54
- expect(receivedMessage).toEqual({
55
- body: {
56
- connectivityResponse: {
57
- host: HOST,
58
- natType: 'open_internet',
59
- websocket: {
60
- host: HOST,
61
- port: PORT,
62
- tls: false
63
- },
64
- ipAddress: ipv4ToNumber(HOST),
65
- version: LOCAL_PROTOCOL_VERSION
66
- },
67
- oneofKind: 'connectivityResponse'
68
- },
69
- messageId: expect.any(String),
70
- serviceId: 'system/connectivity-checker'
71
- })
72
- })
73
-
74
- it('disabled connectivity probing', async () => {
75
- attachConnectivityRequestHandler(connection)
76
- const request: Message = {
77
- serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
78
- messageId: 'mock-message-id',
79
- body: {
80
- oneofKind: 'connectivityRequest',
81
- connectivityRequest: { port: 0, host: HOST, tls: false, allowSelfSignedCertificate: false }
82
- }
83
- }
84
- connection.emit('data', Message.toBinary(request))
85
-
86
- await waitForCondition(() => connection.send.mock.calls.length > 0)
87
-
88
- const receivedMessage = Message.fromBinary(connection.send.mock.calls[0][0])
89
- expect(receivedMessage).toEqual({
90
- body: {
91
- connectivityResponse: {
92
- host: HOST,
93
- natType: 'unknown',
94
- ipAddress: ipv4ToNumber(HOST),
95
- version: LOCAL_PROTOCOL_VERSION
96
- },
97
- oneofKind: 'connectivityResponse'
98
- },
99
- messageId: expect.any(String),
100
- serviceId: 'system/connectivity-checker'
101
- })
102
- })
103
-
104
- })
@@ -1,69 +0,0 @@
1
- import { ipv4ToNumber } from '@streamr/utils'
2
- import { createPeerDescriptor } from '../../src/helpers/createPeerDescriptor'
3
- import { isBrowserEnvironment } from '../../src/helpers/browser/isBrowserEnvironment'
4
- import { NodeType } from '../../generated/packages/dht/protos/DhtRpc'
5
- import { randomDhtAddress, toDhtAddressRaw } from '../../src/identifiers'
6
- import { getRandomRegion } from '../../dist/src/connection/simulator/pings'
7
-
8
- const IP_ADDRESS = '1.2.3.4'
9
-
10
- describe('createPeerDescriptor', () => {
11
-
12
- const region = getRandomRegion()
13
-
14
- it('without websocket', () => {
15
- const connectivityResponse = {
16
- ipAddress: ipv4ToNumber(IP_ADDRESS)
17
- } as any
18
- const peerDescriptor = createPeerDescriptor(connectivityResponse, region)
19
- expect(peerDescriptor).toEqual({
20
- nodeId: expect.any(Uint8Array),
21
- type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
22
- ipAddress: ipv4ToNumber(IP_ADDRESS),
23
- publicKey: expect.any(Uint8Array),
24
- signature: expect.any(Uint8Array),
25
- region
26
- })
27
- })
28
-
29
- it('with websocket', () => {
30
- const connectivityResponse = {
31
- ipAddress: ipv4ToNumber(IP_ADDRESS),
32
- websocket: {
33
- host: 'bar.com',
34
- port: 123,
35
- tls: true
36
- }
37
- } as any
38
- const peerDescriptor = createPeerDescriptor(connectivityResponse, region)
39
- expect(peerDescriptor).toEqual({
40
- nodeId: expect.any(Uint8Array),
41
- type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
42
- ipAddress: ipv4ToNumber(IP_ADDRESS),
43
- publicKey: expect.any(Uint8Array),
44
- signature: expect.any(Uint8Array),
45
- websocket: {
46
- host: 'bar.com',
47
- port: 123,
48
- tls: true
49
- },
50
- region
51
- })
52
- })
53
-
54
- it('explicit nodeId', () => {
55
- const nodeId = randomDhtAddress()
56
- const connectivityResponse = {
57
- ipAddress: ipv4ToNumber(IP_ADDRESS)
58
- } as any
59
- const peerDescriptor = createPeerDescriptor(connectivityResponse, region, nodeId)
60
- expect(peerDescriptor).toEqual({
61
- nodeId: toDhtAddressRaw(nodeId),
62
- type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
63
- ipAddress: ipv4ToNumber(IP_ADDRESS),
64
- publicKey: expect.any(Uint8Array),
65
- signature: expect.any(Uint8Array),
66
- region
67
- })
68
- })
69
- })
@@ -1,16 +0,0 @@
1
- import { cloneDeep } from 'lodash'
2
- import { createMockPeerDescriptor } from '../utils/utils'
3
-
4
- describe('custom matchers', () => {
5
-
6
- it('happy path', () => {
7
- const peerDescriptor = createMockPeerDescriptor({
8
- websocket: { port: 1, host: 'x', tls: true }
9
- })
10
- expect(peerDescriptor).toEqualPeerDescriptor(cloneDeep(peerDescriptor))
11
- })
12
-
13
- it('no match', () => {
14
- expect(createMockPeerDescriptor()).not.toEqualPeerDescriptor(createMockPeerDescriptor())
15
- })
16
- })
@@ -1,30 +0,0 @@
1
- import { range, sampleSize, sortBy } from 'lodash'
2
- import { getDistance } from '../../src/dht/PeerManager'
3
- import { getClosestNodes } from '../../src/dht/contact/getClosestNodes'
4
- import { DhtAddress, randomDhtAddress, toNodeId, toDhtAddressRaw } from '../../src/identifiers'
5
- import { createMockPeerDescriptor } from '../utils/utils'
6
- import { PeerDescriptor } from '../../src/exports'
7
-
8
- describe('getClosestNodes', () => {
9
-
10
- it('happy path', () => {
11
- const peerDescriptors = range(10).map(() => createMockPeerDescriptor())
12
- const referenceId = randomDhtAddress()
13
- const excluded = new Set<DhtAddress>(sampleSize(peerDescriptors.map((n) => toNodeId(n), 2)))
14
-
15
- const actual = getClosestNodes(
16
- referenceId,
17
- peerDescriptors,
18
- {
19
- maxCount: 5,
20
- excludedNodeIds: excluded
21
- }
22
- )
23
-
24
- const expected = sortBy(
25
- peerDescriptors.filter((n) => !excluded.has(toNodeId(n))),
26
- (peerDescriptor: PeerDescriptor) => getDistance(peerDescriptor.nodeId, toDhtAddressRaw(referenceId))
27
- ).slice(0, 5)
28
- expect(actual).toEqual(expected)
29
- })
30
- })
@@ -1,18 +0,0 @@
1
- import { isMaybeSupportedVersion } from '../../src/helpers/version'
2
-
3
- describe('version', () => {
4
-
5
- it('supported', () => {
6
- expect(isMaybeSupportedVersion('1.0')).toBe(true)
7
- expect(isMaybeSupportedVersion('1.1')).toBe(true)
8
- expect(isMaybeSupportedVersion('2.0')).toBe(true)
9
- expect(isMaybeSupportedVersion('3.5')).toBe(true)
10
- })
11
-
12
- it('not supported', () => {
13
- expect(isMaybeSupportedVersion('')).toBe(false)
14
- expect(isMaybeSupportedVersion('100.0.0-testnet-three.3')).toBe(false)
15
- expect(isMaybeSupportedVersion('0.0')).toBe(false)
16
- expect(isMaybeSupportedVersion('0.1')).toBe(false)
17
- })
18
- })
@@ -1,18 +0,0 @@
1
- import { replaceInternalIpWithExternalIp } from '../../src/connection/webrtc/WebrtcConnector'
2
-
3
- describe('replaceIpIfCandidateTypeIsHost', () => {
4
-
5
- const hostCandidate = 'candidate:1 1 UDP 2013266431 127.0.0.1 30000 typ host'
6
- const srflxCandidate = 'candidate:1 1 UDP 2013266431 127.0.0.1 30000 typ srflx'
7
-
8
- it('replaces ip if candidate type is host', () => {
9
- const replaced = replaceInternalIpWithExternalIp(hostCandidate, '0.0.0.0')
10
- expect(replaced).toEqual('candidate:1 1 UDP 2013266431 0.0.0.0 30000 typ host')
11
- })
12
-
13
- it('does not replace candidate if type is not host', () => {
14
- const replaced = replaceInternalIpWithExternalIp(srflxCandidate, '0.0.0.0')
15
- expect(replaced).toEqual(srflxCandidate)
16
- })
17
-
18
- })
@@ -1,41 +0,0 @@
1
- import { PendingConnection } from '../../src/connection/PendingConnection'
2
- import { DhtAddress } from '../../src/identifiers'
3
- import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc'
4
- import { ITransport } from '../../src/transport/ITransport'
5
-
6
- export class FakeConnectorFacade {
7
-
8
- private readonly localPeerDescriptor: PeerDescriptor
9
- private onNewConnection?: (connection: PendingConnection) => boolean
10
-
11
- constructor(localPeerDescriptor: PeerDescriptor) {
12
- this.localPeerDescriptor = localPeerDescriptor
13
- }
14
-
15
- // eslint-disable-next-line class-methods-use-this
16
- createConnection(peerDescriptor: PeerDescriptor): PendingConnection {
17
- return new PendingConnection(peerDescriptor)
18
- }
19
-
20
- getLocalPeerDescriptor(): PeerDescriptor | undefined {
21
- return this.localPeerDescriptor
22
- }
23
-
24
- callOnNewConnection(connection: PendingConnection): boolean {
25
- return this.onNewConnection!(connection)
26
- }
27
-
28
- async start(
29
- onNewConnection: (connection: PendingConnection) => boolean,
30
- _hasConnection: (nodeId: DhtAddress) => boolean,
31
- _autoCertifierTransport: ITransport
32
- ): Promise<void> {
33
- this.onNewConnection = onNewConnection
34
- }
35
-
36
- // eslint-disable-next-line class-methods-use-this
37
- async stop(): Promise<void> {
38
-
39
- }
40
- }
41
-
@@ -1,23 +0,0 @@
1
- export class FakeRpcCommunicator {
2
-
3
- private readonly listeners: Map<string, (...args: any[]) => Promise<unknown>> = new Map()
4
-
5
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
6
- registerRpcMethod(_requestClass: any, _returnClass: any, methodName: string, callback: (...args: any[]) => Promise<unknown>): void {
7
- this.listeners.set(methodName, callback)
8
- }
9
-
10
- async callRpcMethod(methodName: string, ...args: any[]): Promise<unknown> {
11
- const listener = this.listeners.get(methodName)
12
- if (listener !== undefined) {
13
- return listener(...args)
14
- } else {
15
- throw new Error(`no registered callbacks for ${methodName}`)
16
- }
17
- }
18
-
19
- // eslint-disable-next-line class-methods-use-this
20
- getRpcClientTransport(): any {
21
- return {}
22
- }
23
- }