trac-msb 0.2.18 → 0.2.19

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 (381) hide show
  1. package/README.md +62 -2
  2. package/SECURITY.md +9 -6
  3. package/cli/commandHandler.js +272 -0
  4. package/cli/handlers.js +210 -0
  5. package/cli/interactive.js +182 -0
  6. package/msb.mjs +7 -8
  7. package/package.json +25 -8
  8. package/rpc/create_server.js +44 -44
  9. package/rpc/handlers.js +43 -56
  10. package/rpc/routes/index.js +8 -8
  11. package/rpc/rpc_server.js +6 -2
  12. package/rpc/utils/helpers.js +46 -66
  13. package/scripts/pear-runner.js +170 -0
  14. package/src/config/args.js +60 -13
  15. package/src/config/config.js +138 -10
  16. package/src/config/env.js +36 -18
  17. package/src/core/network/Network.js +52 -24
  18. package/src/core/network/protocols/ProtocolInterface.js +5 -5
  19. package/src/core/network/protocols/connectionPolicies.js +86 -0
  20. package/src/core/network/protocols/legacy/NetworkMessageRouter.js +1 -1
  21. package/src/core/network/protocols/legacy/handlers/BaseStateOperationHandler.js +2 -2
  22. package/src/core/network/protocols/legacy/handlers/LegacyGetRequestHandler.js +3 -3
  23. package/src/core/network/protocols/legacy/handlers/LegacyRoleOperationHandler.js +1 -1
  24. package/src/core/network/protocols/legacy/handlers/LegacySubnetworkOperationHandler.js +1 -1
  25. package/src/core/network/protocols/legacy/handlers/LegacyTransferOperationHandler.js +1 -1
  26. package/src/core/network/protocols/legacy/validators/base/BaseResponse.js +7 -10
  27. package/src/core/network/protocols/shared/validators/PartialBootstrapDeploymentValidator.js +2 -2
  28. package/src/core/network/protocols/shared/validators/PartialOperationValidator.js +23 -23
  29. package/src/core/network/protocols/shared/validators/PartialRoleAccessValidator.js +14 -14
  30. package/src/core/network/protocols/shared/validators/PartialTransactionValidator.js +5 -5
  31. package/src/core/network/protocols/shared/validators/PartialTransferValidator.js +12 -11
  32. package/src/core/network/protocols/v1/V1ProtocolError.js +5 -69
  33. package/src/core/network/protocols/v1/handlers/V1BaseOperationHandler.js +3 -2
  34. package/src/core/network/protocols/v1/handlers/V1BroadcastTransactionOperationHandler.js +130 -247
  35. package/src/core/network/protocols/v1/handlers/V1LivenessOperationHandler.js +6 -5
  36. package/src/core/network/protocols/v1/handlers/broadcastTransaction/BroadcastTransactionErrorMapper.js +84 -0
  37. package/src/core/network/protocols/v1/handlers/broadcastTransaction/BroadcastTransactionOperationStrategies.js +128 -0
  38. package/src/core/network/protocols/v1/handlers/broadcastTransaction/BroadcastTransactionPayloadUtils.js +26 -0
  39. package/src/core/network/protocols/v1/validators/V1BaseOperation.js +32 -31
  40. package/src/core/network/protocols/v1/validators/V1BroadcastTransactionRequest.js +5 -3
  41. package/src/core/network/protocols/v1/validators/V1BroadcastTransactionResponse.js +34 -50
  42. package/src/core/network/protocols/v1/validators/V1ValidationSchema.js +1 -1
  43. package/src/core/network/services/ConnectionManager.js +11 -10
  44. package/src/core/network/services/MessageOrchestrator.js +53 -17
  45. package/src/core/network/services/PendingRequestService.js +22 -19
  46. package/src/core/network/services/TransactionCommitService.js +36 -36
  47. package/src/core/network/services/TransactionPoolService.js +39 -39
  48. package/src/core/network/services/TransactionRateLimiterService.js +8 -4
  49. package/src/core/network/services/ValidatorObserverService.js +397 -110
  50. package/src/core/state/State.js +190 -138
  51. package/src/core/state/utils/address.js +4 -9
  52. package/src/core/state/utils/balance.js +7 -7
  53. package/src/core/state/utils/roles.js +1 -1
  54. package/src/index.js +316 -275
  55. package/src/messages/network/v1/NetworkMessageBuilder.js +12 -21
  56. package/src/messages/network/v1/networkMessageFactory.js +1 -1
  57. package/src/messages/state/ApplyStateMessageBuilder.js +6 -6
  58. package/src/messages/state/applyStateMessageFactory.js +1 -1
  59. package/src/utils/buffer.js +1 -1
  60. package/src/utils/check.js +12 -13
  61. package/src/utils/constants.js +7 -0
  62. package/src/utils/errors.js +20 -0
  63. package/src/utils/fileUtils.js +12 -3
  64. package/src/utils/helpers.js +2 -2
  65. package/src/utils/migrationUtils.js +3 -3
  66. package/.dockerignore +0 -16
  67. package/CODE_OF_CONDUCT.md +0 -128
  68. package/docker-compose.yml +0 -17
  69. package/dockerfile +0 -41
  70. package/docs/fee_distribution.md +0 -89
  71. package/docs/trac_network_http_api.openapi.yaml +0 -889
  72. package/migration/.gitkeep +0 -0
  73. package/proto/applyOperations.proto +0 -117
  74. package/proto/network/v1/enums/message_type.proto +0 -16
  75. package/proto/network/v1/enums/result_code.proto +0 -84
  76. package/proto/network/v1/messages/broadcast_transaction_request.proto +0 -9
  77. package/proto/network/v1/messages/broadcast_transaction_response.proto +0 -13
  78. package/proto/network/v1/messages/liveness_request.proto +0 -8
  79. package/proto/network/v1/messages/liveness_response.proto +0 -11
  80. package/proto/network/v1/network_message.proto +0 -22
  81. package/rpc/rpc_services.js +0 -181
  82. package/scripts/generate-protobufs.js +0 -67
  83. package/src/core/network/identity/NetworkWalletFactory.js +0 -77
  84. package/src/core/network/protocols/shared/errors/SharedValidatorRejectionError.js +0 -27
  85. package/src/utils/cli.js +0 -130
  86. package/src/utils/cliCommands.js +0 -280
  87. package/tests/acceptance/v1/account/account.test.mjs +0 -129
  88. package/tests/acceptance/v1/balance/balance.test.mjs +0 -54
  89. package/tests/acceptance/v1/broadcast-transaction/broadcast-transaction.test.mjs +0 -116
  90. package/tests/acceptance/v1/confirmed-length/confirmed-length.test.mjs +0 -19
  91. package/tests/acceptance/v1/fee/fee.test.mjs +0 -11
  92. package/tests/acceptance/v1/health/health.test.mjs +0 -33
  93. package/tests/acceptance/v1/rpc.test.mjs +0 -95
  94. package/tests/acceptance/v1/tx/tx.test.mjs +0 -133
  95. package/tests/acceptance/v1/tx-details/tx-details.test.mjs +0 -241
  96. package/tests/acceptance/v1/tx-hashes/tx-hashes.test.mjs +0 -72
  97. package/tests/acceptance/v1/tx-payloads-bulk/tx-payloads-bulk.test.mjs +0 -27
  98. package/tests/acceptance/v1/txv/txv.test.mjs +0 -11
  99. package/tests/acceptance/v1/unconfirmed-length/unconfirmed-length.test.mjs +0 -11
  100. package/tests/fixtures/apply.fixtures.js +0 -77
  101. package/tests/fixtures/assembleMessage.fixtures.js +0 -41
  102. package/tests/fixtures/check.fixtures.js +0 -428
  103. package/tests/fixtures/networkV1.fixtures.js +0 -59
  104. package/tests/fixtures/protobuf.fixtures.js +0 -388
  105. package/tests/helpers/StateNetworkFactory.js +0 -155
  106. package/tests/helpers/address.js +0 -6
  107. package/tests/helpers/autobaseTestHelpers.js +0 -419
  108. package/tests/helpers/config.js +0 -4
  109. package/tests/helpers/createTestSignature.js +0 -13
  110. package/tests/helpers/regexHelper.js +0 -3
  111. package/tests/helpers/setupApplyTests.js +0 -587
  112. package/tests/helpers/transactionPayloads.mjs +0 -92
  113. package/tests/helpers/wrapper.js +0 -28
  114. package/tests/unit/messages/messages.test.js +0 -12
  115. package/tests/unit/messages/network/NetworkMessageBuilder.test.js +0 -436
  116. package/tests/unit/messages/network/NetworkMessageDirector.test.js +0 -347
  117. package/tests/unit/messages/state/applyStateMessageBuilder.complete.test.js +0 -525
  118. package/tests/unit/messages/state/applyStateMessageBuilder.partial.test.js +0 -237
  119. package/tests/unit/network/LegacyNetworkMessageRouter.test.js +0 -54
  120. package/tests/unit/network/NetworkWalletFactory.test.js +0 -156
  121. package/tests/unit/network/ProtocolSession.test.js +0 -127
  122. package/tests/unit/network/networkModule.test.js +0 -13
  123. package/tests/unit/network/services/ConnectionManager.test.js +0 -450
  124. package/tests/unit/network/services/MessageOrchestrator.test.js +0 -445
  125. package/tests/unit/network/services/PendingRequestService.test.js +0 -431
  126. package/tests/unit/network/services/TransactionCommitService.test.js +0 -246
  127. package/tests/unit/network/services/TransactionPoolService.test.js +0 -489
  128. package/tests/unit/network/services/TransactionRateLimiterService.test.js +0 -139
  129. package/tests/unit/network/services/ValidatorHealthCheckService.test.js +0 -115
  130. package/tests/unit/network/services/services.test.js +0 -17
  131. package/tests/unit/network/utils/v1TestUtils.js +0 -153
  132. package/tests/unit/network/v1/NetworkMessageRouterV1.test.js +0 -151
  133. package/tests/unit/network/v1/V1BaseOperation.test.js +0 -356
  134. package/tests/unit/network/v1/V1BroadcastTransactionOperationHandler.test.js +0 -129
  135. package/tests/unit/network/v1/V1BroadcastTransactionRequest.test.js +0 -53
  136. package/tests/unit/network/v1/V1BroadcastTransactionResponse.test.js +0 -512
  137. package/tests/unit/network/v1/V1LivenessRequest.test.js +0 -32
  138. package/tests/unit/network/v1/V1LivenessResponse.test.js +0 -45
  139. package/tests/unit/network/v1/V1ResultCode.test.js +0 -84
  140. package/tests/unit/network/v1/V1ValidationSchema.test.js +0 -13
  141. package/tests/unit/network/v1/connectionPolicies.test.js +0 -49
  142. package/tests/unit/network/v1/handlers/V1BaseOperationHandler.test.js +0 -284
  143. package/tests/unit/network/v1/handlers/V1BroadcastTransactionOperationHandler.test.js +0 -794
  144. package/tests/unit/network/v1/handlers/V1LivenessOperationHandler.test.js +0 -193
  145. package/tests/unit/network/v1/v1.handlers.test.js +0 -15
  146. package/tests/unit/network/v1/v1.test.js +0 -19
  147. package/tests/unit/network/v1/v1ValidationSchema/broadcastTransactionRequest.test.js +0 -119
  148. package/tests/unit/network/v1/v1ValidationSchema/broadcastTransactionResponse.test.js +0 -136
  149. package/tests/unit/network/v1/v1ValidationSchema/common.test.js +0 -308
  150. package/tests/unit/network/v1/v1ValidationSchema/livenessRequest.test.js +0 -90
  151. package/tests/unit/network/v1/v1ValidationSchema/livenessResponse.test.js +0 -133
  152. package/tests/unit/state/State.test.js +0 -80
  153. package/tests/unit/state/apply/addAdmin/addAdminHappyPathScenario.js +0 -42
  154. package/tests/unit/state/apply/addAdmin/addAdminScenarioHelpers.js +0 -276
  155. package/tests/unit/state/apply/addAdmin/adminEntryEncodingFailureScenario.js +0 -30
  156. package/tests/unit/state/apply/addAdmin/adminEntryExistsScenario.js +0 -78
  157. package/tests/unit/state/apply/addAdmin/nodeEntryInitializationFailureScenario.js +0 -30
  158. package/tests/unit/state/apply/addAdmin/nonBootstrapNodeScenario.js +0 -68
  159. package/tests/unit/state/apply/addAdmin/state.apply.addAdmin.test.js +0 -159
  160. package/tests/unit/state/apply/addIndexer/addIndexerHappyPathScenario.js +0 -39
  161. package/tests/unit/state/apply/addIndexer/addIndexerMultipleIndexersInTheNetworkScenario.js +0 -167
  162. package/tests/unit/state/apply/addIndexer/addIndexerPretenderAlreadyIndexerScenario.js +0 -21
  163. package/tests/unit/state/apply/addIndexer/addIndexerPretenderNotWriterScenario.js +0 -21
  164. package/tests/unit/state/apply/addIndexer/addIndexerRemoveAndReAddScenario.js +0 -186
  165. package/tests/unit/state/apply/addIndexer/addIndexerScenarioHelpers.js +0 -443
  166. package/tests/unit/state/apply/addIndexer/addIndexerWriterKeyAlreadyRegisteredScenario.js +0 -32
  167. package/tests/unit/state/apply/addIndexer/state.apply.addIndexer.test.js +0 -297
  168. package/tests/unit/state/apply/addWriter/addWriterHappyPathScenario.js +0 -41
  169. package/tests/unit/state/apply/addWriter/addWriterInvalidValidatorSignatureScenario.js +0 -32
  170. package/tests/unit/state/apply/addWriter/addWriterNewWkScenario.js +0 -149
  171. package/tests/unit/state/apply/addWriter/addWriterRequesterAlreadyWriterScenario.js +0 -21
  172. package/tests/unit/state/apply/addWriter/addWriterRequesterBalanceInsufficientScenario.js +0 -21
  173. package/tests/unit/state/apply/addWriter/addWriterRequesterEntryDecodeFailureScenario.js +0 -19
  174. package/tests/unit/state/apply/addWriter/addWriterRequesterEntryMissingScenario.js +0 -19
  175. package/tests/unit/state/apply/addWriter/addWriterRequesterIndexerScenario.js +0 -21
  176. package/tests/unit/state/apply/addWriter/addWriterRequesterNotWhitelistedScenario.js +0 -21
  177. package/tests/unit/state/apply/addWriter/addWriterScenarioHelpers.js +0 -766
  178. package/tests/unit/state/apply/addWriter/addWriterStakeBalanceUpdateFailureScenario.js +0 -50
  179. package/tests/unit/state/apply/addWriter/addWriterStakeInsufficientBalanceScenario.js +0 -29
  180. package/tests/unit/state/apply/addWriter/addWriterStakeInvalidBalanceScenario.js +0 -29
  181. package/tests/unit/state/apply/addWriter/addWriterStakeInvalidEntryScenario.js +0 -21
  182. package/tests/unit/state/apply/addWriter/addWriterStakeStakedBalanceFailureScenario.js +0 -37
  183. package/tests/unit/state/apply/addWriter/addWriterStakeSubtractFailureScenario.js +0 -42
  184. package/tests/unit/state/apply/addWriter/addWriterValidatorRewardScenario.js +0 -106
  185. package/tests/unit/state/apply/addWriter/addWriterWriterKeyMismatchScenario.js +0 -54
  186. package/tests/unit/state/apply/addWriter/addWriterWriterKeyOwnershipScenario.js +0 -54
  187. package/tests/unit/state/apply/addWriter/addWriterZeroWriterKeyScenario.js +0 -29
  188. package/tests/unit/state/apply/addWriter/state.apply.addWriter.test.js +0 -309
  189. package/tests/unit/state/apply/adminRecovery/adminRecoveryHappyPathScenario.js +0 -30
  190. package/tests/unit/state/apply/adminRecovery/adminRecoveryScenarioHelpers.js +0 -881
  191. package/tests/unit/state/apply/adminRecovery/state.apply.adminRecovery.test.js +0 -435
  192. package/tests/unit/state/apply/appendWhitelist/appendWhitelistBanAndReapplyScenario.js +0 -78
  193. package/tests/unit/state/apply/appendWhitelist/appendWhitelistExistingReaderHappyPathScenario.js +0 -98
  194. package/tests/unit/state/apply/appendWhitelist/appendWhitelistFeeAfterDisableScenario.js +0 -66
  195. package/tests/unit/state/apply/appendWhitelist/appendWhitelistHappyPathScenario.js +0 -55
  196. package/tests/unit/state/apply/appendWhitelist/appendWhitelistInsufficientAdminBalanceScenario.js +0 -103
  197. package/tests/unit/state/apply/appendWhitelist/appendWhitelistNodeAlreadyWhitelistedScenario.js +0 -60
  198. package/tests/unit/state/apply/appendWhitelist/appendWhitelistScenarioHelpers.js +0 -189
  199. package/tests/unit/state/apply/appendWhitelist/state.apply.appendWhitelist.test.js +0 -220
  200. package/tests/unit/state/apply/balanceInitialization/balanceInitializationHappyPathScenario.js +0 -82
  201. package/tests/unit/state/apply/balanceInitialization/balanceInitializationScenarioHelpers.js +0 -111
  202. package/tests/unit/state/apply/balanceInitialization/invalidAmountScenario.js +0 -45
  203. package/tests/unit/state/apply/balanceInitialization/nodeEntryBalanceUpdateFailureScenario.js +0 -82
  204. package/tests/unit/state/apply/balanceInitialization/state.apply.balanceInitialization.test.js +0 -189
  205. package/tests/unit/state/apply/banValidator/banValidatorBanAndReWhitelistScenario.js +0 -156
  206. package/tests/unit/state/apply/banValidator/banValidatorHappyPathScenario.js +0 -36
  207. package/tests/unit/state/apply/banValidator/banValidatorScenarioHelpers.js +0 -531
  208. package/tests/unit/state/apply/banValidator/banValidatorSequentialBansScenario.js +0 -74
  209. package/tests/unit/state/apply/banValidator/banValidatorTargetDecodeFailureScenario.js +0 -19
  210. package/tests/unit/state/apply/banValidator/banValidatorTargetIndexerScenario.js +0 -32
  211. package/tests/unit/state/apply/banValidator/banValidatorTargetNodeEntryMissingScenario.js +0 -19
  212. package/tests/unit/state/apply/banValidator/banValidatorTargetRoleUpdateFailureScenario.js +0 -19
  213. package/tests/unit/state/apply/banValidator/banValidatorWhitelistedNonWriterScenario.js +0 -38
  214. package/tests/unit/state/apply/banValidator/banValidatorWhitelistedZeroBalanceScenario.js +0 -91
  215. package/tests/unit/state/apply/banValidator/banValidatorWithdrawFailureScenario.js +0 -19
  216. package/tests/unit/state/apply/banValidator/state.apply.banValidator.test.js +0 -266
  217. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentDuplicateRegistrationScenario.js +0 -143
  218. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentHappyPathScenario.js +0 -26
  219. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentIncompleteOperationScenario.js +0 -94
  220. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentInvalidDeploymentEntryScenario.js +0 -37
  221. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentMultipleBootstrapScenario.js +0 -86
  222. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentScenarioHelpers.js +0 -347
  223. package/tests/unit/state/apply/bootstrapDeployment/invalidValidatorNodeEntryScenario.js +0 -57
  224. package/tests/unit/state/apply/bootstrapDeployment/state.apply.bootstrapDeployment.test.js +0 -429
  225. package/tests/unit/state/apply/common/access-control/adminConsistencyMismatchScenario.js +0 -120
  226. package/tests/unit/state/apply/common/access-control/adminEntryDecodeFailureScenario.js +0 -130
  227. package/tests/unit/state/apply/common/access-control/adminEntryExistsScenario.js +0 -93
  228. package/tests/unit/state/apply/common/access-control/adminEntryMissingScenario.js +0 -108
  229. package/tests/unit/state/apply/common/access-control/adminOnlyGuardScenario.js +0 -126
  230. package/tests/unit/state/apply/common/access-control/adminPublicKeyDecodeFailureScenario.js +0 -121
  231. package/tests/unit/state/apply/common/access-control/roleAccessOperationValidationScenario.js +0 -50
  232. package/tests/unit/state/apply/common/adminControlOperationValidationScenario.js +0 -56
  233. package/tests/unit/state/apply/common/balances/adminEntryUpdateFailureScenario.js +0 -52
  234. package/tests/unit/state/apply/common/balances/base/requesterBalanceScenarioBase.js +0 -198
  235. package/tests/unit/state/apply/common/balances/feeDecodeFailureScenario.js +0 -52
  236. package/tests/unit/state/apply/common/balances/requesterBalanceDecodeFailureScenario.js +0 -15
  237. package/tests/unit/state/apply/common/balances/requesterBalanceFeeApplicationFailureScenario.js +0 -11
  238. package/tests/unit/state/apply/common/balances/requesterBalanceInsufficientScenario.js +0 -15
  239. package/tests/unit/state/apply/common/balances/requesterBalanceUpdateFailureScenario.js +0 -11
  240. package/tests/unit/state/apply/common/balances/validatorEntryRewardFailureScenario.js +0 -11
  241. package/tests/unit/state/apply/common/balances/validatorEntryUpdateFailureScenario.js +0 -11
  242. package/tests/unit/state/apply/common/balances/validatorNodeEntryDecodeFailureScenario.js +0 -40
  243. package/tests/unit/state/apply/common/base/OperationValidationScenarioBase.js +0 -114
  244. package/tests/unit/state/apply/common/commonScenarioHelper.js +0 -103
  245. package/tests/unit/state/apply/common/indexer/indexerNodeEntryDecodeFailureScenario.js +0 -36
  246. package/tests/unit/state/apply/common/indexer/indexerNodeEntryMissingScenario.js +0 -36
  247. package/tests/unit/state/apply/common/indexer/indexerRoleUpdateFailureScenario.js +0 -29
  248. package/tests/unit/state/apply/common/indexer/indexerSequenceStateInvalidScenario.js +0 -66
  249. package/tests/unit/state/apply/common/invalidMessageComponentValidationScenario.js +0 -84
  250. package/tests/unit/state/apply/common/nodeEntryInitializationFailureScenario.js +0 -47
  251. package/tests/unit/state/apply/common/operationAlreadyAppliedScenario.js +0 -85
  252. package/tests/unit/state/apply/common/payload-structure/addressWithInvalidPublicKeyScenario.js +0 -52
  253. package/tests/unit/state/apply/common/payload-structure/initializationDisabledScenario.js +0 -54
  254. package/tests/unit/state/apply/common/payload-structure/invalidAddressValidationScenario.js +0 -73
  255. package/tests/unit/state/apply/common/payload-structure/invalidHashValidationScenario.js +0 -71
  256. package/tests/unit/state/apply/common/payload-structure/invalidPayloadValidationScenario.js +0 -31
  257. package/tests/unit/state/apply/common/payload-structure/invalidSignatureValidationScenario.js +0 -142
  258. package/tests/unit/state/apply/common/payload-structure/partialOperationValidationScenario.js +0 -87
  259. package/tests/unit/state/apply/common/requester/requesterNodeEntryBufferMissingScenario.js +0 -71
  260. package/tests/unit/state/apply/common/requester/requesterNodeEntryDecodeFailureScenario.js +0 -73
  261. package/tests/unit/state/apply/common/requester/requesterNodeEntryMissingScenario.js +0 -36
  262. package/tests/unit/state/apply/common/requesterAddressValidationScenario.js +0 -44
  263. package/tests/unit/state/apply/common/requesterPublicKeyValidationScenario.js +0 -25
  264. package/tests/unit/state/apply/common/transactionValidityMismatchScenario.js +0 -98
  265. package/tests/unit/state/apply/common/validatorConsistency/base/validatorConsistencyScenarioBase.js +0 -202
  266. package/tests/unit/state/apply/common/validatorConsistency/validatorEntryDecodeFailureScenario.js +0 -17
  267. package/tests/unit/state/apply/common/validatorConsistency/validatorEntryMissingScenario.js +0 -44
  268. package/tests/unit/state/apply/common/validatorConsistency/validatorInactiveScenario.js +0 -19
  269. package/tests/unit/state/apply/common/validatorConsistency/validatorWriterKeyMismatchScenario.js +0 -18
  270. package/tests/unit/state/apply/common/validatorEntryValidation/base/validatorEntryValidationScenarioBase.js +0 -315
  271. package/tests/unit/state/apply/common/validatorEntryValidation/validatorEntryInvalidBalanceScenario.js +0 -18
  272. package/tests/unit/state/apply/common/writerKeyExistsValidationScenario.js +0 -43
  273. package/tests/unit/state/apply/disableInitialization/disableInitializationAlreadyDisabledScenario.js +0 -53
  274. package/tests/unit/state/apply/disableInitialization/disableInitializationHappyPathScenario.js +0 -24
  275. package/tests/unit/state/apply/disableInitialization/disableInitializationScenarioHelpers.js +0 -204
  276. package/tests/unit/state/apply/disableInitialization/state.apply.disableInitialization.test.js +0 -161
  277. package/tests/unit/state/apply/missing-tests.md +0 -18
  278. package/tests/unit/state/apply/removeIndexer/removeIndexerHappyPathScenario.js +0 -58
  279. package/tests/unit/state/apply/removeIndexer/removeIndexerReAddAndRemoveAgainScenario.js +0 -98
  280. package/tests/unit/state/apply/removeIndexer/removeIndexerRemoveMultipleIndexersScenario.js +0 -167
  281. package/tests/unit/state/apply/removeIndexer/removeIndexerScenarioHelpers.js +0 -429
  282. package/tests/unit/state/apply/removeIndexer/removeIndexerTargetNotIndexerScenario.js +0 -22
  283. package/tests/unit/state/apply/removeIndexer/removeIndexerWriterKeyMissingScenario.js +0 -20
  284. package/tests/unit/state/apply/removeIndexer/state.apply.removeIndexer.test.js +0 -291
  285. package/tests/unit/state/apply/removeWriter/removeWriterAndAddWriterAgainScenario.js +0 -87
  286. package/tests/unit/state/apply/removeWriter/removeWriterHappyPathScenario.js +0 -38
  287. package/tests/unit/state/apply/removeWriter/removeWriterInvalidValidatorSignatureScenario.js +0 -32
  288. package/tests/unit/state/apply/removeWriter/removeWriterRequesterBalanceInsufficientScenario.js +0 -21
  289. package/tests/unit/state/apply/removeWriter/removeWriterRequesterEntryDecodeFailureScenario.js +0 -19
  290. package/tests/unit/state/apply/removeWriter/removeWriterRequesterEntryMissingScenario.js +0 -19
  291. package/tests/unit/state/apply/removeWriter/removeWriterRequesterIndexerScenario.js +0 -21
  292. package/tests/unit/state/apply/removeWriter/removeWriterRequesterNotWriterScenario.js +0 -21
  293. package/tests/unit/state/apply/removeWriter/removeWriterRequesterRoleUpdateFailureScenario.js +0 -19
  294. package/tests/unit/state/apply/removeWriter/removeWriterScenarioHelpers.js +0 -348
  295. package/tests/unit/state/apply/removeWriter/removeWriterThroughWriterValidatorScenario.js +0 -113
  296. package/tests/unit/state/apply/removeWriter/removeWriterUnstakeFailureScenario.js +0 -33
  297. package/tests/unit/state/apply/removeWriter/removeWriterWriterKeyMismatchScenario.js +0 -21
  298. package/tests/unit/state/apply/removeWriter/removeWriterWriterKeyOwnershipScenario.js +0 -26
  299. package/tests/unit/state/apply/removeWriter/removeWriterWriterKeyRegistryMissingScenario.js +0 -22
  300. package/tests/unit/state/apply/removeWriter/state.apply.removeWriter.test.js +0 -307
  301. package/tests/unit/state/apply/state.apply.test.js +0 -24
  302. package/tests/unit/state/apply/transfer/state.apply.transfer.test.js +0 -819
  303. package/tests/unit/state/apply/transfer/transferContractSchemaValidationScenario.js +0 -22
  304. package/tests/unit/state/apply/transfer/transferDoubleSpendAcrossValidatorsScenario.js +0 -146
  305. package/tests/unit/state/apply/transfer/transferDoubleSpendSameBatchScenario.js +0 -63
  306. package/tests/unit/state/apply/transfer/transferDoubleSpendSingleValidatorScenario.js +0 -67
  307. package/tests/unit/state/apply/transfer/transferExistingRecipientAmountScenario.js +0 -31
  308. package/tests/unit/state/apply/transfer/transferExistingRecipientZeroAmountScenario.js +0 -31
  309. package/tests/unit/state/apply/transfer/transferHandlerGuardScenarios.js +0 -22
  310. package/tests/unit/state/apply/transfer/transferHappyPathScenario.js +0 -8
  311. package/tests/unit/state/apply/transfer/transferInvalidIncomingDataScenario.js +0 -66
  312. package/tests/unit/state/apply/transfer/transferNewRecipientAmountScenario.js +0 -31
  313. package/tests/unit/state/apply/transfer/transferNewRecipientZeroAmountScenario.js +0 -31
  314. package/tests/unit/state/apply/transfer/transferScenarioHelpers.js +0 -1170
  315. package/tests/unit/state/apply/transfer/transferSelfTransferAmountScenario.js +0 -38
  316. package/tests/unit/state/apply/transfer/transferSelfTransferZeroAmountScenario.js +0 -38
  317. package/tests/unit/state/apply/transfer/transferValidatorRecipientAmountScenario.js +0 -38
  318. package/tests/unit/state/apply/transfer/transferValidatorRecipientZeroAmountScenario.js +0 -38
  319. package/tests/unit/state/apply/txOperation/state.apply.txOperation.test.js +0 -318
  320. package/tests/unit/state/apply/txOperation/txOperationBootstrapNotRegisteredScenario.js +0 -70
  321. package/tests/unit/state/apply/txOperation/txOperationDifferentValidatorCreatorHappyPathScenario.js +0 -23
  322. package/tests/unit/state/apply/txOperation/txOperationInvalidDeploymentEntryScenario.js +0 -48
  323. package/tests/unit/state/apply/txOperation/txOperationInvalidFeeAmountScenario.js +0 -39
  324. package/tests/unit/state/apply/txOperation/txOperationInvalidSubnetCreatorAddressScenario.js +0 -46
  325. package/tests/unit/state/apply/txOperation/txOperationRequesterCreatorHappyPathScenario.js +0 -21
  326. package/tests/unit/state/apply/txOperation/txOperationScenarioHelpers.js +0 -432
  327. package/tests/unit/state/apply/txOperation/txOperationStandardHappyPathScenario.js +0 -21
  328. package/tests/unit/state/apply/txOperation/txOperationTransferFeeAddCreatorBalanceFailureScenario.js +0 -26
  329. package/tests/unit/state/apply/txOperation/txOperationTransferFeeAddValidatorBalanceFailureScenario.js +0 -25
  330. package/tests/unit/state/apply/txOperation/txOperationTransferFeeAddValidatorBonusFailureScenario.js +0 -27
  331. package/tests/unit/state/apply/txOperation/txOperationTransferFeeDecodeCreatorEntryScenario.js +0 -18
  332. package/tests/unit/state/apply/txOperation/txOperationTransferFeeDecodeRequesterEntryScenario.js +0 -17
  333. package/tests/unit/state/apply/txOperation/txOperationTransferFeeDecodeValidatorEntryScenario.js +0 -31
  334. package/tests/unit/state/apply/txOperation/txOperationTransferFeeGuardBypassScenario.js +0 -49
  335. package/tests/unit/state/apply/txOperation/txOperationTransferFeeGuardScenarioFactory.js +0 -93
  336. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInsufficientRequesterBalanceScenario.js +0 -28
  337. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidCreatorBalanceScenario.js +0 -29
  338. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidRequesterBalanceScenario.js +0 -28
  339. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidRequesterEntryScenario.js +0 -17
  340. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidValidatorBalanceScenario.js +0 -33
  341. package/tests/unit/state/apply/txOperation/txOperationTransferFeeMissingCreatorEntryScenario.js +0 -18
  342. package/tests/unit/state/apply/txOperation/txOperationTransferFeeSubtractFailureScenario.js +0 -25
  343. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateCreatorBalanceFailureScenario.js +0 -26
  344. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateFailureScenario.js +0 -25
  345. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateValidatorBalanceFailureScenario.js +0 -26
  346. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateValidatorBonusFailureScenario.js +0 -27
  347. package/tests/unit/state/apply/txOperation/txOperationValidatorCreatorHappyPathScenario.js +0 -21
  348. package/tests/unit/state/stateModule.test.js +0 -23
  349. package/tests/unit/state/stateTestUtils.js +0 -32
  350. package/tests/unit/state/utils/address.test.js +0 -63
  351. package/tests/unit/state/utils/adminEntry.test.js +0 -52
  352. package/tests/unit/state/utils/balance.test.js +0 -320
  353. package/tests/unit/state/utils/lengthEntry.test.js +0 -54
  354. package/tests/unit/state/utils/nodeEntry.test.js +0 -298
  355. package/tests/unit/state/utils/roles.test.js +0 -44
  356. package/tests/unit/unit.test.js +0 -14
  357. package/tests/unit/utils/amountSerialization/amountSerialization.test.js +0 -237
  358. package/tests/unit/utils/buffer/buffer.test.js +0 -251
  359. package/tests/unit/utils/check/adminControlOperation.test.js +0 -156
  360. package/tests/unit/utils/check/balanceInitializationOperation.test.js +0 -54
  361. package/tests/unit/utils/check/bootstrapDeploymentOperation.test.js +0 -104
  362. package/tests/unit/utils/check/check.test.js +0 -17
  363. package/tests/unit/utils/check/common.test.js +0 -419
  364. package/tests/unit/utils/check/coreAdminOperation.test.js +0 -95
  365. package/tests/unit/utils/check/roleAccessOperation.test.js +0 -255
  366. package/tests/unit/utils/check/transactionOperation.test.js +0 -107
  367. package/tests/unit/utils/check/transferOperation.test.js +0 -102
  368. package/tests/unit/utils/deepEqualApplyPayload/deepEqualApplyPayload.test.js +0 -102
  369. package/tests/unit/utils/fileUtils/readAddressesFromWhitelistFile.test.js +0 -95
  370. package/tests/unit/utils/fileUtils/readBalanceMigrationFile.test.js +0 -149
  371. package/tests/unit/utils/helpers/helpers.test.js +0 -11
  372. package/tests/unit/utils/helpers/isHexString.test.js +0 -12
  373. package/tests/unit/utils/helpers/normalizeHex.test.js +0 -82
  374. package/tests/unit/utils/migrationUtils/validateAddressFromIncomingFile.test.js +0 -100
  375. package/tests/unit/utils/normalizers/normalizers.test.js +0 -469
  376. package/tests/unit/utils/protobuf/applyOperations.test.js +0 -91
  377. package/tests/unit/utils/protobuf/operationHelpers.test.js +0 -303
  378. package/tests/unit/utils/protobuf/protobuf.test.js +0 -12
  379. package/tests/unit/utils/type/type.test.js +0 -25
  380. package/tests/unit/utils/utils.test.js +0 -21
  381. package/whitelist/.gitkeep +0 -0
