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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/Cargo.toml +33 -7
  2. package/README.md +11 -6
  3. package/dist/errors/patchConsensusErrors.js +94 -115
  4. package/dist/wasm/wasm_dpp.d.ts +2213 -4113
  5. package/dist/wasm/wasm_dpp.js +17748 -2639
  6. package/dist/wasm/wasm_dpp_bg.js +1 -1
  7. package/lib/dpp.ts +1 -1
  8. package/lib/errors/patchConsensusErrors.ts +94 -93
  9. package/lib/test/bootstrap.js +5 -0
  10. package/lib/test/fixtures/getDataContractFixture.js +11 -5
  11. package/lib/test/fixtures/getDocumentsFixture.js +9 -5
  12. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
  13. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
  14. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  15. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  16. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  17. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  18. package/lib/test/fixtures/js/generateRandomIdentifier.js +1 -0
  19. package/lib/test/fixtures/js/getChainAssetLockProofFixture.js +1 -0
  20. package/lib/test/fixtures/js/getDataContractFixture.js +1 -0
  21. package/lib/test/fixtures/js/getDocumentTransitionsFixture.js +1 -0
  22. package/lib/test/fixtures/js/getDocumentsFixture.js +1 -0
  23. package/lib/test/fixtures/js/getInstantAssetLockProofFixture.js +1 -0
  24. package/lib/test/mocks/createStateRepositoryMock.js +1 -0
  25. package/lib/wasm/wasm_dpp.d.ts +2213 -4113
  26. package/package.json +6 -6
  27. package/scripts/build-wasm.sh +30 -29
  28. package/src/bls_adapter.rs +1 -1
  29. package/src/dash_platform_protocol.rs +173 -196
  30. package/src/data_contract/data_contract.rs +309 -199
  31. package/src/data_contract/data_contract_facade.rs +28 -47
  32. package/src/data_contract/errors/mod.rs +1 -0
  33. package/src/data_contract/mod.rs +2 -2
  34. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +92 -79
  35. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
  36. package/src/data_contract_factory/data_contract_factory.rs +43 -83
  37. package/src/document/document_facade.rs +81 -76
  38. package/src/document/errors/document_already_exists_error.rs +6 -6
  39. package/src/document/errors/document_no_revision_error.rs +1 -0
  40. package/src/document/errors/document_not_provided_error.rs +6 -6
  41. package/src/document/errors/invalid_document_action_error.rs +11 -7
  42. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  43. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  44. package/src/document/errors/mod.rs +5 -0
  45. package/src/document/errors/revision_absent_error.rs +6 -6
  46. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  47. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  48. package/src/document/extended_document.rs +76 -76
  49. package/src/document/factory.rs +140 -119
  50. package/src/document/generate_document_id.rs +2 -2
  51. package/src/document/mod.rs +164 -150
  52. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +50 -48
  53. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  54. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  55. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +165 -153
  56. package/src/document/state_transition/document_batch_transition/mod.rs +232 -222
  57. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
  58. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
  59. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
  60. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
  61. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
  62. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
  63. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
  64. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
  65. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
  66. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
  67. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
  68. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
  69. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
  70. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
  71. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
  72. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
  73. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
  74. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
  75. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
  76. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
  77. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
  78. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
  79. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
  80. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
  81. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
  82. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
  83. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
  84. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
  85. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
  86. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
  87. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
  88. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
  89. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
  90. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
  91. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
  92. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
  93. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
  94. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -9
  95. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
  96. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
  97. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
  98. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
  99. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
  100. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
  101. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
  102. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
  103. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
  104. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
  105. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
  106. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
  107. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
  108. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
  109. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
  110. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
  111. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
  112. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
  113. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
  114. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
  115. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
  116. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
  117. package/src/errors/consensus/basic/json_schema_error.rs +1 -9
  118. package/src/errors/consensus/basic/mod.rs +2 -0
  119. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -9
  120. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  121. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -9
  122. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
  123. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
  124. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
  125. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  126. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
  127. package/src/errors/consensus/consensus_error.rs +44 -21
  128. package/src/errors/consensus/deserialize.rs +2 -1
  129. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
  130. package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
  131. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
  132. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
  133. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
  134. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
  135. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
  136. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
  137. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -1
  138. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
  139. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
  140. package/src/errors/consensus/state/data_contract/mod.rs +7 -1
  141. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
  142. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
  143. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
  144. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
  145. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
  146. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
  147. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
  148. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
  149. package/src/errors/consensus/state/document/mod.rs +2 -0
  150. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
  151. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
  152. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
  153. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
  154. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
  155. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
  156. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
  157. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
  158. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
  159. package/src/errors/consensus/value_error.rs +1 -9
  160. package/src/errors/from.rs +12 -8
  161. package/src/errors/mod.rs +7 -7
  162. package/src/errors/value_error.rs +5 -0
  163. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
  164. package/src/identity/factory_utils.rs +13 -13
  165. package/src/identity/identity.rs +275 -0
  166. package/src/identity/identity_facade.rs +87 -70
  167. package/src/identity/identity_factory.rs +74 -54
  168. package/src/identity/identity_public_key/mod.rs +87 -64
  169. package/src/identity/mod.rs +25 -247
  170. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  171. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  172. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +2 -2
  173. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  174. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  175. package/src/identity/state_transition/asset_lock_proof/mod.rs +112 -116
  176. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +71 -65
  177. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  178. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  179. package/src/identity/state_transition/identity_create_transition/to_object.rs +10 -12
  180. package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
  181. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
  182. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
  183. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
  184. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
  185. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
  186. package/src/identity/state_transition/identity_public_key_transitions.rs +89 -75
  187. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +67 -62
  188. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  189. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  190. package/src/identity/state_transition/identity_topup_transition/to_object.rs +8 -12
  191. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  192. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
  193. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  194. package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
  195. package/src/identity/state_transition/mod.rs +5 -2
  196. package/src/identity/state_transition/transition_types.rs +34 -0
  197. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  198. package/src/lib.rs +10 -11
  199. package/src/metadata.rs +3 -3
  200. package/src/protocol_version.rs +7 -0
  201. package/src/state_transition/conversion.rs +11 -1
  202. package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
  203. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  204. package/src/state_transition/mod.rs +137 -139
  205. package/src/state_transition/state_transition_facade.rs +11 -11
  206. package/src/state_transition/state_transition_factory.rs +142 -153
  207. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  208. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +28 -10
  209. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  210. package/src/utils.rs +7 -8
  211. package/src/validation/validation_result.rs +1 -0
  212. package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
  213. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
  214. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
  215. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
  216. package/test/integration/document/Document.spec.js +3 -3
  217. package/test/integration/document/DocumentFacade.spec.js +39 -38
  218. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +6 -7
  219. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
  220. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +2 -2
  221. package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
  222. package/test/integration/identity/IdentityFacade.spec.js +33 -62
  223. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
  224. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
  225. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  226. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
  227. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  228. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
  229. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
  230. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +4 -5
  231. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
  232. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +3 -7
  233. package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
  234. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
  235. package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
  236. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  237. package/test/unit/DashPlatformProtocol.spec.js +10 -25
  238. package/test/unit/dataContract/DataContract.spec.js +119 -148
  239. package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
  240. package/test/unit/dataContract/createDataContract.spec.js +6 -6
  241. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  242. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
  243. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +7 -9
  244. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
  245. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +28 -19
  246. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +7 -7
  247. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
  248. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
  249. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
  250. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +1 -1
  251. package/test/unit/document/Document.spec.js +31 -20
  252. package/test/unit/document/DocumentFactory.spec.js +45 -110
  253. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  254. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +6 -7
  255. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +11 -12
  256. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
  257. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
  258. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +1 -1
  259. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +1 -1
  260. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +1 -1
  261. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +9 -9
  262. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
  263. package/test/unit/identity/Identity.spec.js +46 -81
  264. package/test/unit/identity/IdentityFactory.spec.js +61 -75
  265. package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
  266. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
  267. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +9 -15
  268. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
  269. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
  270. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +9 -13
  271. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
  272. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
  273. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +4 -4
  274. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
  275. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
  276. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  277. package/test/unit/stateTransition/StateTransitionFactory.spec.js +16 -22
  278. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
  279. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
  280. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
  281. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
  282. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
  283. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  284. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  285. package/test-d/index.test-d.ts +2 -2
  286. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  287. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  288. package/src/decode_protocol_entity.rs +0 -25
  289. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
  290. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
  291. package/test/integration/util/generateEntropy.spec.js +0 -17
  292. package/test/integration/util/serializer.spec.js +0 -24
  293. package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
  294. package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
  295. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
