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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/Cargo.toml +34 -7
  2. package/README.md +12 -7
  3. package/dist/errors/patchConsensusErrors.js +94 -115
  4. package/dist/wasm/wasm_dpp.d.ts +2302 -4106
  5. package/dist/wasm/wasm_dpp.js +18149 -2639
  6. package/dist/wasm/wasm_dpp_bg.js +1 -1
  7. package/lib/bls/bls.js +48 -0
  8. package/lib/dpp.ts +1 -1
  9. package/lib/errors/patchConsensusErrors.ts +94 -93
  10. package/lib/test/bootstrap.js +5 -0
  11. package/lib/test/fixtures/getChainAssetLockProofFixture.js +20 -1
  12. package/lib/test/fixtures/getDataContractFixture.js +13 -9
  13. package/lib/test/fixtures/getDocumentTransitionsFixture.js +31 -1
  14. package/lib/test/fixtures/getDocumentsFixture.js +9 -5
  15. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
  16. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
  17. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  18. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  19. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  20. package/lib/test/fixtures/getInstantAssetLockProofFixture.js +32 -12
  21. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  22. package/lib/test/mocks/createStateRepositoryMock.js +1 -0
  23. package/lib/test/mocks/getBlsAdapterMock.js +1 -1
  24. package/lib/utils/creditsConverter.js +14 -0
  25. package/lib/utils/hash.js +18 -0
  26. package/lib/wasm/wasm_dpp.d.ts +2302 -4106
  27. package/package.json +4 -6
  28. package/scripts/build-wasm.sh +30 -29
  29. package/src/bls_adapter.rs +1 -1
  30. package/src/dash_platform_protocol.rs +169 -192
  31. package/src/data_contract/data_contract.rs +309 -199
  32. package/src/data_contract/data_contract_facade.rs +28 -47
  33. package/src/data_contract/errors/mod.rs +1 -0
  34. package/src/data_contract/mod.rs +2 -2
  35. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +92 -79
  36. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
  37. package/src/data_contract_factory/data_contract_factory.rs +43 -83
  38. package/src/document/document_facade.rs +81 -76
  39. package/src/document/errors/document_already_exists_error.rs +6 -6
  40. package/src/document/errors/document_no_revision_error.rs +1 -0
  41. package/src/document/errors/document_not_provided_error.rs +6 -6
  42. package/src/document/errors/invalid_document_action_error.rs +11 -7
  43. package/src/document/errors/invalid_document_error.rs +5 -0
  44. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  45. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  46. package/src/document/errors/mod.rs +5 -0
  47. package/src/document/errors/revision_absent_error.rs +6 -6
  48. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  49. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  50. package/src/document/extended_document.rs +91 -76
  51. package/src/document/factory.rs +140 -119
  52. package/src/document/generate_document_id.rs +2 -2
  53. package/src/document/mod.rs +164 -150
  54. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +236 -229
  55. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  56. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  57. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +164 -152
  58. package/src/document/state_transition/document_batch_transition/mod.rs +232 -222
  59. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
  60. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
  61. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
  62. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
  63. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
  64. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
  65. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
  66. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
  67. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
  68. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
  69. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
  70. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
  71. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
  72. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
  73. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
  74. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
  75. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
  76. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
  77. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
  78. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
  79. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
  80. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
  81. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
  82. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
  83. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
  84. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
  85. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
  86. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
  87. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
  88. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
  89. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
  90. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
  91. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
  92. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
  93. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
  94. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
  95. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
  96. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +5 -11
  97. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
  98. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
  99. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
  100. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
  101. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
  102. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
  103. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
  104. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
  105. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
  106. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
  107. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
  108. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
  109. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
  110. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
  111. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
  112. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
  113. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
  114. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
  115. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
  116. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
  117. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
  118. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
  119. package/src/errors/consensus/basic/json_schema_error.rs +33 -11
  120. package/src/errors/consensus/basic/mod.rs +2 -0
  121. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -9
  122. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  123. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -9
  124. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
  125. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
  126. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
  127. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  128. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
  129. package/src/errors/consensus/consensus_error.rs +44 -21
  130. package/src/errors/consensus/deserialize.rs +2 -1
  131. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
  132. package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
  133. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
  134. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
  135. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
  136. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
  137. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
  138. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
  139. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -1
  140. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
  141. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
  142. package/src/errors/consensus/state/data_contract/mod.rs +7 -1
  143. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
  144. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
  145. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
  146. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
  147. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
  148. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
  149. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
  150. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
  151. package/src/errors/consensus/state/document/mod.rs +2 -0
  152. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
  153. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
  154. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
  155. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
  156. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
  157. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
  158. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
  159. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
  160. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
  161. package/src/errors/consensus/value_error.rs +1 -9
  162. package/src/errors/from.rs +12 -8
  163. package/src/errors/mod.rs +7 -7
  164. package/src/errors/value_error.rs +5 -0
  165. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
  166. package/src/identity/factory_utils.rs +13 -13
  167. package/src/identity/identity.rs +275 -0
  168. package/src/identity/identity_facade.rs +94 -75
  169. package/src/identity/identity_factory.rs +74 -54
  170. package/src/identity/identity_public_key/mod.rs +87 -64
  171. package/src/identity/mod.rs +25 -247
  172. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +32 -17
  173. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  174. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  175. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +24 -15
  176. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  177. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  178. package/src/identity/state_transition/asset_lock_proof/mod.rs +124 -127
  179. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +72 -65
  180. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  181. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  182. package/src/identity/state_transition/identity_create_transition/to_object.rs +11 -12
  183. package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
  184. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
  185. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
  186. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
  187. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
  188. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
  189. package/src/identity/state_transition/identity_public_key_transitions.rs +89 -75
  190. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +68 -62
  191. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  192. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  193. package/src/identity/state_transition/identity_topup_transition/to_object.rs +9 -12
  194. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  195. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
  196. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  197. package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
  198. package/src/identity/state_transition/mod.rs +5 -2
  199. package/src/identity/state_transition/transition_types.rs +34 -0
  200. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  201. package/src/lib.rs +9 -10
  202. package/src/metadata.rs +3 -3
  203. package/src/protocol_version.rs +7 -0
  204. package/src/state_transition/conversion.rs +11 -1
  205. package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
  206. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  207. package/src/state_transition/mod.rs +137 -139
  208. package/src/state_transition/state_transition_facade.rs +11 -11
  209. package/src/state_transition/state_transition_factory.rs +142 -153
  210. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  211. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +28 -10
  212. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  213. package/src/utils.rs +7 -8
  214. package/src/validation/mod.rs +2 -2
  215. package/src/validation/validation_result.rs +17 -15
  216. package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
  217. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
  218. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
  219. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
  220. package/test/integration/document/Document.spec.js +3 -3
  221. package/test/integration/document/DocumentFacade.spec.js +33 -48
  222. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +13 -24
  223. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
  224. package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
  225. package/test/integration/identity/IdentityFacade.spec.js +33 -63
  226. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
  227. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
  228. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  229. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
  230. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  231. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
  232. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
  233. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +5 -6
  234. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
  235. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +5 -9
  236. package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
  237. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
  238. package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
  239. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  240. package/test/unit/DashPlatformProtocol.spec.js +10 -25
  241. package/test/unit/dataContract/DataContract.spec.js +119 -148
  242. package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
  243. package/test/unit/dataContract/createDataContract.spec.js +6 -6
  244. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  245. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
  246. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
  247. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +34 -27
  248. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
  249. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
  250. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
  251. package/test/unit/document/Document.spec.js +59 -70
  252. package/test/unit/document/DocumentFactory.spec.js +46 -111
  253. package/test/unit/document/errors/InvalidDocumentError.spec.js +9 -9
  254. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  255. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +160 -158
  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 +134 -136
  259. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +4 -4
  260. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +572 -595
  261. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +6 -14
  262. package/test/unit/identity/Identity.spec.js +48 -83
  263. package/test/unit/identity/IdentityFactory.spec.js +61 -75
  264. package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
  265. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
  266. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
  267. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
  268. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
  269. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
  270. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +9 -28
  271. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +19 -27
  272. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
  273. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  274. package/test/unit/stateTransition/StateTransitionFactory.spec.js +16 -22
  275. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
  276. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
  277. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
  278. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
  279. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
  280. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  281. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  282. package/test-d/index.test-d.ts +2 -2
  283. package/lib/test/fixtures/getDashPayContractFixture.js +0 -1
  284. package/lib/test/fixtures/getDashPayDocumentFixture.js +0 -1
  285. package/lib/test/fixtures/getDpnsContractFixture.js +0 -1
  286. package/lib/test/fixtures/getDpnsDocumentFixture.js +0 -1
  287. package/lib/test/fixtures/getFeatureFlagsContractFixture.js +0 -1
  288. package/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js +0 -1
  289. package/lib/test/fixtures/getIdentityTopUpTransitionFixtureJs.js +0 -1
  290. package/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js +0 -1
  291. package/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js +0 -1
  292. package/lib/test/fixtures/getPreorderDocumentFixture.js +0 -1
  293. package/lib/test/fixtures/getRawTransactionFixture.js +0 -1
  294. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  295. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  296. package/src/decode_protocol_entity.rs +0 -25
  297. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
  298. package/test/integration/DashPlatformProtocol.spec.js +0 -53
  299. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
  300. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +0 -195
  301. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +0 -500
  302. package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +0 -53
  303. package/test/integration/util/generateEntropy.spec.js +0 -17
  304. package/test/integration/util/serializer.spec.js +0 -24
  305. package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +0 -103
  306. package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +0 -84
  307. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -47
  308. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +0 -49
  309. package/test/unit/dataTrigger/DataTrigger.spec.js +0 -132
  310. package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +0 -29
  311. package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +0 -107
  312. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +0 -382
  313. package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +0 -99
  314. package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +0 -113
  315. package/test/unit/dataTrigger/rejectDataTrigger.spec.js +0 -51
  316. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +0 -202
  317. package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
  318. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +0 -257
  319. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +0 -94
  320. package/test/unit/errors/consensus/codes.spec.js +0 -102
  321. package/test/unit/identity/creditsConverter.spec.js +0 -34
  322. package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
  323. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +0 -89
  324. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +0 -142
  325. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +0 -100
  326. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +0 -36
  327. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +0 -63
  328. package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +0 -47
  329. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
