@dashevo/wasm-dpp 0.24.0-dev.12 → 0.24.0-dev.14

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 (245) hide show
  1. package/.mocharc.yml +1 -1
  2. package/Cargo.toml +5 -2
  3. package/README.md +5 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.LICENSE.txt +9 -0
  6. package/dist/wasm/wasm_dpp.d.ts +3397 -1237
  7. package/karma.conf.js +5 -0
  8. package/lib/identifier/patchIdentifier.ts +5 -4
  9. package/lib/index.ts +1 -1
  10. package/lib/test/bootstrap.js +5 -0
  11. package/lib/test/fixtures/getDataContractFixture.js +267 -0
  12. package/lib/test/fixtures/getDocumentsFixture.js +43 -0
  13. package/lib/test/mocks/createStateRepositoryMock.js +64 -0
  14. package/lib/test/mocks/getBlsAdapterMock.js +51 -0
  15. package/package.json +11 -8
  16. package/src/bls_adapter.rs +17 -1
  17. package/src/buffer.rs +3 -0
  18. package/src/dash_platform_protocol.rs +107 -10
  19. package/src/data_contract/data_contract.rs +59 -10
  20. package/src/data_contract/data_contract_facade.rs +128 -0
  21. package/src/data_contract/errors/invalid_data_contract.rs +16 -16
  22. package/src/data_contract/errors/invalid_document_type.rs +8 -8
  23. package/src/data_contract/errors/mod.rs +10 -16
  24. package/src/data_contract/index.rs +56 -1
  25. package/src/data_contract/mod.rs +4 -0
  26. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
  27. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +41 -10
  28. package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +35 -4
  29. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +1 -1
  30. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +20 -7
  31. package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +47 -11
  32. package/src/data_contract_factory/data_contract_factory.rs +19 -17
  33. package/src/data_trigger/data_trigger_execution_context.rs +95 -0
  34. package/src/data_trigger/data_trigger_execution_result.rs +48 -0
  35. package/src/data_trigger/execute_data_triggers_factory.rs +60 -0
  36. package/src/data_trigger/get_data_triggers_factory.rs +65 -0
  37. package/src/data_trigger/mod.rs +121 -0
  38. package/src/document/document_facade.rs +125 -0
  39. package/src/document/errors/invalid_document_error.rs +10 -9
  40. package/src/document/errors/invalid_initial_revision_error.rs +1 -1
  41. package/src/document/errors/mismatch_owners_ids_error.rs +14 -4
  42. package/src/document/errors/mod.rs +17 -13
  43. package/src/document/errors/no_documents_supplied_error.rs +4 -4
  44. package/src/document/factory.rs +257 -0
  45. package/src/document/fetch_and_validate_data_contract.rs +77 -0
  46. package/src/document/generate_document_id.rs +17 -0
  47. package/src/document/mod.rs +311 -37
  48. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +22 -0
  49. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +253 -1
  50. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +60 -1
  51. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +263 -0
  52. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +302 -3
  53. package/src/document/state_transition/document_batch_transition/mod.rs +378 -0
  54. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_id.rs +40 -0
  55. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_indices.rs +50 -0
  56. package/src/document/state_transition/document_batch_transition/validation/basic/mod.rs +8 -0
  57. package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +34 -0
  58. package/src/document/state_transition/document_batch_transition/validation/basic/validate_partial_compound_indices.rs +39 -0
  59. package/src/document/state_transition/document_batch_transition/validation/mod.rs +2 -0
  60. package/src/document/state_transition/document_batch_transition/validation/state/fetch_documents.rs +43 -0
  61. package/src/document/state_transition/document_batch_transition/validation/state/mod.rs +3 -0
  62. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +27 -0
  63. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_uniqueness_by_indices.rs +47 -0
  64. package/src/document/validator.rs +52 -0
  65. package/src/errors/compatible_protocol_version_is_not_defined_error.rs +24 -0
  66. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
  67. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
  68. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
  69. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +15 -1
  70. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +16 -2
  71. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
  72. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
  73. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +6 -2
  74. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +5 -2
  75. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +3 -3
  76. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +2 -2
  77. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +29 -0
  78. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +4 -3
  79. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
  80. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
  81. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +4 -3
  82. package/src/errors/consensus/basic/identity/mod.rs +2 -0
  83. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
  84. package/src/errors/consensus/basic/json_schema_error.rs +8 -2
  85. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
  86. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +9 -9
  87. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +4 -4
  88. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +35 -0
  89. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +34 -0
  90. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +10 -7
  91. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +2 -3
  92. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +7 -3
  93. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -3
  94. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +7 -4
  95. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +2 -1
  96. package/src/errors/consensus/state/identity/mod.rs +4 -0
  97. package/src/errors/consensus_error.rs +218 -268
  98. package/src/errors/data_contract_not_present_error.rs +23 -0
  99. package/src/errors/dpp_error.rs +17 -0
  100. package/src/errors/from.rs +22 -0
  101. package/src/errors/js_conversion.rs +52 -5
  102. package/src/errors/mod.rs +6 -0
  103. package/src/errors/protocol_error.rs +14 -3
  104. package/src/identifier/errors.rs +30 -0
  105. package/src/identifier/mod.rs +95 -11
  106. package/src/identity/errors/asset_lock_output_not_found_error.rs +11 -0
  107. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +20 -0
  108. package/src/identity/errors/invalid_identity_error.rs +32 -0
  109. package/src/identity/errors/mod.rs +9 -0
  110. package/src/identity/errors/unknown_asset_lock_proof_type_error.rs +26 -0
  111. package/src/identity/factory_utils.rs +87 -0
  112. package/src/identity/identity_facade.rs +194 -20
  113. package/src/identity/identity_factory.rs +209 -0
  114. package/src/identity/identity_public_key/mod.rs +51 -40
  115. package/src/identity/mod.rs +31 -17
  116. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +132 -0
  117. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +72 -0
  118. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +4 -0
  119. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +177 -0
  120. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +72 -0
  121. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +4 -0
  122. package/src/identity/state_transition/asset_lock_proof/mod.rs +269 -0
  123. package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +26 -0
  124. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +337 -0
  125. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +153 -0
  126. package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +37 -0
  127. package/src/identity/state_transition/identity_create_transition/mod.rs +8 -0
  128. package/src/identity/state_transition/identity_create_transition/to_object.rs +45 -0
  129. package/src/identity/state_transition/identity_public_key_transitions.rs +207 -0
  130. package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +31 -0
  131. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +278 -0
  132. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +113 -0
  133. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +37 -0
  134. package/src/identity/state_transition/identity_topup_transition/mod.rs +8 -0
  135. package/src/identity/state_transition/identity_topup_transition/to_object.rs +42 -0
  136. package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +24 -0
  137. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +55 -0
  138. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +448 -0
  139. package/src/identity/state_transition/identity_update_transition/identity_update_transition_basic_validator.rs +94 -0
  140. package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +53 -0
  141. package/src/identity/state_transition/identity_update_transition/mod.rs +9 -0
  142. package/src/identity/state_transition/identity_update_transition/to_object.rs +66 -0
  143. package/src/identity/state_transition/mod.rs +12 -0
  144. package/src/identity/state_transition/validate_public_key_signatures.rs +61 -0
  145. package/src/identity/validation/identity_validator.rs +50 -0
  146. package/src/identity/validation/mod.rs +2 -0
  147. package/src/identity/validation/public_keys_validator.rs +14 -13
  148. package/src/identity_public_key/public_keys_validator.rs +44 -0
  149. package/src/lib.rs +6 -0
  150. package/src/lodash.rs +7 -0
  151. package/src/metadata.rs +54 -10
  152. package/src/state_repository.rs +598 -101
  153. package/src/state_transition/conversion.rs +104 -0
  154. package/src/state_transition/errors/invalid_state_transition_error.rs +32 -0
  155. package/src/state_transition/errors/mod.rs +1 -0
  156. package/src/state_transition/mod.rs +46 -0
  157. package/src/state_transition/state_transition_facade.rs +263 -0
  158. package/src/state_transition/state_transition_factory.rs +216 -0
  159. package/src/state_transition/validation/mod.rs +1 -0
  160. package/src/state_transition/validation/validate_state_transition_key_signature.rs +62 -0
  161. package/src/utils.rs +210 -8
  162. package/src/validation/json_schema_validator.rs +41 -0
  163. package/src/validation/mod.rs +2 -0
  164. package/src/validation/validation_result.rs +29 -5
  165. package/src/version/mod.rs +2 -0
  166. package/src/version/protocol_version.rs +103 -0
  167. package/test/integration/dataContract/DataContractFacade.spec.js +46 -30
  168. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +45 -127
  169. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +91 -139
  170. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +577 -503
  171. package/test/integration/document/Document.spec.js +55 -29
  172. package/test/integration/document/DocumentFacade.spec.js +51 -64
  173. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +38 -16
  174. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +341 -396
  175. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +116 -218
  176. package/test/integration/document/validation/validateDocumentFactory.spec.js +123 -171
  177. package/test/integration/identity/IdentityFacade.spec.js +52 -27
  178. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +185 -164
  179. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +84 -114
  180. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +120 -137
  181. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +106 -91
  182. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +50 -16
  183. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +78 -86
  184. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +74 -30
  185. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +93 -147
  186. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +65 -77
  187. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +60 -23
  188. package/test/integration/identity/validation/validateIdentityFactory.spec.js +46 -114
  189. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +9 -3
  190. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +12 -8
  191. package/test/integration/stateTransition/StateTransitionFacade.spec.js +95 -233
  192. package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +53 -0
  193. package/test/unit/Identifier.spec.js +36 -36
  194. package/test/unit/Metadata.spec.js +17 -3
  195. package/test/unit/dataContract/DataContract.spec.js +9 -4
  196. package/test/unit/dataContract/createDataContract.spec.js +0 -1
  197. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +3 -3
  198. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
  199. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +2 -2
  200. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -3
  201. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
  202. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +25 -31
  203. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +3 -3
  204. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +2 -0
  205. package/test/unit/decodeProtocolEntityFactory.spec.js +2 -2
  206. package/test/unit/document/Document.spec.js +147 -155
  207. package/test/unit/document/DocumentFactory.spec.js +153 -153
  208. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +59 -14
  209. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +131 -62
  210. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +144 -56
  211. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +38 -8
  212. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +11 -7
  213. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +29 -18
  214. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +38 -29
  215. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +53 -91
  216. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +357 -493
  217. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +133 -72
  218. package/test/unit/identity/Identity.spec.js +26 -9
  219. package/test/unit/identity/IdentityFactory.spec.js +81 -89
  220. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +73 -30
  221. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +38 -38
  222. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +34 -25
  223. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +36 -16
  224. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +85 -50
  225. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +24 -6
  226. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +44 -22
  227. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +58 -103
  228. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +63 -0
  229. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +90 -0
  230. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +18 -3
  231. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +38 -11
  232. package/test/unit/stateTransition/StateTransitionFactory.spec.js +49 -101
  233. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +23 -25
  234. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +73 -46
  235. package/test/unit/version/validateProtocolVersionFactory.spec.js +45 -27
  236. package/wasm/package.json +5 -0
  237. package/wasm/wasm_dpp.d.ts +3397 -1237
  238. package/wasm/wasm_dpp.js +7158 -1384
  239. package/wasm/wasm_dpp_bg.js +1 -1
  240. package/wasm/wasm_dpp_bg.wasm +0 -0
  241. package/wasm/wasm_dpp_bg.wasm.d.ts +777 -389
  242. package/webpack.config.js +9 -0
  243. package/src/document/state_transition/document_batch_transition/document_transition/document_update_transition.rs +0 -22
  244. package/test/integration/stateTransition/calculateStateTransitionFeeFactory.spec.js +0 -135
  245. package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +0 -54