@@ -1,49 +1,26 @@
1
- const varint = require('varint');
2
- const JSIdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
3
- const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
4
- const JSIdentity = require('@dashevo/dpp/lib/identity/Identity');
5
-
6
1
  const { hash: hashFunction } = require('@dashevo/dpp/lib/util/hash');
7
2
  const { expect } = require('chai');
8
3
  const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync');
9
- const { default: loadWasmDpp } = require('../../../dist');
4
+ const {
5
+ Identity, Metadata, IdentityPublicKey, KeyPurpose, KeyType, KeySecurityLevel,
6
+ Identifier,
7
+ } = require('../../..');
10
8
 
11
9
  describe('Identity', () => {
12
10
  let rawIdentity;
13
11
  let identity;
14
12
  let metadataFixture;
15
- let Identity;
16
- let Metadata;
17
- let IdentityPublicKey;
18
- let KeyPurpose;
19
- let KeyType;
20
- let KeySecurityLevel;
21
-
22
- before(async () => {
23
- ({
24
- Identity, Metadata, IdentityPublicKey, KeyPurpose, KeyType, KeySecurityLevel,
25
- } = await loadWasmDpp());
26
- });
27
13
 
28
14
  beforeEach(async () => {
29
- rawIdentity = {
30
- protocolVersion: protocolVersion.latestVersion,
31
- id: await generateRandomIdentifierAsync(),
32
- publicKeys: [
33
- {
34
- id: 0,
35
- type: KeyType.ECDSA_SECP256K1,
36
- data: Buffer.alloc(36).fill('a'),
37
- purpose: KeyPurpose.AUTHENTICATION,
38
- securityLevel: KeySecurityLevel.MASTER,
39
- readOnly: false,
40
- },
41
- ],
42
- balance: 0,
43
- revision: 0,
44
- };
45
-
46
- identity = new Identity(rawIdentity);
15
+ identity = new Identity(1);
16
+ identity.setId(await generateRandomIdentifierAsync());
17
+
18
+ const publicKey = new IdentityPublicKey(1);
19
+ publicKey.setData(Buffer.alloc(36).fill('a'));
20
+
21
+ identity.setPublicKeys([publicKey]);
22
+
23
+ rawIdentity = identity.toObject();
47
24
 
48
25
  metadataFixture = new Metadata({
49
26
  blockHeight: 42,
@@ -62,14 +39,11 @@ describe('Identity', () => {
62
39
  });
63
40
  });
64
41
 
65
- afterEach(() => {
66
- });
67
-
68
42
  describe('#constructor', () => {
69
43
  it('should set variables from raw model', () => {
70
44
  const instance = identity;
71
45
 
72
- expect(instance.getId().toBuffer()).to.deep.equal(rawIdentity.id.toBuffer());
46
+ expect(instance.getId()).to.deep.equal(rawIdentity.id);
73
47
  expect(
74
48
  instance.getPublicKeys().map((pk) => pk.toObject()),
75
49
  ).to.deep.equal(
@@ -80,7 +54,7 @@ describe('Identity', () => {
80
54
 
81
55
  describe('#getId', () => {
82
56
  it('should return set id', () => {
83
- expect(identity.getId().toBuffer()).to.deep.equal(rawIdentity.id.toBuffer());
57
+ expect(identity.getId()).to.deep.equal(rawIdentity.id);
84
58
  });
85
59
  });
86
60
 
@@ -101,15 +75,20 @@ describe('Identity', () => {
101
75
 
102
76
  it('should set public keys', () => {
103
77
  const rawKey = {
78
+ $version: '0',
104
79
  id: 2,
105
80
  type: KeyType.ECDSA_SECP256K1,
106
81
  data: Buffer.alloc(36).fill('a'),
107
82
  purpose: KeyPurpose.AUTHENTICATION,
108
83
  securityLevel: KeySecurityLevel.MASTER,
109
84
  readOnly: false,
85
+ disabledAt: null,
86
+ contractBounds: null,
110
87
  };
111
88
 
112
- const ipk = new JSIdentityPublicKey(rawKey);
89
+ const ipk = new IdentityPublicKey(1);
90
+ ipk.setData(Buffer.alloc(36).fill('a'));
91
+ ipk.setId(2);
113
92
 
114
93
  identity.setPublicKeys([ipk]);
115
94
  expect(identity.getPublicKeys()).length(1);
@@ -135,14 +114,19 @@ describe('Identity', () => {
135
114
  });
136
115
 
137
116
  describe('#toBuffer', () => {
138
- it('should return the same buffer as JS Identity', () => {
139
- // Due to browser polyfill, we got two different versions of buffers, and makes
140
- // the compatibility test to fail in karma, so hence this hack here.
141
- rawIdentity.id = Buffer.from(rawIdentity.id.toBuffer());
142
- const oldIdentity = new JSIdentity(rawIdentity);
117
+ it('should return buffer', () => {
143
118
  const result = identity.toBuffer();
119
+ expect(result).to.be.instanceOf(Buffer);
120
+ expect(result).to.have.length(82);
121
+ });
122
+ });
144
123
 
145
- expect(result).to.deep.eq(oldIdentity.toBuffer());
124
+ describe('#fromBuffer', () => {
125
+ it('should re-create identity from buffer', () => {
126
+ const buffer = identity.toBuffer();
127
+ const recoveredIdentity = Identity.fromBuffer(buffer);
128
+ expect(recoveredIdentity.toObject())
129
+ .to.be.deep.equal(identity.toObject());
146
130
  });
147
131
  });
148
132
 
@@ -150,12 +134,6 @@ describe('Identity', () => {
150
134
  it('should return the same has as JS Identity', () => {
151
135
  const expectedHash = hashFunction(identity.toBuffer());
152
136
  const result = identity.hash();
153
-
154
- const identityDataToEncode = identity.toObject();
155
- delete identityDataToEncode.protocolVersion;
156
-
157
- varint.encode(identity.getProtocolVersion());
158
-
159
137
  expect(result).to.deep.equal(expectedHash);
160
138
  });
161
139
  });
@@ -163,10 +141,6 @@ describe('Identity', () => {
163
141
  describe('#toObject', () => {
164
142
  it('should return plain object representation', () => {
165
143
  const identityObject = identity.toObject();
166
-
167
- // We can't compare Identifier directly - it needs to be converted into a Buffer
168
- rawIdentity.id = rawIdentity.id.toBuffer();
169
-
170
144
  expect(identityObject).to.deep.equal(rawIdentity);
171
145
  });
172
146
  });
@@ -176,16 +150,19 @@ describe('Identity', () => {
176
150
  const jsonIdentity = identity.toJSON();
177
151
 
178
152
  expect(jsonIdentity).to.deep.equal({
179
- protocolVersion: protocolVersion.latestVersion,
180
- id: rawIdentity.id.toString(),
153
+ $version: '0',
154
+ id: Identifier.from(rawIdentity.id).toString(),
181
155
  publicKeys: [
182
156
  {
157
+ $version: '0',
183
158
  id: 0,
184
159
  type: KeyType.ECDSA_SECP256K1,
185
160
  data: rawIdentity.publicKeys[0].data.toString('base64'),
186
161
  purpose: KeyPurpose.AUTHENTICATION,
187
162
  securityLevel: KeySecurityLevel.MASTER,
188
163
  readOnly: false,
164
+ disabledAt: null,
165
+ contractBounds: null,
189
166
  },
190
167
  ],
191
168
  balance: 0,
@@ -257,27 +234,15 @@ describe('Identity', () => {
257
234
 
258
235
  describe('#getPublicKeyMaxId', () => {
259
236
  it('should get the biggest public key ID', () => {
260
- const key = new IdentityPublicKey({
261
- id: 99,
262
- type: KeyType.ECDSA_SECP256K1,
263
- data: Buffer.alloc(36).fill('a'),
264
- purpose: KeyPurpose.AUTHENTICATION,
265
- securityLevel: KeySecurityLevel.MASTER,
266
- signature: Buffer.alloc(36).fill('a'),
267
- readOnly: false,
268
- });
269
- identity.addPublicKeys(
270
- key,
271
- new IdentityPublicKey({
272
- id: 50,
273
- type: KeyType.ECDSA_SECP256K1,
274
- data: Buffer.alloc(36).fill('a'),
275
- purpose: KeyPurpose.AUTHENTICATION,
276
- securityLevel: KeySecurityLevel.MASTER,
277
- signature: Buffer.alloc(36).fill('a'),
278
- readOnly: false,
279
- }),
280
- );
237
+ const key1 = new IdentityPublicKey(1);
238
+ key1.setId(99);
239
+ key1.setData(Buffer.alloc(36).fill('a'));
240
+
241
+ const key2 = new IdentityPublicKey(1);
242
+ key2.setId(50);
243
+ key2.setData(Buffer.alloc(36).fill('a'));
244
+
245
+ identity.addPublicKeys([key1, key2]);
281
246
 
282
247
  const maxId = identity.getPublicKeyMaxId();
283
248
 
@@ -1,9 +1,13 @@
1
- const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
2
- const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture');
3
- const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
1
+ const getInstantAssetLockProofFixture = require('../../../lib/test/fixtures/getInstantAssetLockProofFixture');
2
+ const getIdentityFixture = require('../../../lib/test/fixtures/getIdentityFixture');
4
3
  const getChainAssetLockProofFixture = require('../../../lib/test/fixtures/getChainAssetLockProofFixture');
5
- const { default: loadWasmDpp } = require('../../../dist');
6
- const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
4
+ const {
5
+ Identity, IdentityFactory,
6
+ InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
7
+ IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyWithWitness,
8
+ InvalidIdentityError, UnsupportedProtocolVersionError,
9
+ } = require('../../..');
10
+ const { SerializedObjectParsingError } = require('../../..');
7
11
 
8
12
  describe('IdentityFactory', () => {
9
13
  let factory;
@@ -12,48 +16,17 @@ describe('IdentityFactory', () => {
12
16
  let chainAssetLockProof;
13
17
  let fakeTime;
14
18
 
15
- let Identity;
16
- let IdentityFactory;
17
- let IdentityValidator;
18
- let InstantAssetLockProof;
19
- let IdentityCreateTransition;
20
- let IdentityTopUpTransition;
21
- let IdentityUpdateTransition;
22
- let IdentityPublicKeyWithWitness;
23
- let InvalidIdentityError;
24
- let PlatformValueError;
25
- let UnsupportedProtocolVersionError;
26
- let ChainAssetLockProof;
27
-
28
- before(async () => {
29
- ({
30
- Identity, IdentityFactory, IdentityValidator,
31
- InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
32
- IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyWithWitness,
33
- InvalidIdentityError, UnsupportedProtocolVersionError, PlatformValueError,
34
- } = await loadWasmDpp());
35
- });
36
-
37
- beforeEach(async function () {
38
- const instantAssetLockProofJS = getInstantAssetLockProofFixture();
39
- const chainAssetLockProofJS = getChainAssetLockProofFixture();
40
- instantAssetLockProof = new InstantAssetLockProof(instantAssetLockProofJS.toObject());
41
- chainAssetLockProof = new ChainAssetLockProof(chainAssetLockProofJS.toObject());
42
-
43
- const blsAdapter = await getBlsAdapterMock();
19
+ beforeEach(async function beforeEach() {
20
+ instantAssetLockProof = await getInstantAssetLockProofFixture();
21
+ chainAssetLockProof = new ChainAssetLockProof(getChainAssetLockProofFixture().toObject());
44
22
 
45
- const identityValidator = new IdentityValidator(blsAdapter);
23
+ // const blsAdapter = await getBlsAdapterMock();
46
24
 
47
- factory = new IdentityFactory(
48
- 1,
49
- identityValidator,
50
- );
25
+ // const identityValidator = new IdentityValidator(blsAdapter);
51
26
 
52
- const identityObject = getIdentityFixture().toObject();
53
- identityObject.id = instantAssetLockProof.createIdentifier();
27
+ factory = new IdentityFactory(1);
54
28
 
55
- identity = new Identity(identityObject);
56
- identity.setAssetLockProof(instantAssetLockProof);
29
+ identity = await getIdentityFixture(instantAssetLockProof.createIdentifier());
57
30
  identity.setBalance(0);
58
31
 
59
32
  fakeTime = this.sinonSandbox.useFakeTimers(new Date());
@@ -65,15 +38,12 @@ describe('IdentityFactory', () => {
65
38
 
66
39
  describe('#create', () => {
67
40
  it('should create Identity from asset lock transaction, output index, proof and public keys', () => {
68
- const publicKeys = identity
69
- .getPublicKeys()
70
- .map((identityPublicKey) => ({
71
- ...identityPublicKey.toObject(),
72
- readonly: true,
73
- }));
41
+ const publicKeys = identity.getPublicKeys();
42
+ publicKeys.forEach((key) => key.setReadOnly(true));
43
+ identity.setPublicKeys(publicKeys);
74
44
 
75
45
  const result = factory.create(
76
- instantAssetLockProof,
46
+ instantAssetLockProof.createIdentifier(),
77
47
  publicKeys,
78
48
  );
79
49
 
@@ -82,7 +52,8 @@ describe('IdentityFactory', () => {
82
52
  });
83
53
  });
84
54
 
85
- describe('#createFromObject', () => {
55
+ // TODO(versioning): re-check. Not used anymore
56
+ describe.skip('#createFromObject', () => {
86
57
  it('should skip validation if options is set', () => {
87
58
  const identityObject = identity.toObject();
88
59
  identityObject.protocolVersion = 100;
@@ -90,7 +61,8 @@ describe('IdentityFactory', () => {
90
61
  expect(result).to.exist();
91
62
  });
92
63
 
93
- it('should throw an error if validation have failed', () => {
64
+ // TODO(versioning): restore
65
+ it.skip('should throw an error if validation have failed', () => {
94
66
  const identityObject = identity.toObject();
95
67
  identityObject.protocolVersion = 3;
96
68
 
@@ -127,7 +99,8 @@ describe('IdentityFactory', () => {
127
99
  expect(result.toObject()).to.deep.equal(rawIdentity);
128
100
  });
129
101
 
130
- it('should throw InvalidIdentityError if the decoding fails with consensus error', () => {
102
+ // TODO(versioning): restore
103
+ it.skip('should throw InvalidIdentityError if the decoding fails with consensus error', () => {
131
104
  try {
132
105
  // Mess up protocol version
133
106
  serializedIdentity[0] = 3;
@@ -142,14 +115,15 @@ describe('IdentityFactory', () => {
142
115
  }
143
116
  });
144
117
 
145
- it('should throw an error if decoding fails with any other error', () => {
118
+ // TODO(versioning): restore
119
+ it.skip('should throw an error if decoding fails with any other error', () => {
146
120
  try {
147
121
  serializedIdentity = serializedIdentity.slice(4);
148
122
  factory.createFromBuffer(serializedIdentity);
149
123
 
150
124
  expect.fail('should throw an error');
151
125
  } catch (e) {
152
- expect(e).to.be.instanceOf(PlatformValueError);
126
+ expect(e).to.be.instanceOf(SerializedObjectParsingError);
153
127
  }
154
128
  });
155
129
  });
@@ -173,7 +147,11 @@ describe('IdentityFactory', () => {
173
147
 
174
148
  describe('#createIdentityCreateTransition', () => {
175
149
  it('should create IdentityCreateTransition from Identity model', () => {
176
- const stateTransition = factory.createIdentityCreateTransition(identity);
150
+ const stateTransition = factory.createIdentityCreateTransition(
151
+ identity,
152
+ instantAssetLockProof,
153
+ 1,
154
+ );
177
155
 
178
156
  expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
179
157
  const keysToExpect = stateTransition.getPublicKeys()
@@ -183,22 +161,29 @@ describe('IdentityFactory', () => {
183
161
  return keyObject;
184
162
  });
185
163
 
164
+ const actualKeys = identity.getPublicKeys().map((key) => {
165
+ const keyObject = key.toObject();
166
+ delete keyObject.disabledAt;
167
+ return keyObject;
168
+ });
169
+
186
170
  expect(keysToExpect)
187
- .to.deep.equal(identity.getPublicKeys().map((key) => key.toObject()));
171
+ .to.deep.equal(actualKeys);
188
172
  expect(stateTransition.getAssetLockProof().toObject())
189
173
  .to.deep.equal(instantAssetLockProof.toObject());
190
174
  });
191
175
  });
192
176
 
193
177
  describe('createChainAssetLockProof', () => {
194
- it('should create IdentityCreateTransition from Identity model', () => {
195
- const identityObject = getIdentityFixture().toObject();
196
- identityObject.id = chainAssetLockProof.createIdentifier();
197
- identity = new Identity(identityObject);
198
- identity.setAssetLockProof(chainAssetLockProof);
178
+ it('should create IdentityCreateTransition from Identity model', async () => {
179
+ identity = await getIdentityFixture(chainAssetLockProof.createIdentifier());
199
180
  identity.setBalance(0);
200
181
 
201
- const stateTransition = factory.createIdentityCreateTransition(identity);
182
+ const stateTransition = factory.createIdentityCreateTransition(
183
+ identity,
184
+ chainAssetLockProof,
185
+ 1,
186
+ );
202
187
 
203
188
  expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
204
189
  const keysToExpect = stateTransition.getPublicKeys()
@@ -208,8 +193,14 @@ describe('IdentityFactory', () => {
208
193
  return keyObject;
209
194
  });
210
195
 
196
+ const actualKeys = identity.getPublicKeys().map((key) => {
197
+ const keyObject = key.toObject();
198
+ delete keyObject.disabledAt;
199
+ return keyObject;
200
+ });
201
+
211
202
  expect(keysToExpect)
212
- .to.deep.equal(identity.getPublicKeys().map((key) => key.toObject()));
203
+ .to.deep.equal(actualKeys);
213
204
 
214
205
  expect(stateTransition.getAssetLockProof().toObject())
215
206
  .to.deep.equal(chainAssetLockProof.toObject());
@@ -235,15 +226,10 @@ describe('IdentityFactory', () => {
235
226
  it('should create IdentityUpdateTransition', () => {
236
227
  const revision = 1;
237
228
  const disablePublicKeys = [identity.getPublicKeyById(0)];
238
- const addPublicKeys = [new IdentityPublicKeyWithWitness({
239
- id: 0,
240
- type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
241
- data: Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'),
242
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
243
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
244
- readOnly: false,
245
- signature: Buffer.alloc(0),
246
- })];
229
+ const key = new IdentityPublicKeyWithWitness(1);
230
+ key.setData(Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'));
231
+
232
+ const addPublicKeys = [key];
247
233
 
248
234
  const stateTransition = factory
249
235
  .createIdentityUpdateTransition(
@@ -257,8 +243,8 @@ describe('IdentityFactory', () => {
257
243
  expect(stateTransition).to.be.instanceOf(IdentityUpdateTransition);
258
244
  expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(identity.getId().toBuffer());
259
245
  expect(stateTransition.getRevision()).to.deep.equal(revision);
260
- expect(stateTransition.getPublicKeysToAdd().map((key) => key.toObject()))
261
- .to.deep.equal(addPublicKeys.map((key) => key.toObject()));
246
+ expect(stateTransition.getPublicKeysToAdd().map((k) => k.toObject()))
247
+ .to.deep.equal(addPublicKeys.map((k) => k.toObject()));
262
248
  expect(stateTransition.getPublicKeyIdsToDisable()).to.deep.equal([0]);
263
249
  expect(stateTransition.getPublicKeysDisabledAt()).to.deep.equal(new Date());
264
250
  });
@@ -1,31 +1,31 @@
1
- const { default: loadWasmDpp } = require('@dashevo/wasm-dpp');
1
+ const { IdentityPublicKey } = require('@dashevo/wasm-dpp');
2
2
 
3
3
  describe('IdentityPublicKey', () => {
4
4
  let rawPublicKey;
5
5
  let publicKey;
6
- let IdentityPublicKey;
7
6
 
8
- beforeEach(async () => {
9
- ({ IdentityPublicKey } = await loadWasmDpp());
7
+ beforeEach(() => {
8
+ const keyData = Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64');
10
9
 
11
10
  rawPublicKey = {
12
11
  id: 0,
13
12
  type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
14
- data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
13
+ data: keyData,
15
14
  purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
16
15
  securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
17
16
  readOnly: false,
17
+ contractBounds: null,
18
18
  };
19
- publicKey = new IdentityPublicKey(rawPublicKey);
19
+
20
+ publicKey = new IdentityPublicKey(1);
21
+ publicKey.setData(keyData);
20
22
  });
21
23
 
22
24
  describe('#constructor', () => {
23
25
  it('should set variables from raw model', () => {
24
- const instance = new IdentityPublicKey(rawPublicKey);
25
-
26
- expect(instance.getId()).to.equal(rawPublicKey.id);
27
- expect(instance.getType()).to.equal(rawPublicKey.type);
28
- expect(instance.getData()).to.deep.equal(rawPublicKey.data);
26
+ expect(publicKey.getId()).to.equal(rawPublicKey.id);
27
+ expect(publicKey.getType()).to.equal(rawPublicKey.type);
28
+ expect(publicKey.getData()).to.deep.equal(rawPublicKey.data);
29
29
  });
30
30
  });
31
31
 
@@ -145,37 +145,21 @@ describe('IdentityPublicKey', () => {
145
145
  });
146
146
 
147
147
  it('should return data in case ECDSA_HASH160', () => {
148
- rawPublicKey = {
149
- id: 0,
150
- type: IdentityPublicKey.TYPES.ECDSA_HASH160,
151
- data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
152
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
153
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
154
- readOnly: false,
155
- disabledAt: 123,
156
- };
157
-
158
- publicKey = new IdentityPublicKey(rawPublicKey);
148
+ publicKey = new IdentityPublicKey(1);
149
+ publicKey.setType(IdentityPublicKey.TYPES.ECDSA_HASH160);
150
+ publicKey.setData(Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTdi', 'base64'));
159
151
 
160
152
  const result = publicKey.hash();
161
153
 
162
- const expectedHash = Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64');
154
+ const expectedHash = Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTdg=', 'base64');
163
155
 
164
156
  expect(result).to.deep.equal(expectedHash);
165
157
  });
166
158
 
167
159
  it('should return original public key hash in case BLS12_381', () => {
168
- rawPublicKey = {
169
- id: 0,
170
- type: IdentityPublicKey.TYPES.BLS12_381,
171
- data: Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'),
172
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
173
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
174
- readOnly: false,
175
- disabledAt: 123,
176
- };
177
-
178
- publicKey = new IdentityPublicKey(rawPublicKey);
160
+ publicKey = new IdentityPublicKey(1);
161
+ publicKey.setType(IdentityPublicKey.TYPES.BLS12_381);
162
+ publicKey.setData(Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'));
179
163
 
180
164
  const result = publicKey.hash();
181
165
 
@@ -185,17 +169,9 @@ describe('IdentityPublicKey', () => {
185
169
  });
186
170
 
187
171
  it('should return data in case BIP13_SCRIPT_HASH', () => {
188
- rawPublicKey = {
189
- id: 0,
190
- type: IdentityPublicKey.TYPES.BIP13_SCRIPT_HASH,
191
- data: Buffer.from('54c557e07dde5bb6cb791c7a540e0a4796f5e97e', 'hex'),
192
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
193
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
194
- readOnly: false,
195
- disabledAt: 123,
196
- };
197
-
198
- publicKey = new IdentityPublicKey(rawPublicKey);
172
+ publicKey = new IdentityPublicKey(1);
173
+ publicKey.setType(IdentityPublicKey.TYPES.BIP13_SCRIPT_HASH);
174
+ publicKey.setData(Buffer.from('54c557e07dde5bb6cb791c7a540e0a4796f5e97e', 'hex'));
199
175
 
200
176
  const result = publicKey.hash();
201
177
 
@@ -207,32 +183,42 @@ describe('IdentityPublicKey', () => {
207
183
 
208
184
  describe('#toJSON', () => {
209
185
  it('should return JSON representation', () => {
186
+ const now = new Date();
187
+ publicKey.setDisabledAt(now);
188
+
210
189
  const jsonPublicKey = publicKey.toJSON();
211
190
 
212
191
  expect(jsonPublicKey).to.deep.equal({
192
+ $version: '0',
213
193
  id: 0,
214
194
  type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
215
195
  data: 'AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH',
216
196
  purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
217
197
  securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
218
198
  readOnly: false,
199
+ disabledAt: now.getTime(),
200
+ contractBounds: null,
219
201
  });
220
202
  });
203
+ });
221
204
 
222
- it('should return JSON representation with optional properties', () => {
205
+ describe('#toObject', () => {
206
+ it('should return object representation', () => {
223
207
  const now = new Date();
224
208
  publicKey.setDisabledAt(now);
225
209
 
226
- const jsonPublicKey = publicKey.toJSON();
210
+ const jsonPublicKey = publicKey.toObject();
227
211
 
228
212
  expect(jsonPublicKey).to.deep.equal({
213
+ $version: '0',
229
214
  id: 0,
230
215
  type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
231
- data: 'AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH',
216
+ data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
232
217
  purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
233
218
  securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
234
219
  readOnly: false,
235
220
  disabledAt: now.getTime(),
221
+ contractBounds: null,
236
222
  });
237
223
  });
238
224
  });