@dashevo/wasm-dpp 0.25.0-dev.8 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/Cargo.toml +33 -7
  2. package/README.md +11 -6
  3. package/dist/errors/patchConsensusErrors.js +94 -115
  4. package/dist/wasm/wasm_dpp.d.ts +2213 -4113
  5. package/dist/wasm/wasm_dpp.js +17748 -2639
  6. package/dist/wasm/wasm_dpp_bg.js +1 -1
  7. package/lib/dpp.ts +1 -1
  8. package/lib/errors/patchConsensusErrors.ts +94 -93
  9. package/lib/test/bootstrap.js +5 -0
  10. package/lib/test/fixtures/getDataContractFixture.js +11 -5
  11. package/lib/test/fixtures/getDocumentsFixture.js +9 -5
  12. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
  13. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
  14. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  15. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  16. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  17. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  18. package/lib/test/fixtures/js/generateRandomIdentifier.js +1 -0
  19. package/lib/test/fixtures/js/getChainAssetLockProofFixture.js +1 -0
  20. package/lib/test/fixtures/js/getDataContractFixture.js +1 -0
  21. package/lib/test/fixtures/js/getDocumentTransitionsFixture.js +1 -0
  22. package/lib/test/fixtures/js/getDocumentsFixture.js +1 -0
  23. package/lib/test/fixtures/js/getInstantAssetLockProofFixture.js +1 -0
  24. package/lib/test/mocks/createStateRepositoryMock.js +1 -0
  25. package/lib/wasm/wasm_dpp.d.ts +2213 -4113
  26. package/package.json +6 -6
  27. package/scripts/build-wasm.sh +30 -29
  28. package/src/bls_adapter.rs +1 -1
  29. package/src/dash_platform_protocol.rs +173 -196
  30. package/src/data_contract/data_contract.rs +309 -199
  31. package/src/data_contract/data_contract_facade.rs +28 -47
  32. package/src/data_contract/errors/mod.rs +1 -0
  33. package/src/data_contract/mod.rs +2 -2
  34. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +92 -79
  35. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
  36. package/src/data_contract_factory/data_contract_factory.rs +43 -83
  37. package/src/document/document_facade.rs +81 -76
  38. package/src/document/errors/document_already_exists_error.rs +6 -6
  39. package/src/document/errors/document_no_revision_error.rs +1 -0
  40. package/src/document/errors/document_not_provided_error.rs +6 -6
  41. package/src/document/errors/invalid_document_action_error.rs +11 -7
  42. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  43. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  44. package/src/document/errors/mod.rs +5 -0
  45. package/src/document/errors/revision_absent_error.rs +6 -6
  46. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  47. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  48. package/src/document/extended_document.rs +76 -76
  49. package/src/document/factory.rs +140 -119
  50. package/src/document/generate_document_id.rs +2 -2
  51. package/src/document/mod.rs +164 -150
  52. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +50 -48
  53. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  54. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  55. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +165 -153
  56. package/src/document/state_transition/document_batch_transition/mod.rs +232 -222
  57. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
  58. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
  59. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
  60. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
  61. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
  62. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
  63. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
  64. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
  65. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
  66. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
  67. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
  68. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
  69. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
  70. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
  71. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
  72. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
  73. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
  74. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
  75. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
  76. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
  77. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
  78. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
  79. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
  80. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
  81. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
  82. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
  83. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
  84. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
  85. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
  86. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
  87. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
  88. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
  89. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
  90. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
  91. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
  92. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
  93. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
  94. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -9
  95. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
  96. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
  97. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
  98. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
  99. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
  100. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
  101. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
  102. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
  103. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
  104. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
  105. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
  106. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
  107. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
  108. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
  109. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
  110. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
  111. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
  112. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
  113. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
  114. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
  115. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
  116. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
  117. package/src/errors/consensus/basic/json_schema_error.rs +1 -9
  118. package/src/errors/consensus/basic/mod.rs +2 -0
  119. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -9
  120. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  121. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -9
  122. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
  123. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
  124. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
  125. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  126. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
  127. package/src/errors/consensus/consensus_error.rs +44 -21
  128. package/src/errors/consensus/deserialize.rs +2 -1
  129. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
  130. package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
  131. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
  132. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
  133. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
  134. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
  135. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
  136. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
  137. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -1
  138. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
  139. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
  140. package/src/errors/consensus/state/data_contract/mod.rs +7 -1
  141. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
  142. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
  143. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
  144. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
  145. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
  146. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
  147. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
  148. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
  149. package/src/errors/consensus/state/document/mod.rs +2 -0
  150. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
  151. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
  152. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
  153. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
  154. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
  155. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
  156. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
  157. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
  158. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
  159. package/src/errors/consensus/value_error.rs +1 -9
  160. package/src/errors/from.rs +12 -8
  161. package/src/errors/mod.rs +7 -7
  162. package/src/errors/value_error.rs +5 -0
  163. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
  164. package/src/identity/factory_utils.rs +13 -13
  165. package/src/identity/identity.rs +275 -0
  166. package/src/identity/identity_facade.rs +87 -70
  167. package/src/identity/identity_factory.rs +74 -54
  168. package/src/identity/identity_public_key/mod.rs +87 -64
  169. package/src/identity/mod.rs +25 -247
  170. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  171. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  172. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +2 -2
  173. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  174. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  175. package/src/identity/state_transition/asset_lock_proof/mod.rs +112 -116
  176. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +71 -65
  177. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  178. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  179. package/src/identity/state_transition/identity_create_transition/to_object.rs +10 -12
  180. package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
  181. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
  182. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
  183. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
  184. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
  185. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
  186. package/src/identity/state_transition/identity_public_key_transitions.rs +89 -75
  187. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +67 -62
  188. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  189. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  190. package/src/identity/state_transition/identity_topup_transition/to_object.rs +8 -12
  191. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  192. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
  193. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  194. package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
  195. package/src/identity/state_transition/mod.rs +5 -2
  196. package/src/identity/state_transition/transition_types.rs +34 -0
  197. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  198. package/src/lib.rs +10 -11
  199. package/src/metadata.rs +3 -3
  200. package/src/protocol_version.rs +7 -0
  201. package/src/state_transition/conversion.rs +11 -1
  202. package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
  203. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  204. package/src/state_transition/mod.rs +137 -139
  205. package/src/state_transition/state_transition_facade.rs +11 -11
  206. package/src/state_transition/state_transition_factory.rs +142 -153
  207. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  208. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +28 -10
  209. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  210. package/src/utils.rs +7 -8
  211. package/src/validation/validation_result.rs +1 -0
  212. package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
  213. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
  214. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
  215. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
  216. package/test/integration/document/Document.spec.js +3 -3
  217. package/test/integration/document/DocumentFacade.spec.js +39 -38
  218. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +6 -7
  219. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
  220. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +2 -2
  221. package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
  222. package/test/integration/identity/IdentityFacade.spec.js +33 -62
  223. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
  224. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
  225. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  226. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
  227. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  228. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
  229. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
  230. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +4 -5
  231. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
  232. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +3 -7
  233. package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
  234. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
  235. package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
  236. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  237. package/test/unit/DashPlatformProtocol.spec.js +10 -25
  238. package/test/unit/dataContract/DataContract.spec.js +119 -148
  239. package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
  240. package/test/unit/dataContract/createDataContract.spec.js +6 -6
  241. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  242. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
  243. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +7 -9
  244. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
  245. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +28 -19
  246. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +7 -7
  247. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
  248. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
  249. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
  250. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +1 -1
  251. package/test/unit/document/Document.spec.js +31 -20
  252. package/test/unit/document/DocumentFactory.spec.js +45 -110
  253. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  254. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +6 -7
  255. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +11 -12
  256. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
  257. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
  258. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +1 -1
  259. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +1 -1
  260. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +1 -1
  261. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +9 -9
  262. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
  263. package/test/unit/identity/Identity.spec.js +46 -81
  264. package/test/unit/identity/IdentityFactory.spec.js +61 -75
  265. package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
  266. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
  267. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +9 -15
  268. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
  269. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
  270. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +9 -13
  271. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
  272. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
  273. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +4 -4
  274. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
  275. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
  276. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  277. package/test/unit/stateTransition/StateTransitionFactory.spec.js +16 -22
  278. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
  279. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
  280. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
  281. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
  282. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
  283. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  284. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  285. package/test-d/index.test-d.ts +2 -2
  286. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  287. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  288. package/src/decode_protocol_entity.rs +0 -25
  289. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
  290. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
  291. package/test/integration/util/generateEntropy.spec.js +0 -17
  292. package/test/integration/util/serializer.spec.js +0 -24
  293. package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
  294. package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
  295. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