@@ -1,149 +0,0 @@
1
- import { test, hook } from 'brittle';
2
- import fileUtils from '../../../../src/utils/fileUtils.js';
3
- import { errorMessageIncludes } from "../../../helpers/regexHelper.js";
4
- import fs from 'fs';
5
- import PeerWallet from 'trac-wallet';
6
- import { config } from '../../../helpers/config.js';
7
- import { asAddress } from '../../../helpers/address.js';
8
-
9
- const DUMMY_PATH_OK = './dummy_balance_ok.csv';
10
- const DUMMY_PATH_DUP = './dummy_balance_dup.csv';
11
- const DUMMY_PATH_INVALID_ADDRESS = './dummy_balance_invalid_address.csv';
12
- const DUMMY_PATH_ADMIN_ADDRESS = './dummy_balance_admin_address.csv';
13
- const DUMMY_PATH_EMPTY = './dummy_balance_empty.csv';
14
- const DUMMY_PATH_WHITESPACE = './dummy_balance_whitespace.csv';
15
- const DUMMY_PATH_INVALID_BALANCE = './dummy_balance_invalid_balance.csv';
16
- const DUMMY_PATH_NEGATIVE = './dummy_balance_negative.csv';
17
- const DUMMY_PATH_MALFORMED = './dummy_balance_malformed.csv';
18
- const DUMMY_PATH_BLANK = './dummy_balance_blank.csv';
19
- const DUMMY_PATH_ZERO = './dummy_balance_zero.csv';
20
- const DUMMY_PATH_BOM = './dummy_balance_bom.csv';
21
- const DUMMY_PATH_LARGE = './dummy_balance_large.csv';
22
-
23
- const ADDR1 = asAddress('6a38e14198866f0fdf4d4495b07e066cfd0a2e8cbe774d11af37d15f741ac984');
24
- const ADDR2 = asAddress('544514242356432739de9af71deb8d526fb03d6c5c15e0a934d9a20b6710e2fe');
25
-
26
- hook('Initialize dummy balance files', async t => {
27
- // Happy path
28
- fs.writeFileSync(DUMMY_PATH_OK, `${ADDR1},1.000000000000000001\n${ADDR2},2.000000000000000000\n`);
29
- // Edge: duplicated address
30
- fs.writeFileSync(DUMMY_PATH_DUP, `${ADDR1},1.0\n${ADDR1},2.0\n`);
31
- // Edge: Empty file
32
- fs.writeFileSync(DUMMY_PATH_EMPTY, '');
33
- // Edge: address with whitespace
34
- fs.writeFileSync(DUMMY_PATH_WHITESPACE, ` ${ADDR1} , 1.0\n`);
35
- // Edge: invalid balance format
36
- fs.writeFileSync(DUMMY_PATH_INVALID_BALANCE, `${ADDR1},notanumber\n`);
37
- // Edge: negative balance
38
- fs.writeFileSync(DUMMY_PATH_NEGATIVE, `${ADDR1},-1.0\n`);
39
- // Edge: malformed line (missing balance)
40
- fs.writeFileSync(DUMMY_PATH_MALFORMED, `${ADDR1}\n`);
41
- // Edge: blank lines and whitespace only
42
- fs.writeFileSync(DUMMY_PATH_BLANK, `\n \n${ADDR1},1.0\n`);
43
- // Edge: zero balance
44
- fs.writeFileSync(DUMMY_PATH_ZERO, `${ADDR1},0.0\n`);
45
- // Edge: file with BOM
46
- fs.writeFileSync(DUMMY_PATH_BOM, '\uFEFF' + `${ADDR1},1.0\n`);
47
- // Edge: large file
48
- let large = '';
49
- const randomAddress = async () => {
50
- const wallet = new PeerWallet({ derivationPath: config.derivationPath });
51
- await wallet.ready;
52
- await wallet.generateKeyPair(undefined, config.derivationPath);
53
- return wallet.address;
54
- }
55
- for (let i = 0; i < 1000; i++) {
56
- const rand = await randomAddress(config.addressPrefix);
57
- large += `${rand},1.0\n`;
58
- }
59
- fs.writeFileSync(DUMMY_PATH_LARGE, large);
60
- });
61
-
62
-
63
- test('readBalanceMigrationFile - valid file', async (t) => {
64
- const { addressBalancePair, totalBalance, totalAddresses } = await fileUtils.readBalanceMigrationFile(DUMMY_PATH_OK);
65
- t.is(typeof addressBalancePair, 'object');
66
- t.is(addressBalancePair.size, 2);
67
- t.is(totalAddresses, 2);
68
- t.ok(totalBalance > 0n);
69
- t.ok(addressBalancePair.has(ADDR1));
70
- t.ok(addressBalancePair.has(ADDR2));
71
- });
72
-
73
- test('readBalanceMigrationFile - address with whitespace', async (t) => {
74
- await t.exception(() => fileUtils.readBalanceMigrationFile( DUMMY_PATH_WHITESPACE),
75
- errorMessageIncludes('Failed to read balance migration file: Invalid line in balance migration file:'))
76
- });
77
-
78
- test('readBalanceMigrationFile - duplicate address', async (t) => {
79
- await t.exception(() => fileUtils.readBalanceMigrationFile(DUMMY_PATH_DUP),
80
- errorMessageIncludes(`Duplicate address found in balance migration file: '${ADDR1}'. Each address must be unique.`))
81
- });
82
-
83
- test('readBalanceMigrationFile - invalid balance format', async (t) => {
84
- await t.exception(() => fileUtils.readBalanceMigrationFile(DUMMY_PATH_INVALID_BALANCE),
85
- errorMessageIncludes(`Failed to read balance migration file: Invalid line in balance migration file: `))
86
- });
87
-
88
- test('readBalanceMigrationFile - negative balance', async (t) => {
89
- await t.exception(() => fileUtils.readBalanceMigrationFile(DUMMY_PATH_NEGATIVE),
90
- errorMessageIncludes(`Failed to read balance migration file: Invalid line in balance migration file: `))
91
- });
92
-
93
- test('readBalanceMigrationFile - malformed line', async (t) => {
94
- await t.exception(() => fileUtils.readBalanceMigrationFile( DUMMY_PATH_MALFORMED),
95
- errorMessageIncludes(`Failed to read balance migration file: Invalid line in balance migration file: `))
96
- });
97
-
98
- test('readBalanceMigrationFile - blank lines and whitespace', async (t) => {
99
- const { addressBalancePair, totalBalance, totalAddresses } = await fileUtils.readBalanceMigrationFile(DUMMY_PATH_BLANK);
100
- t.is(addressBalancePair.size, 1);
101
- t.is(totalAddresses, 1);
102
- t.ok(addressBalancePair.has(ADDR1));
103
- });
104
-
105
- test('readBalanceMigrationFile - zero balance', async (t) => {
106
- const { addressBalancePair, totalBalance, totalAddresses } = await fileUtils.readBalanceMigrationFile( DUMMY_PATH_ZERO);
107
- t.is(addressBalancePair.size, 1);
108
- t.is(totalBalance, 0n);
109
- t.is(totalAddresses, 1);
110
- t.ok(addressBalancePair.has(ADDR1));
111
- });
112
-
113
- test('readBalanceMigrationFile - BOM at start', async (t) => {
114
- const { addressBalancePair, totalBalance, totalAddresses } = await fileUtils.readBalanceMigrationFile(DUMMY_PATH_BOM);
115
- t.is(addressBalancePair.size, 1);
116
- t.is(totalAddresses, 1);
117
- t.ok(addressBalancePair.has(ADDR1));
118
- });
119
-
120
- test('readBalanceMigrationFile - large file', async (t) => {
121
- const { addressBalancePair, totalBalance, totalAddresses } = await fileUtils.readBalanceMigrationFile(DUMMY_PATH_LARGE);
122
- t.is(addressBalancePair.size, 1000);
123
- t.is(totalAddresses, 1000);
124
- });
125
-
126
- test('readBalanceMigrationFile - empty file', async (t) => {
127
- await t.exception(() => fileUtils.readBalanceMigrationFile(DUMMY_PATH_EMPTY),
128
- errorMessageIncludes('Balance migration file is empty. File must contain at least one valid address balance pair.'))
129
- });
130
-
131
- test('readBalanceMigrationFile - file does not exist', async (t) => {
132
- const nonExistentPath = './non_existent_balance.csv';
133
- await t.exception(() => fileUtils.readBalanceMigrationFile(nonExistentPath),
134
- errorMessageIncludes(`Balance migration file not found: ${nonExistentPath}`))
135
- });
136
-
137
- test('readBalanceMigrationFile - invalid file extension', async (t) => {
138
- const invalidExtensionPath = './dummy_balance.txt';
139
- await t.exception(() => fileUtils.readBalanceMigrationFile(invalidExtensionPath),
140
- errorMessageIncludes(`Invalid file format: ${invalidExtensionPath}. Balance migration file must be a CSV file.`))
141
- });
142
-
143
- hook('Cleanup dummy balance files', async t => {
144
- [DUMMY_PATH_OK, DUMMY_PATH_DUP, DUMMY_PATH_EMPTY,
145
- DUMMY_PATH_WHITESPACE, DUMMY_PATH_INVALID_BALANCE, DUMMY_PATH_NEGATIVE, DUMMY_PATH_MALFORMED, DUMMY_PATH_BLANK,
146
- DUMMY_PATH_ZERO, DUMMY_PATH_BOM, DUMMY_PATH_LARGE].forEach(path => {
147
- if (fs.existsSync(path)) fs.unlinkSync(path);
148
- });
149
- });
@@ -1,11 +0,0 @@
1
- import { default as test } from 'brittle';
2
-
3
- async function runMsgUtilsTests() {
4
- test.pause();
5
-
6
- await import('./isHexString.test.js');
7
- await import('./normalizeHex.test.js');
8
- test.resume();
9
- }
10
-
11
- runMsgUtilsTests();
@@ -1,12 +0,0 @@
1
- import test from 'brittle';
2
- import { isHexString } from '../../../../src/utils/helpers.js';
3
-
4
- test('isHexString', (t) => {
5
- t.ok(isHexString('1234567890abcdef'), 'Valid hex string should return true with all lowercase characters');
6
- t.ok(isHexString('1234567890ABCDEF'), 'Valid hex string should return true with all uppercase characters');
7
- t.ok(isHexString('1234567890AbCdEf'), 'Valid hex string should return true with mixed case characters');
8
- t.is(isHexString('0x1234567890abcdef'), false, '0x prefixed hex string should return false');
9
- t.is(isHexString('1234567890xyz'), false, 'Invalid hex string should return false');
10
- t.is(isHexString('123456789'), false, 'Invalid size hex string should return false');
11
- t.is(isHexString(''), false, 'Empty string should return false');
12
- });
@@ -1,82 +0,0 @@
1
- import test from 'brittle';
2
- import b4a from 'b4a';
3
- import { normalizeHex } from '../../../../src/utils/helpers.js';
4
-
5
- test('normalizeHex should convert hex string to buffer', t => {
6
- const hexString = '1234abcd';
7
- const result = normalizeHex(hexString);
8
- t.ok(b4a.isBuffer(result), 'Result should be a buffer');
9
- t.is(b4a.toString(result, 'hex'), hexString, 'Buffer should contain correct hex value');
10
- });
11
-
12
- test('normalizeHex should return buffer as is', t => {
13
- const originalBuffer = b4a.from('1234abcd', 'hex');
14
- const result = normalizeHex(originalBuffer);
15
- t.is(result, originalBuffer, 'Should return the same buffer instance');
16
- t.ok(b4a.isBuffer(result), 'Result should be a buffer');
17
- });
18
-
19
- test('normalizeHex should handle empty string', t => {
20
- try {
21
- normalizeHex('');
22
- t.fail('Should throw on empty string');
23
- } catch (err) {
24
- t.pass('Throws on empty string');
25
- }
26
- });
27
-
28
- test('normalizeHex should handle invalid hex string', t => {
29
- try {
30
- normalizeHex('invalid hex');
31
- t.fail('Should throw on invalid hex string');
32
- } catch (err) {
33
- t.pass('Throws on invalid hex string');
34
- }
35
- });
36
-
37
- test('normalizeHex should handle uppercase hex string', t => {
38
- const hexString = '1234ABCD';
39
- const result = normalizeHex(hexString);
40
- t.ok(b4a.isBuffer(result), 'Result should be a buffer');
41
- t.is(b4a.toString(result, 'hex'), hexString.toLowerCase(), 'Buffer should contain correct hex value');
42
- });
43
-
44
- test('normalizeHex should handle hex string with 0x prefix', t => {
45
- const hexString = '0x1234abcd';
46
- const result = normalizeHex(hexString.slice(2));
47
- t.ok(b4a.isBuffer(result), 'Result should be a buffer');
48
- t.is(b4a.toString(result, 'hex'), '1234abcd', 'Buffer should contain correct hex value without prefix');
49
- });
50
-
51
-
52
- test('normalizeHex should handle invalid data types', t => {
53
- const invalidTypes = [
54
- { value: 997, desc: 'number' },
55
- { value: true, desc: 'boolean' },
56
- { value: null, desc: 'null' },
57
- { value: undefined, desc: 'undefined' },
58
- { value: Infinity, desc: 'Infinity' },
59
- { value: {}, desc: 'empty object' },
60
- { value: [], desc: 'empty array' },
61
- { value: () => { }, desc: 'function' },
62
- { value: "invalid hex", desc: 'non-hex string' },
63
- { value: BigInt(997), desc: 'BigInt' },
64
- { value: new Date(), desc: 'Date object' },
65
- { value: NaN, desc: 'NaN' },
66
- { value: new Map(), desc: 'Map' },
67
- { value: new Set(), desc: 'Set' },
68
- { value: /abc/, desc: 'RegExp' },
69
- { value: new Error('fail'), desc: 'Error' },
70
- { value: Promise.resolve(), desc: 'Promise' },
71
- { value: new Float32Array([1.1, 2.2]), desc: 'Float32Array' }
72
- ];
73
-
74
- for (const { value, desc } of invalidTypes) {
75
- try {
76
- normalizeHex(value);
77
- t.fail(`Should throw on ${desc} input`);
78
- } catch (err) {
79
- t.pass(`Correctly throws on ${desc} input`);
80
- }
81
- }
82
- });
@@ -1,100 +0,0 @@
1
- import { test, hook } from 'brittle';
2
- import migrationUtils from '../../../../src/utils/migrationUtils.js';
3
- import { errorMessageIncludes } from "../../../helpers/regexHelper.js";
4
- import { ZERO_LICENSE } from '../../../../src/core/state/utils/nodeEntry.js';
5
- import b4a from 'b4a';
6
- import { config } from '../../../helpers/config.js';
7
- import { asAddress } from '../../../helpers/address.js';
8
-
9
- const VALID_ADDRESS = asAddress('6a38e14198866f0fdf4d4495b07e066cfd0a2e8cbe774d11af37d15f741ac984');
10
- const ADMIN_ADDRESS = asAddress('233aa0b7971509059e4816c782b32fec29b3797876bf92c072d1b0e058c5bf70');
11
- const INVALID_ADDRESS = 'notanaddress';
12
- const LICENSE_NUMBER_ONE = b4a.alloc(4, 1);
13
-
14
- const mockStateInstance = {
15
- getNodeEntryUnsigned: async () => ({
16
- isWhitelisted: false,
17
- license: ZERO_LICENSE
18
- }),
19
- getAdminEntry: async () => ({
20
- address: ADMIN_ADDRESS
21
- })
22
- };
23
-
24
- const mockStateInstanceWhitelisted = {
25
- getNodeEntryUnsigned: async () => ({
26
- isWhitelisted: true,
27
- license: ZERO_LICENSE
28
- }),
29
- getAdminEntry: async () => ({
30
- address: ADMIN_ADDRESS
31
- })
32
- };
33
-
34
- const mockStateInstanceBanned = {
35
- getNodeEntryUnsigned: async () => ({
36
- isWhitelisted: false,
37
- license: LICENSE_NUMBER_ONE
38
- }),
39
- getAdminEntry: async () => ({
40
- address: ADMIN_ADDRESS
41
- })
42
- };
43
-
44
- test('validateAddressFromIncomingFile - valid address', async (t) => {
45
- await migrationUtils.validateAddressFromIncomingFile(
46
- mockStateInstance,
47
- config,
48
- VALID_ADDRESS,
49
- { address: ADMIN_ADDRESS }
50
- );
51
- t.pass('Address validation succeeded as expected');
52
- });
53
-
54
- test('validateAddressFromIncomingFile - invalid address format', async (t) => {
55
- await t.exception(
56
- () => migrationUtils.validateAddressFromIncomingFile(
57
- mockStateInstance,
58
- config,
59
- INVALID_ADDRESS,
60
- { address: ADMIN_ADDRESS }
61
- ),
62
- errorMessageIncludes('Invalid address format')
63
- );
64
- });
65
-
66
- test('validateAddressFromIncomingFile - admin address', async (t) => {
67
- await t.exception(
68
- () => migrationUtils.validateAddressFromIncomingFile(
69
- mockStateInstance,
70
- config,
71
- ADMIN_ADDRESS,
72
- { address: ADMIN_ADDRESS }
73
- ),
74
- errorMessageIncludes(`The admin address '${ADMIN_ADDRESS}' cannot be included in the current operation`)
75
- );
76
- });
77
-
78
- test('validateAddressFromIncomingFile - whitelisted node', async (t) => {
79
- await t.exception(
80
- () => migrationUtils.validateAddressFromIncomingFile(
81
- mockStateInstanceWhitelisted,
82
- config,
83
- VALID_ADDRESS,
84
- { address: ADMIN_ADDRESS }
85
- ),
86
- errorMessageIncludes(`Whitelisted node address '${VALID_ADDRESS}' cannot be included in the current operation`)
87
- );
88
- });
89
-
90
- test('validateAddressFromIncomingFile - banned/previously whitelisted address', async (t) => {
91
- await t.exception(
92
- () => migrationUtils.validateAddressFromIncomingFile(
93
- mockStateInstanceBanned,
94
- config,
95
- VALID_ADDRESS,
96
- { address: ADMIN_ADDRESS }
97
- ),
98
- errorMessageIncludes(`Address '${VALID_ADDRESS}' has been banned/whitelisted in the past`)
99
- );
100
- });