@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,102 +0,0 @@
1
- const path = require('path');
2
- const fs = require('fs');
3
- const codes = require('@dashevo/dpp/lib/errors/consensus/codes');
4
- const AbstractConsensusError = require('@dashevo/dpp/lib/errors/consensus/AbstractConsensusError');
5
- const AbstractBasicError = require('@dashevo/dpp/lib/errors/consensus/basic/AbstractBasicError');
6
- const AbstractSignatureError = require('@dashevo/dpp/lib/errors/consensus/signature/AbstractSignatureError');
7
- const AbstractFeeError = require('@dashevo/dpp/lib/errors/consensus/fee/AbstractFeeError');
8
- const AbstractStateError = require('@dashevo/dpp/lib/errors/consensus/state/AbstractStateError');
9
-
10
- const getAllFiles = (dirPath, arrayOfFiles) => {
11
- const files = fs.readdirSync(dirPath);
12
-
13
- // eslint-disable-next-line no-param-reassign
14
- arrayOfFiles = arrayOfFiles || [];
15
-
16
- files.forEach((file) => {
17
- if (fs.statSync(`${dirPath}/${file}`).isDirectory()) {
18
- // eslint-disable-next-line no-param-reassign
19
- arrayOfFiles = getAllFiles(`${dirPath}/${file}`, arrayOfFiles);
20
- } else if (file.slice(-3) === '.js') {
21
- arrayOfFiles.push(path.join(dirPath, '/', file));
22
- }
23
- });
24
-
25
- return arrayOfFiles;
26
- };
27
-
28
- function isChildOf(classToCheck, parentClass) {
29
- if (!classToCheck || !classToCheck.prototype) {
30
- return false;
31
- }
32
-
33
- if (classToCheck.prototype instanceof parentClass) {
34
- return true;
35
- }
36
-
37
- return isChildOf(classToCheck.prototype, parentClass);
38
- }
39
-
40
- const errorClasses = Object.values(codes).map((ErrorClass) => ErrorClass);
41
- const errorClassDuplicates = errorClasses.filter((item, index) => (
42
- errorClasses.indexOf(item) !== index
43
- ));
44
-
45
- describe('Consensus error codes', () => {
46
- // Skip the tests for browsers
47
- if (global.window !== undefined) {
48
- return;
49
- }
50
-
51
- const normalizedPath = path.join(__dirname, '../../../../../js-dpp/lib/errors/');
52
- const allFiles = getAllFiles(normalizedPath);
53
-
54
- allFiles.forEach((fileName) => {
55
- // eslint-disable-next-line global-require,import/no-dynamic-require
56
- const ErrorClass = require(fileName);
57
-
58
- if (
59
- (isChildOf(ErrorClass, AbstractConsensusError)) && !ErrorClass.name.startsWith('Abstract')
60
- ) {
61
- context(ErrorClass.name, () => {
62
- let code;
63
- let AssignedErrorClass;
64
-
65
- beforeEach(() => {
66
- const result = Object.entries(codes)
67
- .find(([, ErrorClassWithCode]) => ErrorClassWithCode === ErrorClass);
68
-
69
- if (result) {
70
- code = Number(result[0]);
71
- // eslint-disable-next-line prefer-destructuring
72
- AssignedErrorClass = result[1];
73
- }
74
- });
75
-
76
- it('should have error code defined', () => {
77
- expect(AssignedErrorClass).to.exist();
78
- });
79
-
80
- it('should have been define in the correct code range', () => {
81
- if (isChildOf(ErrorClass, AbstractBasicError)) {
82
- expect(code).to.be.above(999);
83
- expect(code).to.be.below(2000);
84
- } else if (isChildOf(ErrorClass, AbstractSignatureError)) {
85
- expect(code).to.be.above(1999);
86
- expect(code).to.be.below(3000);
87
- } else if (isChildOf(ErrorClass, AbstractFeeError)) {
88
- expect(code).to.be.above(2999);
89
- expect(code).to.be.below(4000);
90
- } else if (isChildOf(ErrorClass, AbstractStateError)) {
91
- expect(code).to.be.above(3999);
92
- expect(code).to.be.below(5000);
93
- }
94
- });
95
-
96
- it('should not have duplicates', () => {
97
- expect(errorClassDuplicates).to.not.include(ErrorClass);
98
- });
99
- });
100
- }
101
- });
102
- });
@@ -1,34 +0,0 @@
1
- const {
2
- convertSatoshiToCredits,
3
- convertCreditsToSatoshi,
4
- RATIO,
5
- } = require('@dashevo/dpp/lib/identity/creditsConverter');
6
-
7
- describe('creditsConverter', () => {
8
- describe('convertSatoshiToCredits', () => {
9
- it('should convert satoshi to credits', () => {
10
- const amount = 42;
11
-
12
- const convertedAmount = convertSatoshiToCredits(amount);
13
-
14
- expect(convertedAmount).to.equal(amount * RATIO);
15
- });
16
- });
17
- describe('convertCreditsToSatoshi', () => {
18
- it('should convert credits to satoshi', () => {
19
- const amount = 10000;
20
-
21
- const convertedAmount = convertCreditsToSatoshi(amount);
22
-
23
- expect(convertedAmount).to.equal(Math.floor(amount / RATIO));
24
- });
25
-
26
- it('should convert credits to 0 satoshi if amount < RATIO', () => {
27
- const amount = RATIO - 1;
28
-
29
- const convertedAmount = convertCreditsToSatoshi(amount);
30
-
31
- expect(convertedAmount).to.equal(0);
32
- });
33
- });
34
- });
@@ -1,46 +0,0 @@
1
- const InvalidIdentityError = require('@dashevo/dpp/lib/identity/errors/InvalidIdentityError');
2
- const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
3
-
4
- describe('InvalidIdentityError', () => {
5
- let rawIdentity;
6
- let error;
7
-
8
- beforeEach(() => {
9
- error = new Error('Some error');
10
-
11
- const identity = getIdentityFixture();
12
- rawIdentity = identity.toObject();
13
- });
14
-
15
- it('should return errors', () => {
16
- const errors = [error];
17
-
18
- const invalidIdentityError = new InvalidIdentityError(errors, rawIdentity);
19
-
20
- expect(invalidIdentityError.getErrors()).to.deep.equal(errors);
21
- });
22
-
23
- it('should return Identity', async () => {
24
- const errors = [error];
25
-
26
- const invalidIdentityError = new InvalidIdentityError(errors, rawIdentity);
27
-
28
- expect(invalidIdentityError.getRawIdentity()).to.deep.equal(rawIdentity);
29
- });
30
-
31
- it('should contain message for 1 error', async () => {
32
- const errors = [error];
33
-
34
- const invalidIdentityError = new InvalidIdentityError(errors, rawIdentity);
35
-
36
- expect(invalidIdentityError.message).to.equal(`Invalid Identity: "${error.message}"`);
37
- });
38
-
39
- it('should contain message for multiple errors', async () => {
40
- const errors = [error, error];
41
-
42
- const invalidIdentityError = new InvalidIdentityError(errors, rawIdentity);
43
-
44
- expect(invalidIdentityError.message).to.equal(`Invalid Identity: "${error.message}" and 1 more`);
45
- });
46
- });
@@ -1,89 +0,0 @@
1
- const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
2
-
3
- const { convertSatoshiToCredits } = require('@dashevo/dpp/lib/identity/creditsConverter');
4
-
5
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
6
-
7
- const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
8
-
9
- const { default: loadWasmDpp } = require('../../../../../dist');
10
-
11
- describe('applyIdentityCreateTransitionFactory', () => {
12
- let stateTransition;
13
- let applyIdentityCreateTransition;
14
- let stateRepositoryMock;
15
- let output;
16
- let executionContext;
17
-
18
- let StateTransitionExecutionContext;
19
- let IdentityCreateTransition;
20
- let Identity;
21
-
22
- let applyIdentityCreateTransitionDPP;
23
-
24
- before(async () => {
25
- ({
26
- StateTransitionExecutionContext,
27
- IdentityCreateTransition,
28
- applyIdentityCreateTransition: applyIdentityCreateTransitionDPP,
29
- Identity,
30
- } = await loadWasmDpp());
31
- });
32
-
33
- beforeEach(function beforeEach() {
34
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
35
- stateRepositoryMock.createIdentity.resolves();
36
- stateRepositoryMock.addToSystemCredits.resolves();
37
- stateRepositoryMock.markAssetLockTransactionOutPointAsUsed.resolves();
38
-
39
- stateTransition = new IdentityCreateTransition(
40
- getIdentityCreateTransitionFixture().toObject(),
41
- );
42
-
43
- executionContext = new StateTransitionExecutionContext();
44
-
45
- output = stateTransition.getAssetLockProof().getOutput();
46
-
47
- applyIdentityCreateTransition = (st) => applyIdentityCreateTransitionDPP(
48
- stateRepositoryMock,
49
- st,
50
- executionContext,
51
- );
52
- });
53
-
54
- it('should store identity created from state transition', async function () {
55
- await applyIdentityCreateTransition(stateTransition);
56
-
57
- const balance = convertSatoshiToCredits(
58
- output.satoshis,
59
- );
60
-
61
- const identity = new Identity({
62
- protocolVersion: protocolVersion.latestVersion,
63
- id: stateTransition.getIdentityId(),
64
- publicKeys: stateTransition.getPublicKeys()
65
- .map((key) => key.toObject({ skipSignature: true })),
66
- balance,
67
- revision: 0,
68
- });
69
-
70
- const { match } = this.sinonSandbox;
71
-
72
- expect(stateRepositoryMock.createIdentity).to.have.been.calledOnceWithExactly(
73
- match((arg) => expect(arg.toObject()).to.deep.equal(identity.toObject())),
74
- match.instanceOf(StateTransitionExecutionContext),
75
- );
76
-
77
- expect(stateRepositoryMock.addToSystemCredits).to.have.been.calledOnceWithExactly(
78
- balance,
79
- match.instanceOf(StateTransitionExecutionContext),
80
- );
81
-
82
- const outPoint = stateTransition.getAssetLockProof().getOutPoint();
83
- expect(stateRepositoryMock.markAssetLockTransactionOutPointAsUsed).to.have.been
84
- .calledOnceWithExactly(
85
- match((arg) => Buffer.from(arg).equals(outPoint)),
86
- match.instanceOf(StateTransitionExecutionContext),
87
- );
88
- });
89
- });
@@ -1,142 +0,0 @@
1
- const getIdentityTopUpTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture');
2
-
3
- const { convertSatoshiToCredits } = require('@dashevo/dpp/lib/identity/creditsConverter');
4
-
5
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
6
-
7
- const { default: loadWasmDpp } = require('../../../../../dist');
8
-
9
- describe('applyIdentityTopUpTransitionFactory', () => {
10
- let stateTransition;
11
- let applyIdentityTopUpTransition;
12
- let stateRepositoryMock;
13
- let executionContext;
14
-
15
- let StateTransitionExecutionContext;
16
- let IdentityTopUpTransition;
17
-
18
- let applyIdentityTopUpTransitionDPP;
19
-
20
- before(async () => {
21
- ({
22
- StateTransitionExecutionContext,
23
- IdentityTopUpTransition,
24
- applyIdentityTopUpTransition: applyIdentityTopUpTransitionDPP,
25
- } = await loadWasmDpp());
26
- });
27
-
28
- beforeEach(async function beforeEach() {
29
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
30
- stateRepositoryMock.fetchIdentityBalanceWithDebt.resolves(0);
31
- stateRepositoryMock.addToIdentityBalance.resolves();
32
- stateRepositoryMock.addToSystemCredits.resolves();
33
- stateRepositoryMock.markAssetLockTransactionOutPointAsUsed.resolves();
34
-
35
- const rawTransaction = '030000000137feb5676d0851337ea3c9a992496aab7a0b3eee60aeeb9774000b7f4bababa5000000006b483045022100d91557de37645c641b948c6cd03b4ae3791a63a650db3e2fee1dcf5185d1b10402200e8bd410bf516ca61715867666d31e44495428ce5c1090bf2294a829ebcfa4ef0121025c3cc7fbfc52f710c941497fd01876c189171ea227458f501afcb38a297d65b4ffffffff021027000000000000166a14152073ca2300a86b510fa2f123d3ea7da3af68dcf77cb0090a0000001976a914152073ca2300a86b510fa2f123d3ea7da3af68dc88ac00000000';
36
-
37
- stateRepositoryMock.fetchTransaction.resolves({
38
- data: Buffer.from(rawTransaction, 'hex'),
39
- height: 42,
40
- });
41
-
42
- stateTransition = new IdentityTopUpTransition(
43
- getIdentityTopUpTransitionFixture().toObject(),
44
- );
45
-
46
- executionContext = new StateTransitionExecutionContext();
47
-
48
- applyIdentityTopUpTransition = (st) => applyIdentityTopUpTransitionDPP(
49
- stateRepositoryMock,
50
- st,
51
- executionContext,
52
- );
53
- });
54
-
55
- it('should add topup amount to identity balance', async function () {
56
- const balanceToTopUp = convertSatoshiToCredits(
57
- stateTransition.getAssetLockProof().getOutput().satoshis,
58
- );
59
-
60
- await applyIdentityTopUpTransition(stateTransition);
61
-
62
- const { match } = this.sinonSandbox;
63
-
64
- expect(stateRepositoryMock.addToIdentityBalance).to.have.been.calledOnceWithExactly(
65
- match((arg) => arg.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
66
- balanceToTopUp,
67
- match.instanceOf(StateTransitionExecutionContext),
68
- );
69
-
70
- expect(stateRepositoryMock.addToSystemCredits).to.have.been.calledOnceWithExactly(
71
- balanceToTopUp,
72
- match.instanceOf(StateTransitionExecutionContext),
73
- );
74
-
75
- const outPoint = stateTransition.getAssetLockProof().getOutPoint();
76
-
77
- expect(stateRepositoryMock.markAssetLockTransactionOutPointAsUsed).to.have.been
78
- .calledOnceWithExactly(
79
- match((arg) => Buffer.from(arg).equals(outPoint)),
80
- match.instanceOf(StateTransitionExecutionContext),
81
- );
82
- });
83
-
84
- it('should ignore balance debt for system credits', async function () {
85
- stateRepositoryMock.fetchIdentityBalanceWithDebt.resolves(-5);
86
-
87
- const balanceToTopUp = convertSatoshiToCredits(
88
- stateTransition.getAssetLockProof().getOutput().satoshis,
89
- );
90
-
91
- await applyIdentityTopUpTransition(stateTransition);
92
-
93
- const { match } = this.sinonSandbox;
94
-
95
- expect(stateRepositoryMock.addToIdentityBalance).to.have.been.calledOnceWithExactly(
96
- match((arg) => arg.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
97
- balanceToTopUp,
98
- match.instanceOf(StateTransitionExecutionContext),
99
- );
100
-
101
- expect(stateRepositoryMock.addToSystemCredits).to.have.been.calledOnceWithExactly(
102
- balanceToTopUp - 5,
103
- match.instanceOf(StateTransitionExecutionContext),
104
- );
105
-
106
- const outPoint = stateTransition.getAssetLockProof().getOutPoint();
107
-
108
- expect(stateRepositoryMock.markAssetLockTransactionOutPointAsUsed).to.have.been
109
- .calledOnceWithExactly(
110
- match((arg) => Buffer.from(arg).equals(outPoint)),
111
- match.instanceOf(StateTransitionExecutionContext),
112
- );
113
- });
114
-
115
- it('should add topup amount to identity balance on dry run', async function () {
116
- const { match } = this.sinonSandbox;
117
-
118
- const balanceToTopUp = convertSatoshiToCredits(
119
- stateTransition.getAssetLockProof().getOutput().satoshis,
120
- );
121
-
122
- executionContext.enableDryRun();
123
-
124
- await applyIdentityTopUpTransition(stateTransition);
125
-
126
- executionContext.disableDryRun();
127
-
128
- expect(stateRepositoryMock.addToIdentityBalance).to.have.been.calledOnceWithExactly(
129
- match((arg) => arg.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
130
- balanceToTopUp,
131
- match.instanceOf(StateTransitionExecutionContext),
132
- );
133
-
134
- const outPoint = stateTransition.getAssetLockProof().getOutPoint();
135
-
136
- expect(stateRepositoryMock.markAssetLockTransactionOutPointAsUsed).to.have.been
137
- .calledOnceWithExactly(
138
- match((arg) => Buffer.from(arg).equals(outPoint)),
139
- match.instanceOf(StateTransitionExecutionContext),
140
- );
141
- });
142
- });
@@ -1,100 +0,0 @@
1
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
2
- const getIdentityUpdateTransitionFixture = require('../../../../../lib/test/fixtures/getIdentityUpdateTransitionFixture');
3
-
4
- const { default: loadWasmDpp } = require('../../../../../dist');
5
-
6
- describe('applyIdentityUpdateTransition', () => {
7
- let applyIdentityUpdateTransition;
8
- let stateRepositoryMock;
9
- let stateTransition;
10
- let executionContext;
11
-
12
- let StateTransitionExecutionContext;
13
-
14
- let applyIdentityUpdateTransitionDPP;
15
-
16
- before(async () => {
17
- ({
18
- StateTransitionExecutionContext,
19
- applyIdentityUpdateTransition: applyIdentityUpdateTransitionDPP,
20
- } = await loadWasmDpp());
21
- });
22
-
23
- beforeEach(async function beforeEach() {
24
- stateTransition = await getIdentityUpdateTransitionFixture();
25
- stateTransition.setRevision(stateTransition.getRevision() + 1);
26
-
27
- executionContext = new StateTransitionExecutionContext();
28
-
29
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
30
- stateRepositoryMock.updateIdentityRevision.resolves();
31
- stateRepositoryMock.disableIdentityKeys.resolves();
32
- stateRepositoryMock.addKeysToIdentity.resolves();
33
-
34
- applyIdentityUpdateTransition = (st) => applyIdentityUpdateTransitionDPP(
35
- stateRepositoryMock,
36
- st,
37
- executionContext,
38
- );
39
- });
40
-
41
- it('should add and disable public keys', async function () {
42
- await applyIdentityUpdateTransition(stateTransition);
43
-
44
- const { match } = this.sinonSandbox;
45
-
46
- expect(stateRepositoryMock.updateIdentityRevision).to.be.calledOnceWithExactly(
47
- match((id) => id.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
48
- stateTransition.getRevision(),
49
- match.instanceOf(StateTransitionExecutionContext),
50
- );
51
-
52
- expect(stateRepositoryMock.disableIdentityKeys).to.be.calledOnceWithExactly(
53
- match((id) => id.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
54
- stateTransition.getPublicKeyIdsToDisable(),
55
- stateTransition.getPublicKeysDisabledAt().getTime(),
56
- match.instanceOf(StateTransitionExecutionContext),
57
- );
58
-
59
- const publicKeysToAdd = stateTransition.getPublicKeysToAdd()
60
- .map((publicKey) => publicKey.toObject({ skipSignature: true }));
61
-
62
- expect(stateRepositoryMock.addKeysToIdentity).to.be.calledOnceWithExactly(
63
- match((id) => id.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
64
- match((args) => expect(args.map((k) => k.toObject())).to.deep.equals(publicKeysToAdd)),
65
- match.instanceOf(StateTransitionExecutionContext),
66
- );
67
- });
68
-
69
- it('should add and disable public keys on dry run', async function () {
70
- const { match } = this.sinonSandbox;
71
-
72
- executionContext.enableDryRun();
73
-
74
- await applyIdentityUpdateTransition(stateTransition);
75
-
76
- executionContext.disableDryRun();
77
-
78
- expect(stateRepositoryMock.updateIdentityRevision).to.be.calledOnceWithExactly(
79
- match((id) => id.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
80
- stateTransition.getRevision(),
81
- match.instanceOf(StateTransitionExecutionContext),
82
- );
83
-
84
- expect(stateRepositoryMock.disableIdentityKeys).to.be.calledOnceWithExactly(
85
- match((id) => id.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
86
- stateTransition.getPublicKeyIdsToDisable(),
87
- stateTransition.getPublicKeysDisabledAt().getTime(),
88
- match.instanceOf(StateTransitionExecutionContext),
89
- );
90
-
91
- const publicKeysToAdd = stateTransition.getPublicKeysToAdd()
92
- .map((publicKey) => publicKey.toObject({ skipSignature: true }));
93
-
94
- expect(stateRepositoryMock.addKeysToIdentity).to.be.calledOnceWithExactly(
95
- match((id) => id.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
96
- match((args) => expect(args.map((k) => k.toObject())).to.deep.equals(publicKeysToAdd)),
97
- match.instanceOf(StateTransitionExecutionContext),
98
- );
99
- });
100
- });
@@ -1,36 +0,0 @@
1
- const createAssetLockProofInstanceJS = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/createAssetLockProofInstance');
2
- const getChainAssetLockFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
3
- const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture');
4
- const { default: loadWasmDpp } = require('../../../../../dist');
5
-
6
- describe('createAssetLockProofInstance', () => {
7
- let createAssetLockProofInstance;
8
- let InstantAssetLockProof;
9
- let ChainAssetLockProof;
10
-
11
- before(async () => {
12
- ({
13
- createAssetLockProofInstance,
14
- InstantAssetLockProof,
15
- ChainAssetLockProof,
16
- } = await loadWasmDpp());
17
- });
18
-
19
- it('should create an instance of InstantAssetLockProof', () => {
20
- const assetLockProofFixture = getInstantAssetLockProofFixture();
21
- const instance = createAssetLockProofInstance(assetLockProofFixture.toObject());
22
- const instanceJS = createAssetLockProofInstanceJS(assetLockProofFixture.toObject());
23
-
24
- expect(instance.toObject()).to.deep.equal(instanceJS.toObject());
25
- expect(instance).to.be.an.instanceOf(InstantAssetLockProof);
26
- });
27
-
28
- it('should create an instance of ChainAssetLockProof', () => {
29
- const assetLockProofFixture = getChainAssetLockFixture();
30
- const instance = createAssetLockProofInstance(assetLockProofFixture.toObject());
31
- const instanceJS = createAssetLockProofInstanceJS(assetLockProofFixture.toObject());
32
-
33
- expect(instance.toObject()).to.deep.equal(instanceJS.toObject());
34
- expect(instance).to.be.an.instanceOf(ChainAssetLockProof);
35
- });
36
- });
@@ -1,63 +0,0 @@
1
- const { Script } = require('@dashevo/dashcore-lib');
2
-
3
- const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture');
4
-
5
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
6
- const { default: loadWasmpDpp } = require('../../../../../dist');
7
-
8
- describe('fetchAssetLockPublicKeyHashFactory', () => {
9
- let fetchAssetLockPublicKeyHash;
10
- let stateRepositoryMock;
11
- let executionContext;
12
-
13
- let StateTransitionExecutionContext;
14
- let InstantAssetLockProof;
15
- let AssetLockOutputNotFoundError;
16
- let fetchAssetLockPublicKeyHashDPP;
17
-
18
- before(async () => {
19
- ({
20
- StateTransitionExecutionContext,
21
- InstantAssetLockProof,
22
- AssetLockOutputNotFoundError,
23
- fetchAssetLockPublicKeyHash: fetchAssetLockPublicKeyHashDPP,
24
- } = await loadWasmpDpp());
25
- });
26
-
27
- beforeEach(function beforeEach() {
28
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
29
-
30
- executionContext = new StateTransitionExecutionContext();
31
-
32
- fetchAssetLockPublicKeyHash = (proof) => fetchAssetLockPublicKeyHashDPP(
33
- stateRepositoryMock,
34
- proof,
35
- executionContext,
36
- );
37
- });
38
-
39
- it('should return public key hash for specified asset lock proof', async () => {
40
- const assetLockProof = new InstantAssetLockProof(
41
- getInstantAssetLockProofFixture().toObject(),
42
- );
43
-
44
- const result = await fetchAssetLockPublicKeyHash(assetLockProof);
45
-
46
- expect(result).to
47
- .deep.equal(new Script(assetLockProof.getOutput().script).getData());
48
- });
49
-
50
- it('should throw AssetLockOutputNotFoundError if output is not found', async () => {
51
- try {
52
- const assetLockProofJS = getInstantAssetLockProofFixture();
53
- // Mess up TX outputs
54
- assetLockProofJS.transaction.outputs = [];
55
-
56
- const assetLockProof = new InstantAssetLockProof(assetLockProofJS.toObject());
57
- await fetchAssetLockPublicKeyHash(assetLockProof);
58
- expect.fail('should throw AssetLockOutputNotFoundError');
59
- } catch (e) {
60
- expect(e).to.be.an.instanceOf(AssetLockOutputNotFoundError);
61
- }
62
- });
63
- });
@@ -1,47 +0,0 @@
1
- const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
2
-
3
- const validateRequiredPurposeAndSecurityLevelFactory = require('@dashevo/dpp/lib/identity/validation/validateRequiredPurposeAndSecurityLevelFactory');
4
-
5
- const { expectValidationError } = require('@dashevo/dpp/lib/test/expect/expectError');
6
-
7
- const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
8
-
9
- const MissingMasterPublicKeyError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/MissingMasterPublicKeyError');
10
-
11
- describe('validateRequiredPurposeAndSecurityLevel', () => {
12
- let validateRequiredPurposeAndSecurityLevel;
13
-
14
- beforeEach(() => {
15
- validateRequiredPurposeAndSecurityLevel = (
16
- validateRequiredPurposeAndSecurityLevelFactory()
17
- );
18
- });
19
-
20
- it('should return invalid result if the state transition does not contain master key', async () => {
21
- const result = await validateRequiredPurposeAndSecurityLevel([{
22
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
23
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.CRITICAL,
24
- }, {
25
- // this key must be filtered out
26
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
27
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
28
- disabledAt: 42,
29
- }]);
30
-
31
- expectValidationError(result, MissingMasterPublicKeyError);
32
-
33
- const [error] = result.getErrors();
34
-
35
- expect(error.getCode()).to.equal(1046);
36
- });
37
-
38
- it('should return valid result', async () => {
39
- const result = await validateRequiredPurposeAndSecurityLevel([{
40
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
41
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
42
- }]);
43
-
44
- expect(result).to.be.an.instanceOf(ValidationResult);
45
- expect(result.isValid()).to.be.true();
46
- });
47
- });