@@ -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), { });
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getDashPayContractFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getDashPayDocumentFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getDpnsContractFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getDpnsDocumentFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getFeatureFlagsContractFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getPreorderDocumentFixture');
@@ -1 +0,0 @@
1
- module.exports = require('@dashevo/dpp/lib/test/fixtures/getRawTransactionFixture');
@@ -1,45 +0,0 @@
1
- use std::ops::Deref;
2
- use std::sync::Arc;
3
-
4
- use dpp::data_contract::state_transition::data_contract_create_transition::apply_data_contract_create_transition_factory::ApplyDataContractCreateTransition;
5
- use wasm_bindgen::prelude::*;
6
-
7
- use crate::{
8
- state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
9
- DataContractCreateTransitionWasm,
10
- };
11
-
12
- #[wasm_bindgen(js_name=ApplyDataContractCreateTransition)]
13
- pub struct ApplyDataContractCreateTransitionWasm(
14
- ApplyDataContractCreateTransition<ExternalStateRepositoryLikeWrapper>,
15
- );
16
-
17
- impl From<ApplyDataContractCreateTransition<ExternalStateRepositoryLikeWrapper>>
18
- for ApplyDataContractCreateTransitionWasm
19
- {
20
- fn from(wa: ApplyDataContractCreateTransition<ExternalStateRepositoryLikeWrapper>) -> Self {
21
- ApplyDataContractCreateTransitionWasm(wa)
22
- }
23
- }
24
-
25
- #[wasm_bindgen(js_class=ApplyDataContractCreateTransition)]
26
- impl ApplyDataContractCreateTransitionWasm {
27
- #[wasm_bindgen(constructor)]
28
- pub fn new(
29
- state_repository: ExternalStateRepositoryLike,
30
- ) -> ApplyDataContractCreateTransitionWasm {
31
- let pinned_js_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
32
- ApplyDataContractCreateTransition::new(Arc::new(pinned_js_state_repository)).into()
33
- }
34
-
35
- #[wasm_bindgen(js_name=applyDataContractCreateTransition)]
36
- pub async fn apply_data_contract_create_transition(
37
- &self,
38
- transition: DataContractCreateTransitionWasm,
39
- ) -> Result<(), JsError> {
40
- self.0
41
- .apply_data_contract_create_transition(&transition.into(), None)
42
- .await
43
- .map_err(|e| e.deref().into())
44
- }
45
- }
@@ -1,49 +0,0 @@
1
- use std::ops::Deref;
2
- use std::sync::Arc;
3
-
4
- use dpp::data_contract::state_transition::data_contract_update_transition::apply_data_contract_update_transition_factory::ApplyDataContractUpdateTransition;
5
- use wasm_bindgen::prelude::*;
6
-
7
- use crate::{
8
- state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
9
- DataContractUpdateTransitionWasm, StateTransitionExecutionContextWasm,
10
- };
11
-
12
- #[wasm_bindgen(js_name=ApplyDataContractUpdateTransition)]
13
- pub struct ApplyDataContractUpdateTransitionWasm(
14
- ApplyDataContractUpdateTransition<ExternalStateRepositoryLikeWrapper>,
15
- );
16
-
17
- impl From<ApplyDataContractUpdateTransition<ExternalStateRepositoryLikeWrapper>>
18
- for ApplyDataContractUpdateTransitionWasm
19
- {
20
- fn from(wa: ApplyDataContractUpdateTransition<ExternalStateRepositoryLikeWrapper>) -> Self {
21
- ApplyDataContractUpdateTransitionWasm(wa)
22
- }
23
- }
24
-
25
- #[wasm_bindgen(js_class=ApplyDataContractUpdateTransition)]
26
- impl ApplyDataContractUpdateTransitionWasm {
27
- #[wasm_bindgen(constructor)]
28
- pub fn new(
29
- state_repository: ExternalStateRepositoryLike,
30
- ) -> ApplyDataContractUpdateTransitionWasm {
31
- let pinned_js_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
32
- ApplyDataContractUpdateTransition::new(Arc::new(pinned_js_state_repository)).into()
33
- }
34
-
35
- #[wasm_bindgen(js_name=applyDataContractUpdateTransition)]
36
- pub async fn apply_data_contract_update_transition(
37
- &self,
38
- transition: DataContractUpdateTransitionWasm,
39
- execution_context: &StateTransitionExecutionContextWasm,
40
- ) -> Result<(), JsError> {
41
- self.0
42
- .apply_data_contract_update_transition(
43
- &transition.into(),
44
- &execution_context.to_owned().into(),
45
- )
46
- .await
47
- .map_err(|e| e.deref().into())
48
- }
49
- }
@@ -1,25 +0,0 @@
1
- use js_sys::Array;
2
-
3
- use wasm_bindgen::prelude::wasm_bindgen;
4
- use wasm_bindgen::JsValue;
5
-
6
- #[wasm_bindgen(js_name=decodeProtocolEntity)]
7
- pub fn decode_protocol_entity(_buffer: Vec<u8>) -> Result<Array, JsValue> {
8
- // TODO(v0.24-backport): revisit.
9
- // This code was not used anywhere but js-drive and wallet-lib.
10
- // In wallet-lib it is replaceable.
11
- todo!()
12
- // let (protocol_version, value) = DecodeProtocolEntity::decode_protocol_entity_to_value(buffer)
13
- // .map_err(from_protocol_error)?;
14
- //
15
- // let serializer = serde_wasm_bindgen::Serializer::json_compatible();
16
- // let js_value = value
17
- // .try_to_validating_json()
18
- // .map_err(|e| from_protocol_error(ProtocolError::ValueError(e)))?
19
- // .serialize(&serializer)
20
- // .map_err(|e| from_protocol_error(ProtocolError::EncodingError(e.to_string())))?;
21
- // Ok(Array::from_iter(vec![
22
- // JsValue::from(protocol_version),
23
- // js_value,
24
- // ]))
25
- }
@@ -1,25 +0,0 @@
1
- use dpp::document::state_transition::documents_batch_transition::apply_documents_batch_transition_factory::{apply_documents_batch_transition};
2
- use wasm_bindgen::prelude::*;
3
-
4
- use crate::{
5
- state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
6
- utils::WithJsError,
7
- DocumentsBatchTransitionWasm, StateTransitionExecutionContextWasm,
8
- };
9
-
10
- #[wasm_bindgen(js_name=applyDocumentsBatchTransition)]
11
- pub async fn apply_documents_batch_transition_wasm(
12
- state_repository: ExternalStateRepositoryLike,
13
- transition: &DocumentsBatchTransitionWasm,
14
- execution_context: &StateTransitionExecutionContextWasm,
15
- ) -> Result<(), JsValue> {
16
- let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
17
-
18
- apply_documents_batch_transition(
19
- &wrapped_state_repository,
20
- &transition.0,
21
- &execution_context.to_owned().into(),
22
- )
23
- .await
24
- .with_js_error()
25
- }
@@ -1,53 +0,0 @@
1
- const DashPlatformProtocol = require('@dashevo/dpp/lib/DashPlatformProtocol');
2
- const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
3
- const getChainAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
4
- const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
5
-
6
- describe('DashPlatformProtocol', () => {
7
- let dpp;
8
-
9
- beforeEach(async () => {
10
- dpp = new DashPlatformProtocol({});
11
- await dpp.initialize();
12
- });
13
-
14
- it('should propagate protocol version to factories', async () => {
15
- let dataContract = dpp.dataContract.create(generateRandomIdentifier(), {
16
- niceDocument: {
17
- type: 'object',
18
- properties: {
19
- name: {
20
- type: 'string',
21
- },
22
- },
23
- required: ['$createdAt'],
24
- additionalProperties: false,
25
- },
26
- });
27
- const document = dpp.document.create(dataContract, generateRandomIdentifier(), 'niceDocument', {});
28
- let identity = dpp.identity.create(getChainAssetLockProofFixture(), []);
29
-
30
- expect(dataContract.protocolVersion).to.equal(protocolVersion.latestVersion);
31
- expect(document.protocolVersion).to.equal(protocolVersion.latestVersion);
32
- expect(identity.protocolVersion).to.equal(protocolVersion.latestVersion);
33
-
34
- dpp.setProtocolVersion(42);
35
-
36
- dataContract = dpp.dataContract.create(generateRandomIdentifier(), {
37
- niceDocument: {
38
- type: 'object',
39
- properties: {
40
- name: {
41
- type: 'string',
42
- },
43
- },
44
- required: ['$createdAt'],
45
- additionalProperties: false,
46
- },
47
- });
48
- identity = dpp.identity.create(getChainAssetLockProofFixture(), []);
49
-
50
- expect(dataContract.protocolVersion).to.equal(42);
51
- expect(identity.protocolVersion).to.equal(42);
52
- });
53
- });
@@ -1,148 +0,0 @@
1
- const { default: Ajv } = require('ajv');
2
-
3
- const addByteArrayKeyword = require('@dashevo/dpp/lib/ajv/keywords/byteArray/addByteArrayKeyword');
4
- const byteArray = require('@dashevo/dpp/lib/ajv/keywords/byteArray/byteArray');
5
-
6
- describe('addByteArrayKeyword', () => {
7
- let ajv;
8
-
9
- beforeEach(() => {
10
- ajv = new Ajv();
11
- });
12
-
13
- it('should add byteArray keyword', () => {
14
- addByteArrayKeyword(ajv);
15
-
16
- expect(
17
- ajv.getKeyword('byteArray'),
18
- ).to.deep.equal(byteArray);
19
- });
20
-
21
- describe('byteArray', () => {
22
- beforeEach(() => {
23
- addByteArrayKeyword(ajv);
24
- });
25
-
26
- describe('compilation', () => {
27
- it('should be used with array type', () => {
28
- const schema = {
29
- type: 'string',
30
- byteArray: true,
31
- };
32
-
33
- ajv.validate(schema, Buffer.alloc(0));
34
-
35
- expect(ajv.errors).to.have.lengthOf(1);
36
- expect(ajv.errors[0].keyword).to.equal('type');
37
- expect(ajv.errors[0].params.type).to.equal('string');
38
- });
39
-
40
- it('should not be used with `items` keyword', () => {
41
- const schema = {
42
- type: 'array',
43
- byteArray: true,
44
- items: {
45
- type: 'string',
46
- },
47
- };
48
-
49
- try {
50
- ajv.validate(schema, Buffer.alloc(0));
51
-
52
- expect.fail('should fail with keyword schema error');
53
- } catch (e) {
54
- expect(e.message).to.equal('\'byteArray\' should not be used with \'items\'');
55
- }
56
- });
57
-
58
- it('should be boolean', () => {
59
- const schema = {
60
- type: 'array',
61
- byteArray: 'something',
62
- };
63
-
64
- try {
65
- ajv.validate(schema, Buffer.alloc(0));
66
-
67
- expect.fail('should fail with keyword schema error');
68
- } catch (e) {
69
- expect(e.message).to.equal('keyword "byteArray" value is invalid at path "#": data must be boolean');
70
- }
71
- });
72
-
73
- it('should have value of true', () => {
74
- const schema = {
75
- type: 'array',
76
- byteArray: false,
77
- };
78
-
79
- try {
80
- ajv.validate(schema, Buffer.alloc(0));
81
-
82
- expect.fail('should fail with keyword schema error');
83
- } catch (e) {
84
- expect(e.message).to.equal('keyword "byteArray" value is invalid at path "#": data must be equal to constant');
85
- }
86
- });
87
- });
88
-
89
- describe('validation', () => {
90
- it('should accept array of integers', () => {
91
- const schema = {
92
- type: 'array',
93
- byteArray: true,
94
- };
95
-
96
- ajv.validate(schema, ['string']);
97
-
98
- expect(ajv.errors).to.have.lengthOf(2);
99
-
100
- const [error, byteArrayError] = ajv.errors;
101
-
102
- expect(error.keyword).to.equal('type');
103
- expect(error.schemaPath).to.equal('#/byteArray/items/type');
104
- expect(error.message).to.equal('must be integer');
105
-
106
- expect(byteArrayError.keyword).to.equal('byteArray');
107
- });
108
-
109
- it('should accept array of integers not less than 0', () => {
110
- const schema = {
111
- type: 'array',
112
- byteArray: true,
113
- };
114
-
115
- ajv.validate(schema, [-1]);
116
-
117
- expect(ajv.errors).to.have.lengthOf(2);
118
-
119
- const [error, byteArrayError] = ajv.errors;
120
-
121
- expect(error.keyword).to.equal('minimum');
122
- expect(error.schemaPath).to.equal('#/byteArray/items/minimum');
123
- expect(error.message).to.equal('must be >= 0');
124
-
125
- expect(byteArrayError.keyword).to.equal('byteArray');
126
- });
127
-
128
- it('should accept array of integers not greater than 255', () => {
129
- const schema = {
130
- type: 'array',
131
- byteArray: true,
132
- };
133
-
134
- ajv.validate(schema, [0, 256]);
135
-
136
- expect(ajv.errors).to.have.lengthOf(2);
137
-
138
- const [error, byteArrayError] = ajv.errors;
139
-
140
- expect(error.keyword).to.equal('maximum');
141
- expect(error.schemaPath).to.equal('#/byteArray/items/maximum');
142
- expect(error.message).to.equal('must be <= 255');
143
-
144
- expect(byteArrayError.keyword).to.equal('byteArray');
145
- });
146
- });
147
- });
148
- });
@@ -1,195 +0,0 @@
1
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
2
- const dpnsSystemIds = require('@dashevo/dpns-contract/lib/systemIds');
3
- const getDpnsContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDpnsContractFixture');
4
- const dpnsDocumentFixture = require('@dashevo/dpp/lib/test/fixtures/getDpnsDocumentFixture');
5
- const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
6
- const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture');
7
- const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
8
-
9
- const IdentifierJs = require('@dashevo/dpp/lib/identifier/Identifier');
10
-
11
- const { default: loadWasmDpp } = require('../../../../../../../dist');
12
-
13
- let DataContract;
14
- let DocumentTransition;
15
- let DocumentCreateTransition;
16
- let DataTriggerExecutionContext;
17
- let Document;
18
- let DataTriggerExecutionResult;
19
- let StateTransitionExecutionContext;
20
- let getAllDataTriggers;
21
-
22
- describe('executeDataTriggersFactory', () => {
23
- let childDocumentJs;
24
- let childDocument;
25
- let contractMock;
26
- let stateTransitionExecutionContext;
27
- let context;
28
- let documentTransitions;
29
-
30
- let executeDataTriggers;
31
- let dataContractJs;
32
- let dataContract;
33
- let stateRepositoryMock;
34
-
35
- beforeEach(async function beforeEach() {
36
- ({
37
- DataContract,
38
- DocumentTransition,
39
- DocumentCreateTransition,
40
- DataTriggerExecutionContext,
41
- Document,
42
- DataTriggerExecutionResult,
43
- StateTransitionExecutionContext,
44
- executeDataTriggers,
45
- getAllDataTriggers,
46
- } = await loadWasmDpp());
47
-
48
- dataContractJs = getDataContractFixture();
49
- dataContract = new DataContract(dataContractJs.toObject());
50
-
51
- contractMock = new DataContract(getDpnsContractFixture().toObject());
52
-
53
- childDocumentJs = dpnsDocumentFixture.getChildDocumentFixture();
54
- childDocument = new Document(
55
- childDocumentJs.toObject(),
56
- dataContract.clone(),
57
- childDocumentJs.getType(),
58
- );
59
-
60
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
61
-
62
- contractMock.setId(dpnsSystemIds.contractId);
63
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
64
- stateRepositoryMock.fetchDocuments.resolves([childDocument]);
65
-
66
- stateTransitionExecutionContext = new StateTransitionExecutionContext();
67
- stateTransitionExecutionContext.disableDryRun();
68
-
69
- context = new DataTriggerExecutionContext(
70
- stateRepositoryMock,
71
- childDocument.getOwnerId(),
72
- contractMock.clone(),
73
- stateTransitionExecutionContext,
74
- );
75
-
76
- const documentTransitionsJs = getDocumentTransitionsFixture({
77
- create: [childDocumentJs],
78
- });
79
-
80
- documentTransitions = documentTransitionsJs.map((transition) => {
81
- const transitionCreate = new DocumentCreateTransition(
82
- transition.toObject(), dataContract.clone(),
83
- );
84
- return DocumentTransition.fromTransitionCreate(transitionCreate);
85
- });
86
- });
87
-
88
- it('should return an array of DataTriggerExecutionResult - Rust', async () => {
89
- const dataTriggerExecutionResults = await executeDataTriggers(
90
- documentTransitions, context, getAllDataTriggers(),
91
- );
92
-
93
- expect(dataTriggerExecutionResults).to.have.a.lengthOf(1);
94
-
95
- const [result] = dataTriggerExecutionResults;
96
-
97
- expect(result).to.be.an.instanceOf(DataTriggerExecutionResult);
98
- expect(result.getErrors()).to.have.a.lengthOf(0);
99
- expect(result.isOk()).to.be.true();
100
- });
101
-
102
- it('should return multiple data triggers if there is more than one data trigger for'
103
- + ' the same document and action in the contract - Rust', async () => {
104
- const dataTriggersList = getAllDataTriggers();
105
- const dataTriggerListWithDuplicates = [
106
- dataTriggersList[0],
107
- dataTriggersList[0],
108
- dataTriggersList[0],
109
- ];
110
-
111
- const expectedTriggersCount = 3;
112
- const dataTriggerExecutionResults = await executeDataTriggers(
113
- documentTransitions, context, dataTriggerListWithDuplicates,
114
- );
115
-
116
- expect(dataTriggerExecutionResults).to.have.a.lengthOf(expectedTriggersCount);
117
- });
118
-
119
- it('should return a result for each passed document with success or error - Rust', async () => {
120
- const documentTransition = documentTransitions[0];
121
- const rawDocumentTransition = documentTransition.toObject();
122
- rawDocumentTransition.normalizedLabel = 'a'.repeat(257);
123
-
124
- const invalidDocumentCreateTransition = new DocumentCreateTransition(
125
- rawDocumentTransition, dataContract.clone(),
126
- );
127
- const invalidDocumentTransition = DocumentTransition.fromTransitionCreate(
128
- invalidDocumentCreateTransition,
129
- );
130
-
131
- const dataTriggerExecutionResults = await executeDataTriggers(
132
- [documentTransition, invalidDocumentTransition], context, getAllDataTriggers(),
133
- );
134
-
135
- expect(dataTriggerExecutionResults).to.have.a.lengthOf(2);
136
-
137
- const [validResult, invalidResult] = dataTriggerExecutionResults;
138
- expect(validResult.isOk()).to.be.true();
139
- expect(invalidResult.isOk()).to.be.false();
140
- });
141
-
142
- it("should not call any triggers if documents have no triggers associated with it's type or action - Rust", async () => {
143
- const dataTriggers = [getAllDataTriggers()[1]];
144
- const dataTriggerExecutionResults = await executeDataTriggers(
145
- documentTransitions, context, dataTriggers,
146
- );
147
-
148
- expect(dataTriggerExecutionResults).to.have.a.lengthOf(0);
149
- });
150
-
151
- it("should call only one trigger if there's one document with a trigger and one without - Rust", async () => {
152
- const dataContractId = getDataContractFixture().getId();
153
- childDocumentJs.dataContractId = dataContractId;
154
- childDocumentJs.dataContract.id = dataContractId;
155
- childDocumentJs.ownerId = IdentifierJs.from(
156
- getDocumentsFixture.ownerId,
157
- );
158
-
159
- const documentTransitionsJs = getDocumentTransitionsFixture({
160
- create: [childDocumentJs].concat(getDocumentsFixture(dataContractJs)),
161
- });
162
-
163
- documentTransitions = documentTransitionsJs.map((transition) => {
164
- const transitionCreate = new DocumentCreateTransition(
165
- transition.toObject(), dataContract.clone(),
166
- );
167
- return DocumentTransition.fromTransitionCreate(transitionCreate);
168
- });
169
-
170
- const dataTriggerExecutionResults = await executeDataTriggers(
171
- documentTransitions, context, getAllDataTriggers(),
172
- );
173
-
174
- expect(dataTriggerExecutionResults).to.have.a.lengthOf(1);
175
- });
176
-
177
- it("should not call any triggers if there's no triggers in the contract - Rust", async () => {
178
- const documentTransitionsJs = getDocumentTransitionsFixture({
179
- create: getDocumentsFixture(dataContractJs),
180
- });
181
-
182
- documentTransitions = documentTransitionsJs.map((transition) => {
183
- const transitionCreate = new DocumentCreateTransition(
184
- transition.toObject(), dataContract.clone(),
185
- );
186
- return DocumentTransition.fromTransitionCreate(transitionCreate);
187
- });
188
-
189
- const dataTriggerExecutionResults = await executeDataTriggers(
190
- documentTransitions, context, getAllDataTriggers(),
191
- );
192
-
193
- expect(dataTriggerExecutionResults).to.have.a.lengthOf(0);
194
- });
195
- });