@@ -1,68 +1,61 @@
1
- const { getRE2Class } = require('@dashevo/wasm-re2');
2
-
3
- const createAjv = require('@dashevo/dpp/lib/ajv/createAjv');
4
-
5
- const JsonSchemaValidator = require('@dashevo/dpp/lib/validation/JsonSchemaValidator');
6
-
7
1
  const getIdentityTopUpTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture');
8
2
 
9
- const validateIdentityTopUpTransitionBasicFactory = require(
10
- '@dashevo/dpp/lib/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory',
11
- );
12
-
3
+ const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
13
4
  const {
14
5
  expectJsonSchemaError,
15
6
  expectValidationError,
16
- } = require('@dashevo/dpp/lib/test/expect/expectError');
17
-
18
- const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
19
-
20
- const ChainAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/chain/ChainAssetLockProof');
21
- const InstantAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/instant/InstantAssetLockProof');
22
- const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
23
- const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
24
- const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
7
+ } = require('../../../../../../../lib/test/expect/expectError');
8
+ const { default: loadWasmDpp } = require('../../../../../../../dist');
25
9
 
26
10
  describe('validateIdentityTopUpTransitionBasicFactory', () => {
27
11
  let rawStateTransition;
28
12
  let stateTransition;
29
- let assetLockPublicKeyHash;
30
- let validateIdentityTopUpTransitionBasic;
31
- let proofValidationFunctionsByTypeMock;
32
- let validateProtocolVersionMock;
33
- let executionContext;
34
-
35
- beforeEach(async function beforeEach() {
36
- assetLockPublicKeyHash = Buffer.alloc(20, 1);
37
13
 
38
- const assetLockValidationResult = new ValidationResult();
39
- assetLockValidationResult.setData(assetLockPublicKeyHash);
14
+ let stateRepositoryMock;
15
+ let executionContext;
40
16
 
41
- proofValidationFunctionsByTypeMock = {
42
- [InstantAssetLockProof.type]: this.sinonSandbox.stub().resolves(assetLockValidationResult),
43
- [ChainAssetLockProof.type]: this.sinonSandbox.stub().resolves(assetLockValidationResult),
44
- };
17
+ let validateIdentityTopUpTransitionBasic;
45
18
 
46
- const RE2 = await getRE2Class();
47
- const ajv = createAjv(RE2);
19
+ let StateTransitionExecutionContext;
20
+ let IdentityTopUpTransition;
21
+ let IdentityPublicKey;
22
+ let UnsupportedProtocolVersionError;
23
+ let InvalidInstantAssetLockProofSignatureError;
24
+ let IdentityTopUpTransitionBasicValidator;
25
+
26
+ before(async () => {
27
+ ({
28
+ IdentityTopUpTransitionBasicValidator,
29
+ IdentityTopUpTransition,
30
+ StateTransitionExecutionContext,
31
+ IdentityPublicKey,
32
+ UnsupportedProtocolVersionError,
33
+ InvalidInstantAssetLockProofSignatureError,
34
+ } = await loadWasmDpp());
35
+ });
48
36
 
49
- const jsonSchemaValidator = new JsonSchemaValidator(ajv);
37
+ beforeEach(async function beforeEach() {
38
+ stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
39
+ stateRepositoryMock.verifyInstantLock.resolves(true);
40
+ stateRepositoryMock.isAssetLockTransactionOutPointAlreadyUsed.resolves(false);
50
41
 
51
- validateProtocolVersionMock = this.sinonSandbox.stub().returns(new ValidationResult());
42
+ executionContext = new StateTransitionExecutionContext();
52
43
 
53
- validateIdentityTopUpTransitionBasic = validateIdentityTopUpTransitionBasicFactory(
54
- jsonSchemaValidator,
55
- proofValidationFunctionsByTypeMock,
56
- validateProtocolVersionMock,
44
+ const validator = new IdentityTopUpTransitionBasicValidator(stateRepositoryMock);
45
+ validateIdentityTopUpTransitionBasic = (st, context) => validator.validate(
46
+ st,
47
+ context,
57
48
  );
58
49
 
59
- executionContext = new StateTransitionExecutionContext();
60
-
61
- stateTransition = getIdentityTopUpTransitionFixture();
50
+ const stateTransitionJS = getIdentityTopUpTransitionFixture();
51
+ stateTransition = new IdentityTopUpTransition(stateTransitionJS.toObject());
62
52
 
63
53
  const privateKey = '9b67f852093bc61cea0eeca38599dbfba0de28574d2ed9b99d10d33dc1bde7b2';
64
54
 
65
- await stateTransition.signByPrivateKey(privateKey, IdentityPublicKey.TYPES.ECDSA_SECP256K1);
55
+ await stateTransition.signByPrivateKey(
56
+ Buffer.from(privateKey, 'hex'),
57
+ IdentityPublicKey.TYPES.ECDSA_SECP256K1,
58
+ );
66
59
 
67
60
  rawStateTransition = stateTransition.toObject();
68
61
  });
@@ -71,9 +64,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
71
64
  it('should be present', async () => {
72
65
  delete rawStateTransition.protocolVersion;
73
66
 
74
- const result = await validateIdentityTopUpTransitionBasic(rawStateTransition);
67
+ const result = await validateIdentityTopUpTransitionBasic(
68
+ rawStateTransition, executionContext,
69
+ );
75
70
 
76
- expectJsonSchemaError(result);
71
+ await expectJsonSchemaError(result);
77
72
 
78
73
  const [error] = result.getErrors();
79
74
 
@@ -85,9 +80,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
85
80
  it('should be an integer', async () => {
86
81
  rawStateTransition.protocolVersion = '1';
87
82
 
88
- const result = await validateIdentityTopUpTransitionBasic(rawStateTransition);
83
+ const result = await validateIdentityTopUpTransitionBasic(
84
+ rawStateTransition, executionContext,
85
+ );
89
86
 
90
- expectJsonSchemaError(result);
87
+ await expectJsonSchemaError(result);
91
88
 
92
89
  const [error] = result.getErrors();
93
90
 
@@ -96,26 +93,13 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
96
93
  });
97
94
 
98
95
  it('should be valid', async () => {
99
- rawStateTransition.protocolVersion = -1;
100
-
101
- const protocolVersionError = new SomeConsensusError('test');
102
- const protocolVersionResult = new ValidationResult([
103
- protocolVersionError,
104
- ]);
105
-
106
- validateProtocolVersionMock.returns(protocolVersionResult);
96
+ rawStateTransition.protocolVersion = 1000;
107
97
 
108
- const result = await validateIdentityTopUpTransitionBasic(rawStateTransition);
109
-
110
- expectValidationError(result, SomeConsensusError);
111
-
112
- const [error] = result.getErrors();
113
-
114
- expect(error).to.equal(protocolVersionError);
115
-
116
- expect(validateProtocolVersionMock).to.be.calledOnceWith(
117
- rawStateTransition.protocolVersion,
98
+ const result = await validateIdentityTopUpTransitionBasic(
99
+ rawStateTransition, executionContext,
118
100
  );
101
+
102
+ await expectValidationError(result, UnsupportedProtocolVersionError);
119
103
  });
120
104
  });
121
105
 
@@ -123,9 +107,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
123
107
  it('should be present', async () => {
124
108
  delete rawStateTransition.type;
125
109
 
126
- const result = await validateIdentityTopUpTransitionBasic(rawStateTransition);
110
+ const result = await validateIdentityTopUpTransitionBasic(
111
+ rawStateTransition, executionContext,
112
+ );
127
113
 
128
- expectJsonSchemaError(result);
114
+ await expectJsonSchemaError(result);
129
115
 
130
116
  const [error] = result.getErrors();
131
117
 
@@ -137,9 +123,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
137
123
  it('should be equal to 3', async () => {
138
124
  rawStateTransition.type = 666;
139
125
 
140
- const result = await validateIdentityTopUpTransitionBasic(rawStateTransition);
126
+ const result = await validateIdentityTopUpTransitionBasic(
127
+ rawStateTransition, executionContext,
128
+ );
141
129
 
142
- expectJsonSchemaError(result);
130
+ await expectJsonSchemaError(result);
143
131
 
144
132
  const [error] = result.getErrors();
145
133
 
@@ -155,9 +143,10 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
155
143
 
156
144
  const result = await validateIdentityTopUpTransitionBasic(
157
145
  rawStateTransition,
146
+ executionContext,
158
147
  );
159
148
 
160
- expectJsonSchemaError(result);
149
+ await expectJsonSchemaError(result);
161
150
 
162
151
  const [error] = result.getErrors();
163
152
 
@@ -169,9 +158,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
169
158
  it('should be an object', async () => {
170
159
  rawStateTransition.assetLockProof = 1;
171
160
 
172
- const result = await validateIdentityTopUpTransitionBasic(rawStateTransition);
161
+ const result = await validateIdentityTopUpTransitionBasic(
162
+ rawStateTransition, executionContext,
163
+ );
173
164
 
174
- expectJsonSchemaError(result, 1);
165
+ await expectJsonSchemaError(result, 1);
175
166
 
176
167
  const [error] = result.getErrors();
177
168
 
@@ -180,29 +171,18 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
180
171
  });
181
172
 
182
173
  it('should be valid', async () => {
183
- const assetLockError = new SomeConsensusError('test');
184
- const assetLockResult = new ValidationResult([
185
- assetLockError,
186
- ]);
187
-
188
- proofValidationFunctionsByTypeMock[InstantAssetLockProof.type].resolves(assetLockResult);
174
+ stateRepositoryMock.verifyInstantLock.resolves(false);
189
175
 
190
176
  const result = await validateIdentityTopUpTransitionBasic(
191
177
  rawStateTransition,
192
178
  executionContext,
193
179
  );
194
180
 
195
- expectValidationError(result);
181
+ await expectValidationError(result);
196
182
 
197
183
  const [error] = result.getErrors();
198
184
 
199
- expect(error).to.equal(assetLockError);
200
-
201
- expect(proofValidationFunctionsByTypeMock[InstantAssetLockProof.type])
202
- .to.be.calledOnceWithExactly(
203
- rawStateTransition.assetLockProof,
204
- executionContext,
205
- );
185
+ expect(error).to.be.instanceOf(InvalidInstantAssetLockProofSignatureError);
206
186
  });
207
187
  });
208
188
 
@@ -215,7 +195,7 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
215
195
  executionContext,
216
196
  );
217
197
 
218
- expectJsonSchemaError(result);
198
+ await expectJsonSchemaError(result);
219
199
 
220
200
  const [error] = result.getErrors();
221
201
 
@@ -232,14 +212,12 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
232
212
  executionContext,
233
213
  );
234
214
 
235
- expectJsonSchemaError(result, 2);
215
+ await expectJsonSchemaError(result, 32);
236
216
 
237
- const [error, byteArrayError] = result.getErrors();
217
+ const [error] = result.getErrors();
238
218
 
239
219
  expect(error.getInstancePath()).to.equal('/identityId/0');
240
220
  expect(error.getKeyword()).to.equal('type');
241
-
242
- expect(byteArrayError.getKeyword()).to.equal('byteArray');
243
221
  });
244
222
 
245
223
  it('should be no less than 32 bytes', async () => {
@@ -250,11 +228,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
250
228
  executionContext,
251
229
  );
252
230
 
253
- expectJsonSchemaError(result);
231
+ await expectJsonSchemaError(result);
254
232
 
255
233
  const [error] = result.getErrors();
256
234
 
257
- expect(error.instancePath).to.equal('/identityId');
235
+ expect(error.getInstancePath()).to.equal('/identityId');
258
236
  expect(error.getKeyword()).to.equal('minItems');
259
237
  });
260
238
 
@@ -266,11 +244,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
266
244
  executionContext,
267
245
  );
268
246
 
269
- expectJsonSchemaError(result);
247
+ await expectJsonSchemaError(result);
270
248
 
271
249
  const [error] = result.getErrors();
272
250
 
273
- expect(error.instancePath).to.equal('/identityId');
251
+ expect(error.getInstancePath()).to.equal('/identityId');
274
252
  expect(error.getKeyword()).to.equal('maxItems');
275
253
  });