@@ -5,7 +5,7 @@ const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/
5
5
  const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
6
6
  const { default: loadWasmpDpp } = require('../../../../../dist');
7
7
 
8
- describe('fetchAssetLockPublicKeyHashFactory', () => {
8
+ describe.skip('fetchAssetLockPublicKeyHashFactory', () => {
9
9
  let fetchAssetLockPublicKeyHash;
10
10
  let stateRepositoryMock;
11
11
  let executionContext;
@@ -0,0 +1,130 @@
1
+ const getIdentityCreditTransferTransitionFixture = require('../../../../../lib/test/fixtures/getIdentityCreditTransferTransitionFixture');
2
+
3
+ const {
4
+ Identifier, StateTransitionTypes,
5
+ } = require('../../../../..');
6
+
7
+ describe('IdentityCreditTransferTransition', () => {
8
+ let rawStateTransition;
9
+ let stateTransition;
10
+
11
+ beforeEach(async () => {
12
+ stateTransition = await getIdentityCreditTransferTransitionFixture();
13
+ rawStateTransition = stateTransition.toObject();
14
+ });
15
+
16
+ describe('#constructor', () => {
17
+ it('should create an instance with specified data from specified raw transition', () => {
18
+ expect(stateTransition.getIdentityId().toBuffer()).to.be.deep.equal(
19
+ rawStateTransition.identityId,
20
+ );
21
+
22
+ expect(stateTransition.getRecipientId().toBuffer()).to.be.deep.equal(
23
+ rawStateTransition.recipientId,
24
+ );
25
+
26
+ expect(stateTransition.getAmount()).to.be.equal(
27
+ rawStateTransition.amount,
28
+ );
29
+ });
30
+ });
31
+
32
+ describe('#getType', () => {
33
+ it('should return IDENTITY_CREDIT_TRANSFER type', () => {
34
+ expect(stateTransition.getType()).to.equal(StateTransitionTypes.IdentityCreditTransfer);
35
+ });
36
+ });
37
+
38
+ describe('#getIdentityId', () => {
39
+ it('should return identity id', () => {
40
+ expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(
41
+ rawStateTransition.identityId,
42
+ );
43
+ });
44
+ });
45
+
46
+ describe('#getRecipientId', () => {
47
+ it('should return recipient id', () => {
48
+ expect(stateTransition.getRecipientId().toBuffer()).to.deep.equal(
49
+ rawStateTransition.recipientId,
50
+ );
51
+ });
52
+ });
53
+
54
+ describe('#toObject', () => {
55
+ it('should return raw state transition', () => {
56
+ rawStateTransition = stateTransition.toObject();
57
+
58
+ expect(rawStateTransition).to.deep.equal({
59
+ $version: '0',
60
+ type: StateTransitionTypes.IdentityCreditTransfer,
61
+ identityId: rawStateTransition.identityId,
62
+ recipientId: rawStateTransition.recipientId,
63
+ amount: rawStateTransition.amount,
64
+ signature: undefined,
65
+ signaturePublicKeyId: undefined,
66
+ });
67
+ });
68
+
69
+ it('should return raw state transition', () => {
70
+ rawStateTransition = stateTransition.toObject({ skipSignature: true });
71
+
72
+ expect(rawStateTransition).to.deep.equal({
73
+ $version: '0',
74
+ type: StateTransitionTypes.IdentityCreditTransfer,
75
+ identityId: rawStateTransition.identityId,
76
+ recipientId: rawStateTransition.recipientId,
77
+ amount: rawStateTransition.amount,
78
+ });
79
+ });
80
+ });
81
+
82
+ describe('#toJSON', () => {
83
+ it('should return JSON representation of state transition', () => {
84
+ const jsonStateTransition = stateTransition.toJSON();
85
+
86
+ expect(jsonStateTransition).to.deep.equal({
87
+ $version: '0',
88
+ type: StateTransitionTypes.IdentityCreditTransfer,
89
+ identityId: new Identifier(rawStateTransition.identityId).toString(),
90
+ recipientId: new Identifier(rawStateTransition.recipientId).toString(),
91
+ amount: rawStateTransition.amount,
92
+ signature: undefined,
93
+ signaturePublicKeyId: undefined,
94
+ });
95
+ });
96
+ });
97
+
98
+ describe('#getModifiedDataIds', () => {
99
+ it('should return ids of topped up identity', () => {
100
+ const result = stateTransition.getModifiedDataIds();
101
+
102
+ expect(result.length).to.be.equal(2);
103
+ const [identityId, recipientId] = result;
104
+
105
+ expect(identityId).to.be.an.instanceOf(Identifier);
106
+ expect(identityId.toBuffer()).to.be.deep.equal(rawStateTransition.identityId);
107
+
108
+ expect(recipientId).to.be.an.instanceOf(Identifier);
109
+ expect(recipientId.toBuffer()).to.be.deep.equal(rawStateTransition.recipientId);
110
+ });
111
+ });
112
+
113
+ describe('#isDataContractStateTransition', () => {
114
+ it('should return false', () => {
115
+ expect(stateTransition.isDataContractStateTransition()).to.be.false();
116
+ });
117
+ });
118
+
119
+ describe('#isDocumentStateTransition', () => {
120
+ it('should return false', () => {
121
+ expect(stateTransition.isDocumentStateTransition()).to.be.false();
122
+ });
123
+ });
124
+
125
+ describe('#isIdentityStateTransition', () => {
126
+ it('should return true', () => {
127
+ expect(stateTransition.isIdentityStateTransition()).to.be.true();
128
+ });
129
+ });
130
+ });
@@ -1,7 +1,7 @@
1
1
  const { expect } = require('chai');
2
2
  const { default: loadWasmDpp } = require('../../../dist');
3
3
 
4
- describe('StateTransitionExecutionContext', () => {
4
+ describe.skip('StateTransitionExecutionContext', () => {
5
5
  let ReadOperation;
6
6
  let PreCalculatedOperation;
7
7
  let SignatureVerificationOperation;
@@ -1,11 +1,9 @@
1
- const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
1
+ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
2
2
 
3
- const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
3
+ // const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock');
4
4
 
5
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
6
-
7
- const { default: loadWasmDpp } = require('../../../dist');
8
- const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
5
+ const { default: loadWasmDpp } = require('../../..');
6
+ // const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
9
7
 
10
8
  describe('StateTransitionFactory', function main() {
11
9
  this.timeout(100000);
@@ -13,7 +11,7 @@ describe('StateTransitionFactory', function main() {
13
11
  let factory;
14
12
  let stateTransition;
15
13
  let rawStateTransition;
16
- let stateRepositoryMock;
14
+ // let stateRepositoryMock;
17
15
  let StateTransitionFactory;
18
16
  let DataContractCreateTransition;
19
17
  let InvalidStateTransitionError;
@@ -28,31 +26,24 @@ describe('StateTransitionFactory', function main() {
28
26
  } = await loadWasmDpp());
29
27
  });
30
28
 
31
- beforeEach(async function beforeEach() {
32
- const dataContract = getDataContractFixture();
29
+ beforeEach(async () => {
30
+ const dataContract = await getDataContractFixture();
33
31
 
34
32
  const rawDataContract = dataContract.toObject();
35
33
 
36
34
  stateTransition = new DataContractCreateTransition({
37
- protocolVersion: protocolVersion.latestVersion,
38
35
  dataContract: rawDataContract,
39
36
  entropy: dataContract.getEntropy(),
40
37
  signature: Buffer.alloc(65),
41
38
  signaturePublicKeyId: 0,
42
39
  });
43
- rawStateTransition = stateTransition.toObject();
44
-
45
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
46
40
 
47
- const blsAdapter = await getBlsAdapterMock();
41
+ rawStateTransition = stateTransition.toObject();
48
42
 
49
- factory = new StateTransitionFactory(
50
- stateRepositoryMock,
51
- blsAdapter,
52
- );
43
+ factory = new StateTransitionFactory();
53
44
  });
54
45
 
55
- describe('createFromObject', () => {
46
+ describe.skip('createFromObject', () => {
56
47
  it('should return new State Transition with data from passed object', async () => {
57
48
  const result = await factory.createFromObject(rawStateTransition);
58
49
 
@@ -81,16 +72,19 @@ describe('StateTransitionFactory', function main() {
81
72
  });
82
73
  });
83
74
 
84
- describe('createFromBuffer', () => {
75
+ // TODO: It should work
76
+ describe.skip('createFromBuffer', () => {
85
77
  it('should return new State Transition from serialized contract', async () => {
86
- const result = await factory.createFromBuffer(stateTransition.toBuffer());
78
+ const buffer = stateTransition.toBuffer();
79
+
80
+ const result = await factory.createFromBuffer(buffer);
87
81
 
88
82
  expect(result.toObject()).to.deep.equal(stateTransition.toObject());
89
83
  });
90
84
 
91
85
  it.skip('should throw InvalidStateTransition error in case validation failed', async () => {
92
86
  // CBOR that have invalid "type" property
93
- // TODO: make it an actually missing field isntead of an invalid value
87
+ // TODO: make it an actually missing field instead of an invalid value
94
88
  const stateTransitionHex = '01a56c64617461436f6e7472616374a66f70726f746f636f6c56657273696f6e0163246964982018a318b611186f184718781848187d186318441830182c185518fe18e318ff188b18eb185918490218ac1831187b1873184a182c18d9189b1886182418bf6724736368656d61783468747470733a2f2f736368656d612e646173682e6f72672f6470702d302d342d302f6d6574612f646174612d636f6e74726163746776657273696f6e01676f776e657249649820187618a6185c189e18651833183d18aa02189e0d18a61869182818c107183e188908184f183818d018220418c01839161860187418ae18dd189969646f63756d656e7473a76f696e6465786564446f63756d656e74a56474797065666f626a65637467696e646963657386a3646e616d6566696e646578316a70726f7065727469657382a168246f776e6572496463617363a16966697273744e616d656361736366756e69717565f5a3646e616d6566696e646578326a70726f7065727469657382a168246f776e6572496463617363a1686c6173744e616d656361736366756e69717565f5a3646e616d6566696e646578336a70726f7065727469657381a1686c6173744e616d656361736366756e69717565f4a2646e616d6566696e646578346a70726f7065727469657382a16a2463726561746564417463617363a16a2475706461746564417463617363a2646e616d6566696e646578356a70726f7065727469657381a16a2475706461746564417463617363a2646e616d6566696e646578366a70726f7065727469657381a16a24637265617465644174636173636a70726f70657274696573a36966697273744e616d65a2647479706566737472696e67696d61784c656e677468183f686c6173744e616d65a2647479706566737472696e67696d61784c656e677468183f6d6f7468657250726f7065727479a2647479706566737472696e67696d61784c656e677468182a687265717569726564846966697273744e616d656a246372656174656441746a24757064617465644174686c6173744e616d65746164646974696f6e616c50726f70657274696573f46c6e696365446f63756d656e74a46474797065666f626a6563746a70726f70657274696573a1646e616d65a1647479706566737472696e67687265717569726564816a24637265617465644174746164646974696f6e616c50726f70657274696573f46e6e6f54696d65446f63756d656e74a36474797065666f626a6563746a70726f70657274696573a1646e616d65a1647479706566737472696e67746164646974696f6e616c50726f70657274696573f4781d6f7074696f6e616c556e69717565496e6465786564446f63756d656e74a56474797065666f626a6563746a70726f70657274696573a46966697273744e616d65a2647479706566737472696e67696d61784c656e677468183f686c6173744e616d65a2647479706566737472696e67696d61784c656e677468183f67636f756e747279a2647479706566737472696e67696d61784c656e677468183f6463697479a2647479706566737472696e67696d61784c656e677468183f67696e646963657383a3646e616d6566696e646578316a70726f7065727469657381a16966697273744e616d656361736366756e69717565f5a3646e616d6566696e646578326a70726f7065727469657383a168246f776e6572496463617363a16966697273744e616d6563617363a1686c6173744e616d656361736366756e69717565f5a3646e616d6566696e646578336a70726f7065727469657382a167636f756e74727963617363a164636974796361736366756e69717565f5687265717569726564826966697273744e616d65686c6173744e616d65746164646974696f6e616c50726f70657274696573f46e707265747479446f63756d656e74a46474797065666f626a6563746a70726f70657274696573a1686c6173744e616d65a1647479706566737472696e6768726571756972656482686c6173744e616d656a24757064617465644174746164646974696f6e616c50726f70657274696573f46b756e697175654461746573a56474797065666f626a65637467696e646963657382a3646e616d6566696e646578316a70726f7065727469657382a16a2463726561746564417463617363a16a247570646174656441746361736366756e69717565f5a2646e616d6566696e646578326a70726f7065727469657381a16a24757064617465644174636173636a70726f70657274696573a26966697273744e616d65a1647479706566737472696e67686c6173744e616d65a1647479706566737472696e67687265717569726564836966697273744e616d656a246372656174656441746a24757064617465644174746164646974696f6e616c50726f70657274696573f46e7769746842797465417272617973a56474797065666f626a65637467696e646963657381a2646e616d6566696e646578316a70726f7065727469657381a16e6279746541727261794669656c64636173636a70726f70657274696573a26e6279746541727261794669656c64a3647479706565617272617969627974654172726179f5686d61784974656d73106f6964656e7469666965724669656c64a5647479706565617272617969627974654172726179f570636f6e74656e744d656469615479706578216170706c69636174696f6e2f782e646173682e6470702e6964656e746966696572686d696e4974656d731820686d61784974656d731820687265717569726564816e6279746541727261794669656c64746164646974696f6e616c50726f70657274696573f464747970652267656e74726f70799820189618d10418b2071882188e188818fc18b7189818dd185c18811881189b1867187912183d184d187118ff1866181d185f1839188718ea1824185113747369676e61747572655075626c69634b6579496400697369676e617475726598410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
95
89
  const stateTransitionBuffer = Buffer.from(stateTransitionHex, 'hex');
96
90
 
@@ -1,32 +1,53 @@
1
- const createStateTransitionFactory = require('@dashevo/dpp/lib/stateTransition/createStateTransitionFactory');
2
-
3
- const DataContractCreateTransition = require('@dashevo/dpp/lib/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition');
4
- const DocumentsBatchTransition = require('@dashevo/dpp/lib/document/stateTransition/DocumentsBatchTransition/DocumentsBatchTransition');
5
-
6
- const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
7
- const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
8
- const getDocumentTranstionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture');
9
-
10
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
11
-
12
- const InvalidStateTransitionTypeError = require('@dashevo/dpp/lib/stateTransition/errors/InvalidStateTransitionTypeError');
13
-
14
- describe('createStateTransitionFactory', () => {
1
+ const crypto = require('crypto');
2
+
3
+ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
4
+ const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture');
5
+ const getDocumentTransitionsFixture = require('../../../lib/test/fixtures/getDocumentTransitionsFixture');
6
+
7
+ const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock');
8
+ const { default: loadWasmDpp } = require('../../..');
9
+ const {
10
+ DashPlatformProtocol,
11
+ DataContractCreateTransition,
12
+ DocumentsBatchTransition,
13
+ InvalidStateTransitionTypeError,
14
+ } = require('../../..');
15
+ const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
16
+
17
+ describe.skip('createStateTransitionFactory', () => {
15
18
  let createStateTransition;
16
19
  let stateRepositoryMock;
17
20
  let dataContract;
21
+ let dpp;
22
+ let blsAdapter;
18
23
 
19
- beforeEach(function beforeEach() {
20
- dataContract = getDataContractFixture();
24
+ before(async () => {
25
+ await loadWasmDpp();
26
+ });
27
+
28
+ beforeEach(async function beforeEach() {
29
+ blsAdapter = await getBlsAdapterMock();
21
30
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
31
+
32
+ dpp = new DashPlatformProtocol(
33
+ blsAdapter,
34
+ stateRepositoryMock,
35
+ { generate: () => crypto.randomBytes(32) },
36
+ 1,
37
+ );
38
+
39
+ dataContract = await getDataContractFixture();
22
40
  stateRepositoryMock.fetchDataContract.resolves(dataContract);
23
- createStateTransition = createStateTransitionFactory(stateRepositoryMock);
41
+ createStateTransition = (st) => dpp.stateTransition.createFromObject(
42
+ st, { skipValidation: true },
43
+ );
24
44
  });
25
45
 
26
46
  it('should return DataContractCreateTransition if type is DATA_CONTRACT_CREATE', async () => {
27
47
  const stateTransition = new DataContractCreateTransition({
28
48
  dataContract: dataContract.toObject(),
29
49
  entropy: dataContract.getEntropy(),
50
+ protocolVersion: 1,
30
51
  });
31
52
 
32
53
  const result = await createStateTransition(stateTransition.toObject());
@@ -36,13 +57,14 @@ describe('createStateTransitionFactory', () => {
36
57
  });
37
58
 
38
59
  it('should return DocumentsBatchTransition if type is DOCUMENTS', async () => {
39
- const documents = getDocumentsFixture(dataContract);
40
- const documentTransitions = getDocumentTranstionsFixture({
60
+ const documents = await getDocumentsFixture(dataContract);
61
+ const ownerId = documents[0].getOwnerId();
62
+ const documentTransitions = getDocumentTransitionsFixture({
41
63
  create: documents,
42
64
  });
43
65
 
44
66
  const stateTransition = new DocumentsBatchTransition({
45
- ownerId: getDocumentsFixture.ownerId,
67
+ ownerId,
46
68
  contractId: dataContract.getId(),
47
69
  transitions: documentTransitions.map((t) => t.toObject()),
48
70
  }, [dataContract]);
@@ -57,7 +79,7 @@ describe('createStateTransitionFactory', () => {
57
79
 
58
80
  it('should throw InvalidStateTransitionTypeError if type is invalid', async () => {
59
81
  const rawStateTransition = {
60
- type: 666,
82
+ type: 253,
61
83
  };
62
84
 
63
85
  try {
@@ -16,7 +16,7 @@ let {
16
16
  StateTransitionExecutionContext,
17
17
  } = require('../../../..');
18
18
 
19
- describe('validateStateTransitionBasicFactory', () => {
19
+ describe.skip('validateStateTransitionBasicFactory', () => {
20
20
  let rawStateTransition;
21
21
  let dataContract;
22
22
  let stateTransition;
@@ -87,11 +87,11 @@ describe('validateStateTransitionBasicFactory', () => {
87
87
  expect(error).to.instanceof(JsonSchemaError);
88
88
  });
89
89
 
90
- it('should return invalid result if ST size is more than 16 kb', async () => {
90
+ it('should return invalid result if ST size is more than 25 kb', async () => {
91
91
  const largeDocument = rawStateTransition.dataContract.documents.niceDocument;
92
92
 
93
93
  // generate big state transition
94
- for (let i = 0; i < 6; i++) {
94
+ for (let i = 0; i < 7; i++) {
95
95
  largeDocument.properties[`name${i}`] = { type: 'string' };
96
96
  }
97
97
  for (let i = 0; i < 90; i++) {
@@ -18,7 +18,7 @@ let {
18
18
  } = require('../../../..');
19
19
  const { default: loadWasmDpp } = require('../../../..');
20
20
 
21
- describe('validateStateTransitionFeeFactory', () => {
21
+ describe.skip('validateStateTransitionFeeFactory', () => {
22
22
  let stateRepositoryMock;
23
23
  let validateStateTransitionFee;
24
24
  let dataContract;
@@ -42,10 +42,9 @@ describe('validateStateTransitionFeeFactory', () => {
42
42
 
43
43
  const validator = new StateTransitionFeeValidator(stateRepositoryMock);
44
44
 
45
- validateStateTransitionFee = (st) => validator.validate(st);
46
-
47
45
  executionContext = new StateTransitionExecutionContext();
48
46
  executionContext.disableDryRun();
47
+ validateStateTransitionFee = (st) => validator.validate(st, executionContext);
49
48
 
50
49
  dataContract = await getDataContractFixture();
51
50
  });
@@ -61,7 +60,6 @@ describe('validateStateTransitionFeeFactory', () => {
61
60
 
62
61
  it('should return invalid result if balance is not enough', async () => {
63
62
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
64
- dataContractCreateTransition.setExecutionContext(executionContext);
65
63
  stateRepositoryMock.fetchIdentityBalance.resolves(1);
66
64
 
67
65
  const result = await validateStateTransitionFee(dataContractCreateTransition);
@@ -83,7 +81,6 @@ describe('validateStateTransitionFeeFactory', () => {
83
81
  stateRepositoryMock.fetchIdentityBalance.resolves(42);
84
82
 
85
83
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
86
- dataContractCreateTransition.setExecutionContext(executionContext);
87
84
 
88
85
  const result = await validateStateTransitionFee(dataContractCreateTransition);
89
86
 
@@ -112,7 +109,6 @@ describe('validateStateTransitionFeeFactory', () => {
112
109
  stateRepositoryMock.fetchIdentityBalance.resolves(1);
113
110
 
114
111
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
115
- documentsBatchTransition.setExecutionContext(executionContext);
116
112
 
117
113
  const result = await validateStateTransitionFee(documentsBatchTransition);
118
114
 
@@ -133,7 +129,6 @@ describe('validateStateTransitionFeeFactory', () => {
133
129
  stateRepositoryMock.fetchIdentityBalance.resolves(42);
134
130
 
135
131
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
136
- documentsBatchTransition.setExecutionContext(executionContext);
137
132
 
138
133
  const result = await validateStateTransitionFee(documentsBatchTransition);
139
134
 
@@ -151,11 +146,10 @@ describe('validateStateTransitionFeeFactory', () => {
151
146
  executionContext.enableDryRun();
152
147
 
153
148
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
154
- documentsBatchTransition.setExecutionContext(executionContext);
155
149
 
156
150
  const result = await validateStateTransitionFee(documentsBatchTransition);
157
151
 
158
- documentsBatchTransition.getExecutionContext().disableDryRun();
152
+ executionContext.disableDryRun();
159
153
 
160
154
  expect(result.isValid()).to.be.true();
161
155
 
@@ -182,7 +176,6 @@ describe('validateStateTransitionFeeFactory', () => {
182
176
 
183
177
  it('should return invalid result if asset lock output amount is not enough', async () => {
184
178
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount + 1, []));
185
- identityCreateTransition.setExecutionContext(executionContext);
186
179
 
187
180
  const result = await validateStateTransitionFee(identityCreateTransition);
188
181
 
@@ -198,7 +191,6 @@ describe('validateStateTransitionFeeFactory', () => {
198
191
 
199
192
  it('should return valid result', async () => {
200
193
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount, []));
201
- identityCreateTransition.setExecutionContext(executionContext);
202
194
 
203
195
  const result = await validateStateTransitionFee(identityCreateTransition);
204
196
 
@@ -210,11 +202,10 @@ describe('validateStateTransitionFeeFactory', () => {
210
202
  it('should not increase balance on dry run', async () => {
211
203
  executionContext.enableDryRun();
212
204
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount + 1, []));
213
- identityCreateTransition.setExecutionContext(executionContext);
214
205
 
215
206
  const result = await validateStateTransitionFee(identityCreateTransition);
216
207
 
217
- identityCreateTransition.getExecutionContext().disableDryRun();
208
+ executionContext.disableDryRun();
218
209
 
219
210
  expect(result.isValid()).to.be.true();
220
211
  });
@@ -240,7 +231,6 @@ describe('validateStateTransitionFeeFactory', () => {
240
231
  stateRepositoryMock.fetchIdentityBalanceWithDebt.resolves(1);
241
232
 
242
233
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount + 2, []));
243
- identityTopUpTransition.setExecutionContext(executionContext);
244
234
 
245
235
  const result = await validateStateTransitionFee(identityTopUpTransition);
246
236
 
@@ -261,7 +251,6 @@ describe('validateStateTransitionFeeFactory', () => {
261
251
  stateRepositoryMock.fetchIdentityBalanceWithDebt.resolves(41);
262
252
 
263
253
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount - 1, []));
264
- identityTopUpTransition.setExecutionContext(executionContext);
265
254
 
266
255
  const result = await validateStateTransitionFee(identityTopUpTransition);
267
256
 
@@ -278,11 +267,10 @@ describe('validateStateTransitionFeeFactory', () => {
278
267
 
279
268
  executionContext.enableDryRun();
280
269
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount + 42, []));
281
- identityTopUpTransition.setExecutionContext(executionContext);
282
270
 
283
271
  const result = await validateStateTransitionFee(identityTopUpTransition);
284
272
 
285
- identityTopUpTransition.getExecutionContext().disableDryRun();
273
+ executionContext.disableDryRun();
286
274
 
287
275
  expect(result.isValid()).to.be.true();
288
276
 
@@ -22,7 +22,7 @@ let {
22
22
  const getBlsMock = require('../../../../lib/test/mocks/getBlsAdapterMock');
23
23
  const createStateRepositoryMock = require('../../../../lib/test/mocks/createStateRepositoryMock');
24
24
 
25
- describe('validateStateTransitionIdentitySignatureFactory', () => {
25
+ describe.skip('validateStateTransitionIdentitySignatureFactory', () => {
26
26
  let stateTransition;
27
27
  let ownerId;
28
28
  let identity;
@@ -70,12 +70,13 @@ describe('validateStateTransitionIdentitySignatureFactory', () => {
70
70
  identity.addPublicKey(identityPublicKey);
71
71
 
72
72
  stateTransition.sign(identity.getPublicKeyById(2), privateKey, getBlsMock());
73
- stateTransition.setExecutionContext(executionContext);
74
73
 
75
74
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
76
75
  stateRepositoryMock.fetchIdentity.resolves(identity);
77
76
 
78
- validateStateTransitionIdentitySignature = (st) => validate(stateRepositoryMock, st, blsMock);
77
+ validateStateTransitionIdentitySignature = (st) => validate(
78
+ stateRepositoryMock, st, executionContext, blsMock,
79
+ );
79
80
  });
80
81
 
81
82
  it('should pass properly signed state transition', async () => {
@@ -227,10 +228,13 @@ describe('validateStateTransitionIdentitySignatureFactory', () => {
227
228
 
228
229
  expect(error).to.be.instanceOf(InvalidSignaturePublicKeySecurityLevelError);
229
230
  expect(error.getPublicKeySecurityLevel()).to.equal(IdentityPublicKey.SECURITY_LEVELS.MASTER);
230
- expect(error.getKeySecurityLevelRequirement()).to.equal(2);
231
+ expect(error.getKeySecurityLevelRequirement()).to.deep.equal([2]);
231
232
  });
232
233
 
233
- it('should return PublicKeySecurityLevelNotMetConsensusError if PublicKeySecurityLevelNotMetError was thrown', async () => {
234
+ // TODO: the error is not used anymore,
235
+ // remove the test and remaining `match` variants in rs-dpp
236
+ // that still expecting to receive this error?
237
+ it.skip('should return PublicKeySecurityLevelNotMetConsensusError if PublicKeySecurityLevelNotMetError was thrown', async () => {
234
238
  const publicKeys = identity.getPublicKeys();
235
239
  publicKeys[2].setSecurityLevel(IdentityPublicKey.SECURITY_LEVELS.MEDIUM);
236
240
  identity.setPublicKeys(publicKeys);
@@ -1,13 +1,13 @@
1
1
  const { Transaction, PrivateKey, Script } = require('@dashevo/dashcore-lib');
2
2
 
3
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
4
- const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
5
- const getIdentityTopUpTransitionFixture = require('../../../../lib/test/fixtures/getIdentityTopUpTransitionFixtureJs');
3
+ const createStateRepositoryMock = require('../../../../lib/test/mocks/createStateRepositoryMock');
4
+ const getIdentityCreateTransitionFixture = require('../../../../lib/test/fixtures/getIdentityCreateTransitionFixture');
5
+ const getIdentityTopUpTransitionFixture = require('../../../../lib/test/fixtures/getIdentityTopUpTransitionFixture');
6
6
  const { expectValidationError } = require('../../../../lib/test/expect/expectError');
7
7
 
8
8
  const { default: loadWasmDpp } = require('../../../../dist');
9
9
 
10
- describe('validateStateTransitionKeySignatureFactory', () => {
10
+ describe.skip('validateStateTransitionKeySignatureFactory', () => {
11
11
  let stateTransition;
12
12
  let stateRepositoryMock;
13
13
  let validateStateTransitionKeySignature;
@@ -17,7 +17,6 @@ describe('validateStateTransitionKeySignatureFactory', () => {
17
17
  let StateTransitionKeySignatureValidator;
18
18
  let StateTransitionExecutionContext;
19
19
  let IdentityCreateTransition;
20
- let IdentityTopUpTransition;
21
20
  let IdentityNotFoundError;
22
21
  let ValidationResult;
23
22
 
@@ -27,18 +26,14 @@ describe('validateStateTransitionKeySignatureFactory', () => {
27
26
  StateTransitionKeySignatureValidator,
28
27
  StateTransitionExecutionContext,
29
28
  IdentityCreateTransition,
30
- IdentityTopUpTransition,
31
29
  IdentityNotFoundError,
32
30
  ValidationResult,
33
31
  } = await loadWasmDpp());
34
32
  });
35
33
 
36
- beforeEach(function beforeEach() {
34
+ beforeEach(async function beforeEach() {
37
35
  executionContext = new StateTransitionExecutionContext();
38
- const stateTransitionJS = getIdentityCreateTransitionFixture();
39
- const rawStateTransition = stateTransitionJS.toObject();
40
-
41
- stateTransition = new IdentityCreateTransition(rawStateTransition);
36
+ stateTransition = await getIdentityCreateTransitionFixture();
42
37
 
43
38
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
44
39
 
@@ -90,9 +85,8 @@ describe('validateStateTransitionKeySignatureFactory', () => {
90
85
  expect(result.isValid()).to.be.true();
91
86
  });
92
87
 
93
- it('should return IdentityNotFoundError if identity not exist on topup transaction', async function () {
94
- const stateTransitionJS = getIdentityTopUpTransitionFixture();
95
- stateTransition = new IdentityTopUpTransition(stateTransitionJS.toObject());
88
+ it('should return IdentityNotFoundError if identity not exist on topup transaction', async function shouldReturn() {
89
+ stateTransition = await getIdentityTopUpTransitionFixture();
96
90
  stateRepositoryMock.fetchIdentityBalance.resolves(undefined);
97
91
 
98
92
  const result = await validateStateTransitionKeySignature(
@@ -12,7 +12,7 @@ let {
12
12
  StateTransitionExecutionContext,
13
13
  } = require('../../../..');
14
14
 
15
- describe('validateStateTransitionStateFactory', () => {
15
+ describe.skip('validateStateTransitionStateFactory', () => {
16
16
  let stateTransition;
17
17
  let dpp;
18
18
  let stateRepositoryMock;
@@ -8,7 +8,7 @@ let {
8
8
  } = require('../../..');
9
9
  const { default: loadWasmDpp } = require('../../..');
10
10
 
11
- describe('validateProtocolVersionFactory', () => {
11
+ describe.skip('validateProtocolVersionFactory', () => {
12
12
  let protocolVersionValidator;
13
13
  let versionCompatibilityMap;
14
14
  let currentProtocolVersion;
@@ -7,7 +7,7 @@ import loadDpp, { DPPModule, DashPlatformProtocol, Identifier } from "..";
7
7
  expectType<Promise<DPPModule>>(loadDpp());
8
8
 
9
9
  // Tests that dist exports wasm-dpp exported classes (from WASM bindings)
10
- const dppInstance = new DashPlatformProtocol(null, {}, {}, 1);
10
+ const dppInstance = new DashPlatformProtocol({}, 1);
11
11
  expectType<DashPlatformProtocol>(dppInstance);
12
12
 
13
13
  // Tests that library exports Identifier class (from TS code in lib)
@@ -18,4 +18,4 @@ expectType<Identifier>(new Identifier(Buffer.alloc(32)));
18
18
  // instead of putting it directly to dist.
19
19
  // If we do it this way, proper typings generated by wasm-bindgen will be ignored, and incorrect
20
20
  // ones will be generated by TypeScript compiler.
21
- dppInstance.stateTransition.createFromBuffer(Buffer.alloc(32));
21
+ dppInstance.stateTransition.createFromBuffer(Buffer.alloc(32), { });