@streamr/dht 102.0.0-beta.1 → 102.0.0-beta.3

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 (211) hide show
  1. package/dist/generated/google/protobuf/any.d.ts +180 -0
  2. package/dist/generated/google/protobuf/any.js +155 -0
  3. package/dist/generated/google/protobuf/any.js.map +1 -0
  4. package/dist/generated/google/protobuf/empty.d.ts +31 -0
  5. package/dist/generated/google/protobuf/empty.js +32 -0
  6. package/dist/generated/google/protobuf/empty.js.map +1 -0
  7. package/dist/generated/google/protobuf/timestamp.d.ts +155 -0
  8. package/dist/generated/google/protobuf/timestamp.js +136 -0
  9. package/dist/generated/google/protobuf/timestamp.js.map +1 -0
  10. package/dist/generated/packages/dht/protos/DhtRpc.client.d.ts +361 -0
  11. package/dist/generated/packages/dht/protos/DhtRpc.client.js +285 -0
  12. package/dist/generated/packages/dht/protos/DhtRpc.client.js.map +1 -0
  13. package/dist/generated/packages/dht/protos/DhtRpc.d.ts +999 -0
  14. package/dist/generated/packages/dht/protos/DhtRpc.js +677 -0
  15. package/dist/generated/packages/dht/protos/DhtRpc.js.map +1 -0
  16. package/dist/generated/packages/dht/protos/DhtRpc.server.d.ts +162 -0
  17. package/dist/generated/packages/dht/protos/DhtRpc.server.js +3 -0
  18. package/dist/generated/packages/dht/protos/DhtRpc.server.js.map +1 -0
  19. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.d.ts +87 -0
  20. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js +66 -0
  21. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js.map +1 -0
  22. package/dist/package.json +7 -7
  23. package/package.json +7 -7
  24. package/eslint.config.mjs +0 -12
  25. package/src/connection/Connection.ts +0 -28
  26. package/src/connection/ConnectionLockRpcLocal.ts +0 -78
  27. package/src/connection/ConnectionLockRpcRemote.ts +0 -64
  28. package/src/connection/ConnectionLockStates.ts +0 -131
  29. package/src/connection/ConnectionManager.ts +0 -661
  30. package/src/connection/ConnectionsView.ts +0 -8
  31. package/src/connection/ConnectorFacade.ts +0 -217
  32. package/src/connection/Handshaker.ts +0 -209
  33. package/src/connection/IConnection.ts +0 -40
  34. package/src/connection/ManagedConnection.ts +0 -113
  35. package/src/connection/OutputBuffer.ts +0 -28
  36. package/src/connection/PendingConnection.ts +0 -68
  37. package/src/connection/connectivityChecker.ts +0 -108
  38. package/src/connection/connectivityRequestHandler.ts +0 -116
  39. package/src/connection/simulator/Simulator.ts +0 -369
  40. package/src/connection/simulator/SimulatorConnection.ts +0 -137
  41. package/src/connection/simulator/SimulatorConnector.ts +0 -98
  42. package/src/connection/simulator/SimulatorTransport.ts +0 -15
  43. package/src/connection/simulator/pings.ts +0 -42
  44. package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -242
  45. package/src/connection/webrtc/IWebrtcConnection.ts +0 -24
  46. package/src/connection/webrtc/NodeWebrtcConnection.ts +0 -245
  47. package/src/connection/webrtc/WebrtcConnector.ts +0 -234
  48. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +0 -108
  49. package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +0 -60
  50. package/src/connection/webrtc/iceServerAsString.ts +0 -15
  51. package/src/connection/websocket/AbstractWebsocketClientConnection.ts +0 -122
  52. package/src/connection/websocket/AutoCertifierClientFacade.ts +0 -89
  53. package/src/connection/websocket/BrowserWebsocketClientConnection.ts +0 -44
  54. package/src/connection/websocket/NodeWebsocketClientConnection.ts +0 -39
  55. package/src/connection/websocket/WebsocketClientConnector.ts +0 -119
  56. package/src/connection/websocket/WebsocketClientConnectorRpcLocal.ts +0 -38
  57. package/src/connection/websocket/WebsocketClientConnectorRpcRemote.ts +0 -19
  58. package/src/connection/websocket/WebsocketServer.ts +0 -164
  59. package/src/connection/websocket/WebsocketServerConnection.ts +0 -109
  60. package/src/connection/websocket/WebsocketServerConnector.ts +0 -290
  61. package/src/dht/DhtNode.ts +0 -683
  62. package/src/dht/DhtNodeRpcLocal.ts +0 -84
  63. package/src/dht/DhtNodeRpcRemote.ts +0 -107
  64. package/src/dht/ExternalApiRpcLocal.ts +0 -58
  65. package/src/dht/ExternalApiRpcRemote.ts +0 -41
  66. package/src/dht/PeerManager.ts +0 -305
  67. package/src/dht/contact/Contact.ts +0 -19
  68. package/src/dht/contact/ContactList.ts +0 -43
  69. package/src/dht/contact/RandomContactList.ts +0 -56
  70. package/src/dht/contact/RingContactList.ts +0 -143
  71. package/src/dht/contact/RpcRemote.ts +0 -72
  72. package/src/dht/contact/SortedContactList.ts +0 -173
  73. package/src/dht/contact/getClosestNodes.ts +0 -24
  74. package/src/dht/contact/ringIdentifiers.ts +0 -62
  75. package/src/dht/discovery/DiscoverySession.ts +0 -129
  76. package/src/dht/discovery/PeerDiscovery.ts +0 -244
  77. package/src/dht/discovery/RingDiscoverySession.ts +0 -148
  78. package/src/dht/recursive-operation/RecursiveOperationManager.ts +0 -251
  79. package/src/dht/recursive-operation/RecursiveOperationRpcLocal.ts +0 -34
  80. package/src/dht/recursive-operation/RecursiveOperationRpcRemote.ts +0 -43
  81. package/src/dht/recursive-operation/RecursiveOperationSession.ts +0 -231
  82. package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +0 -35
  83. package/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.ts +0 -30
  84. package/src/dht/routing/DuplicateDetector.ts +0 -34
  85. package/src/dht/routing/Router.ts +0 -246
  86. package/src/dht/routing/RouterRpcLocal.ts +0 -78
  87. package/src/dht/routing/RouterRpcRemote.ts +0 -80
  88. package/src/dht/routing/RoutingSession.ts +0 -243
  89. package/src/dht/routing/RoutingTablesCache.ts +0 -60
  90. package/src/dht/routing/getPreviousPeer.ts +0 -6
  91. package/src/dht/store/LocalDataStore.ts +0 -84
  92. package/src/dht/store/StoreManager.ts +0 -170
  93. package/src/dht/store/StoreRpcLocal.ts +0 -89
  94. package/src/dht/store/StoreRpcRemote.ts +0 -32
  95. package/src/exports.ts +0 -33
  96. package/src/helpers/AddressTools.ts +0 -28
  97. package/src/helpers/Connectivity.ts +0 -19
  98. package/src/helpers/browser/isBrowserEnvironment.ts +0 -1
  99. package/src/helpers/browser/isBrowserEnvironment_override.ts +0 -3
  100. package/src/helpers/createPeerDescriptor.ts +0 -57
  101. package/src/helpers/createPeerDescriptorSignaturePayload.ts +0 -28
  102. package/src/helpers/debugHelpers.ts +0 -9
  103. package/src/helpers/errors.ts +0 -49
  104. package/src/helpers/offering.ts +0 -15
  105. package/src/helpers/protoClasses.ts +0 -57
  106. package/src/helpers/protoToString.ts +0 -21
  107. package/src/helpers/version.ts +0 -32
  108. package/src/identifiers.ts +0 -29
  109. package/src/rpc-protocol/DhtCallContext.ts +0 -14
  110. package/src/rpc-protocol/DhtRpcOptions.ts +0 -10
  111. package/src/transport/ITransport.ts +0 -37
  112. package/src/transport/ListeningRpcCommunicator.ts +0 -32
  113. package/src/transport/RoutingRpcCommunicator.ts +0 -66
  114. package/src/types/ServiceID.ts +0 -1
  115. package/src/types/textencoding.d.ts +0 -6
  116. package/test/benchmark/Find.test.ts +0 -72
  117. package/test/benchmark/KademliaCorrectness.test.ts +0 -114
  118. package/test/benchmark/RingCorrectness.test.ts +0 -157
  119. package/test/benchmark/SortedContactListBenchmark.test.ts +0 -108
  120. package/test/benchmark/WebsocketServerMemoryLeak.test.ts +0 -41
  121. package/test/benchmark/hybrid-network-simulation/RingContactList.test.ts +0 -71
  122. package/test/end-to-end/GeoIpLayer0.test.ts +0 -55
  123. package/test/end-to-end/Layer0-Layer1.test.ts +0 -93
  124. package/test/end-to-end/Layer0.test.ts +0 -76
  125. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +0 -110
  126. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +0 -137
  127. package/test/end-to-end/Layer0Webrtc.test.ts +0 -85
  128. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +0 -82
  129. package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +0 -76
  130. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +0 -52
  131. package/test/end-to-end/WebsocketConnectionRequest.test.ts +0 -69
  132. package/test/end-to-end/memory-leak.test.ts +0 -80
  133. package/test/integration/ConnectionLocking.test.ts +0 -192
  134. package/test/integration/ConnectionManager.test.ts +0 -528
  135. package/test/integration/ConnectivityChecking.test.ts +0 -53
  136. package/test/integration/DhtJoinPeerDiscovery.test.ts +0 -49
  137. package/test/integration/DhtNode.test.ts +0 -66
  138. package/test/integration/DhtNodeExternalAPI.test.ts +0 -48
  139. package/test/integration/DhtNodeRpcRemote.test.ts +0 -66
  140. package/test/integration/DhtRpc.test.ts +0 -121
  141. package/test/integration/Find.test.ts +0 -45
  142. package/test/integration/GeoIpConnectivityChecking.test.ts +0 -72
  143. package/test/integration/Layer1-scale.test.ts +0 -189
  144. package/test/integration/Mock-Layer1-Layer0.test.ts +0 -85
  145. package/test/integration/MultipleEntryPointJoining.test.ts +0 -105
  146. package/test/integration/ReplicateData.test.ts +0 -104
  147. package/test/integration/RouteMessage.test.ts +0 -230
  148. package/test/integration/RouterRpcRemote.test.ts +0 -77
  149. package/test/integration/SimultaneousConnections.test.ts +0 -316
  150. package/test/integration/Store.test.ts +0 -85
  151. package/test/integration/StoreAndDelete.test.ts +0 -77
  152. package/test/integration/StoreOnDhtWithThreeNodes.test.ts +0 -59
  153. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +0 -51
  154. package/test/integration/StoreRpcRemote.test.ts +0 -54
  155. package/test/integration/WebrtcConnectionManagement.test.ts +0 -191
  156. package/test/integration/WebrtcConnectorRpc.test.ts +0 -125
  157. package/test/integration/Websocket.test.ts +0 -65
  158. package/test/integration/WebsocketClientConnectorRpc.test.ts +0 -69
  159. package/test/integration/WebsocketConnectionManagement.test.ts +0 -191
  160. package/test/integration/rpc-connections-over-webrtc.test.ts +0 -123
  161. package/test/kademlia-simulation/data/nodeids.json +0 -13002
  162. package/test/kademlia-simulation/data/orderedneighbors.json +0 -1001
  163. package/test/types/global.d.ts +0 -1
  164. package/test/unit/AddressTools.test.ts +0 -44
  165. package/test/unit/AutoCertifierClientFacade.test.ts +0 -58
  166. package/test/unit/ConnectionManager.test.ts +0 -65
  167. package/test/unit/ConnectivityHelpers.test.ts +0 -61
  168. package/test/unit/DiscoverySession.test.ts +0 -87
  169. package/test/unit/DuplicateDetector.test.ts +0 -31
  170. package/test/unit/Handshaker.test.ts +0 -169
  171. package/test/unit/ListeningRpcCommunicator.test.ts +0 -52
  172. package/test/unit/LocalDataStore.test.ts +0 -108
  173. package/test/unit/ManagedConnection.test.ts +0 -58
  174. package/test/unit/PeerManager.test.ts +0 -93
  175. package/test/unit/PendingConnection.test.ts +0 -57
  176. package/test/unit/ProtobufMessage.test.ts +0 -21
  177. package/test/unit/RandomContactList.test.ts +0 -58
  178. package/test/unit/RecursiveOperationManager.test.ts +0 -161
  179. package/test/unit/RecursiveOperationSession.test.ts +0 -68
  180. package/test/unit/Router.test.ts +0 -137
  181. package/test/unit/RoutingSession.test.ts +0 -86
  182. package/test/unit/SortedContactList.test.ts +0 -115
  183. package/test/unit/StoreManager.test.ts +0 -146
  184. package/test/unit/StoreRpcLocal.test.ts +0 -167
  185. package/test/unit/WebrtcConnection.test.ts +0 -29
  186. package/test/unit/WebrtcConnector.test.ts +0 -56
  187. package/test/unit/WebsocketClientConnector.test.ts +0 -101
  188. package/test/unit/WebsocketServer.test.ts +0 -66
  189. package/test/unit/WebsocketServerConnector.test.ts +0 -102
  190. package/test/unit/connectivityRequestHandler.test.ts +0 -104
  191. package/test/unit/createPeerDescriptor.test.ts +0 -69
  192. package/test/unit/customMatchers.test.ts +0 -34
  193. package/test/unit/getClosestNodes.test.ts +0 -30
  194. package/test/unit/version.test.ts +0 -18
  195. package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +0 -18
  196. package/test/utils/FakeConnectorFacade.ts +0 -41
  197. package/test/utils/FakeRpcCommunicator.ts +0 -23
  198. package/test/utils/FakeTransport.ts +0 -79
  199. package/test/utils/customMatchers.ts +0 -71
  200. package/test/utils/mock/MockConnection.ts +0 -26
  201. package/test/utils/mock/MockConnectionsView.ts +0 -18
  202. package/test/utils/mock/MockRouter.ts +0 -62
  203. package/test/utils/mock/MockRpcCommunicator.ts +0 -7
  204. package/test/utils/mock/MockTransport.ts +0 -26
  205. package/test/utils/mock/mockDataEntry.ts +0 -38
  206. package/test/utils/topology.ts +0 -79
  207. package/test/utils/utils.ts +0 -268
  208. package/tsconfig.browser.json +0 -17
  209. package/tsconfig.jest.json +0 -25
  210. package/tsconfig.json +0 -3
  211. 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, until } 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 until(() => 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
- protocolVersion: 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 until(() => 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
- protocolVersion: 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,34 +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
-
17
- describe('error message', () => {
18
-
19
- it('normal', () => {
20
- const actual = createMockPeerDescriptor()
21
- const expected = createMockPeerDescriptor()
22
- expect(() => {
23
- expect(actual).toEqualPeerDescriptor(expected)
24
- }).toThrow('PeerDescriptor nodeId values don\'t match')
25
- })
26
-
27
- it('inverse', () => {
28
- const peerDescriptor = createMockPeerDescriptor()
29
- expect(() => {
30
- expect(peerDescriptor).not.toEqualPeerDescriptor(peerDescriptor)
31
- }).toThrow('PeerDescriptors are equal')
32
- })
33
- })
34
- })
@@ -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 { isMaybeSupportedProtocolVersion } from '../../src/helpers/version'
2
-
3
- describe('version', () => {
4
-
5
- it('supported', () => {
6
- expect(isMaybeSupportedProtocolVersion('1.0')).toBe(true)
7
- expect(isMaybeSupportedProtocolVersion('1.1')).toBe(true)
8
- expect(isMaybeSupportedProtocolVersion('2.0')).toBe(true)
9
- expect(isMaybeSupportedProtocolVersion('3.5')).toBe(true)
10
- })
11
-
12
- it('not supported', () => {
13
- expect(isMaybeSupportedProtocolVersion('')).toBe(false)
14
- expect(isMaybeSupportedProtocolVersion('100.0.0-testnet-three.3')).toBe(false)
15
- expect(isMaybeSupportedProtocolVersion('0.0')).toBe(false)
16
- expect(isMaybeSupportedProtocolVersion('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
- }