276
254
  });
@@ -284,11 +262,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
284
262
  executionContext,
285
263
  );
286
264
 
287
- expectJsonSchemaError(result);
265
+ await expectJsonSchemaError(result);
288
266
 
289
267
  const [error] = result.getErrors();
290
268
 
291
- expect(error.instancePath).to.equal('');
269
+ expect(error.getInstancePath()).to.equal('');
292
270
  expect(error.getKeyword()).to.equal('required');
293
271
  expect(error.getParams().missingProperty).to.equal('signature');
294
272
  });
@@ -301,14 +279,12 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
301
279
  executionContext,
302
280
  );
303
281
 
304
- expectJsonSchemaError(result, 2);
282
+ await expectJsonSchemaError(result, 65);
305
283
 
306
- const [error, byteArrayError] = result.getErrors();
284
+ const [error] = result.getErrors();
307
285
 
308
- expect(error.instancePath).to.equal('/signature/0');
286
+ expect(error.getInstancePath()).to.equal('/signature/0');
309
287
  expect(error.getKeyword()).to.equal('type');
310
-
311
- expect(byteArrayError.getKeyword()).to.equal('byteArray');
312
288
  });
313
289
 
314
290
  it('should be not shorter than 65 bytes', async () => {
@@ -319,11 +295,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
319
295
  executionContext,
320
296
  );
321
297
 
322
- expectJsonSchemaError(result);
298
+ await expectJsonSchemaError(result);
323
299
 
324
300
  const [error] = result.getErrors();
325
301
 
326
- expect(error.instancePath).to.equal('/signature');
302
+ expect(error.getInstancePath()).to.equal('/signature');
327
303
  expect(error.getKeyword()).to.equal('minItems');
328
304
  });
329
305
 
@@ -335,11 +311,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
335
311
  executionContext,
336
312
  );
337
313
 
338
- expectJsonSchemaError(result);
314
+ await expectJsonSchemaError(result);
339
315
 
340
316
  const [error] = result.getErrors();
341
317
 
342
- expect(error.instancePath).to.equal('/signature');
318
+ expect(error.getInstancePath()).to.equal('/signature');
343
319
  expect(error.getKeyword()).to.equal('maxItems');
344
320
  });
345
321
  });
@@ -351,11 +327,5 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
351
327
  );
352
328
 
353
329
  expect(result.isValid()).to.be.true();
354
-
355
- expect(proofValidationFunctionsByTypeMock[InstantAssetLockProof.type])
356
- .to.be.calledOnceWithExactly(
357
- rawStateTransition.assetLockProof,
358
- executionContext,
359
- );
360
330
  });
361
331
  });