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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/.mocharc.yml +1 -1
  2. package/Cargo.toml +5 -2
  3. package/README.md +5 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.LICENSE.txt +9 -0
  6. package/dist/wasm/wasm_dpp.d.ts +3397 -1237
  7. package/karma.conf.js +5 -0
  8. package/lib/identifier/patchIdentifier.ts +5 -4
  9. package/lib/index.ts +1 -1
  10. package/lib/test/bootstrap.js +5 -0
  11. package/lib/test/fixtures/getDataContractFixture.js +267 -0
  12. package/lib/test/fixtures/getDocumentsFixture.js +43 -0
  13. package/lib/test/mocks/createStateRepositoryMock.js +64 -0
  14. package/lib/test/mocks/getBlsAdapterMock.js +51 -0
  15. package/package.json +11 -8
  16. package/src/bls_adapter.rs +17 -1
  17. package/src/buffer.rs +3 -0
  18. package/src/dash_platform_protocol.rs +107 -10
  19. package/src/data_contract/data_contract.rs +59 -10
  20. package/src/data_contract/data_contract_facade.rs +128 -0
  21. package/src/data_contract/errors/invalid_data_contract.rs +16 -16
  22. package/src/data_contract/errors/invalid_document_type.rs +8 -8
  23. package/src/data_contract/errors/mod.rs +10 -16
  24. package/src/data_contract/index.rs +56 -1
  25. package/src/data_contract/mod.rs +4 -0
  26. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
  27. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +41 -10
  28. package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +35 -4
  29. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +1 -1
  30. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +20 -7
  31. package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +47 -11
  32. package/src/data_contract_factory/data_contract_factory.rs +19 -17
  33. package/src/data_trigger/data_trigger_execution_context.rs +95 -0
  34. package/src/data_trigger/data_trigger_execution_result.rs +48 -0
  35. package/src/data_trigger/execute_data_triggers_factory.rs +60 -0
  36. package/src/data_trigger/get_data_triggers_factory.rs +65 -0
  37. package/src/data_trigger/mod.rs +121 -0
  38. package/src/document/document_facade.rs +125 -0
  39. package/src/document/errors/invalid_document_error.rs +10 -9
  40. package/src/document/errors/invalid_initial_revision_error.rs +1 -1
  41. package/src/document/errors/mismatch_owners_ids_error.rs +14 -4
  42. package/src/document/errors/mod.rs +17 -13
  43. package/src/document/errors/no_documents_supplied_error.rs +4 -4
  44. package/src/document/factory.rs +257 -0
  45. package/src/document/fetch_and_validate_data_contract.rs +77 -0
  46. package/src/document/generate_document_id.rs +17 -0
  47. package/src/document/mod.rs +311 -37
  48. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +22 -0
  49. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +253 -1
  50. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +60 -1
  51. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +263 -0
  52. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +302 -3
  53. package/src/document/state_transition/document_batch_transition/mod.rs +378 -0
  54. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_id.rs +40 -0
  55. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_indices.rs +50 -0
  56. package/src/document/state_transition/document_batch_transition/validation/basic/mod.rs +8 -0
  57. package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +34 -0
  58. package/src/document/state_transition/document_batch_transition/validation/basic/validate_partial_compound_indices.rs +39 -0
  59. package/src/document/state_transition/document_batch_transition/validation/mod.rs +2 -0
  60. package/src/document/state_transition/document_batch_transition/validation/state/fetch_documents.rs +43 -0
  61. package/src/document/state_transition/document_batch_transition/validation/state/mod.rs +3 -0
  62. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +27 -0
  63. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_uniqueness_by_indices.rs +47 -0
  64. package/src/document/validator.rs +52 -0
  65. package/src/errors/compatible_protocol_version_is_not_defined_error.rs +24 -0
  66. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
  67. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
  68. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
  69. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +15 -1
  70. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +16 -2
  71. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
  72. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
  73. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +6 -2
  74. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +5 -2
  75. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +3 -3
  76. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +2 -2
  77. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +29 -0
  78. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +4 -3
  79. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
  80. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
  81. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +4 -3
  82. package/src/errors/consensus/basic/identity/mod.rs +2 -0
  83. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
  84. package/src/errors/consensus/basic/json_schema_error.rs +8 -2
  85. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
  86. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +9 -9
  87. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +4 -4
  88. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +35 -0
  89. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +34 -0
  90. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +10 -7
  91. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +2 -3
  92. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +7 -3
  93. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -3
  94. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +7 -4
  95. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +2 -1
  96. package/src/errors/consensus/state/identity/mod.rs +4 -0
  97. package/src/errors/consensus_error.rs +218 -268
  98. package/src/errors/data_contract_not_present_error.rs +23 -0
  99. package/src/errors/dpp_error.rs +17 -0
  100. package/src/errors/from.rs +22 -0
  101. package/src/errors/js_conversion.rs +52 -5
  102. package/src/errors/mod.rs +6 -0
  103. package/src/errors/protocol_error.rs +14 -3
  104. package/src/identifier/errors.rs +30 -0
  105. package/src/identifier/mod.rs +95 -11
  106. package/src/identity/errors/asset_lock_output_not_found_error.rs +11 -0
  107. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +20 -0
  108. package/src/identity/errors/invalid_identity_error.rs +32 -0
  109. package/src/identity/errors/mod.rs +9 -0
  110. package/src/identity/errors/unknown_asset_lock_proof_type_error.rs +26 -0
  111. package/src/identity/factory_utils.rs +87 -0
  112. package/src/identity/identity_facade.rs +194 -20
  113. package/src/identity/identity_factory.rs +209 -0
  114. package/src/identity/identity_public_key/mod.rs +51 -40
  115. package/src/identity/mod.rs +31 -17
  116. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +132 -0
  117. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +72 -0
  118. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +4 -0
  119. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +177 -0
  120. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +72 -0
  121. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +4 -0
  122. package/src/identity/state_transition/asset_lock_proof/mod.rs +269 -0
  123. package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +26 -0
  124. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +337 -0
  125. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +153 -0
  126. package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +37 -0
  127. package/src/identity/state_transition/identity_create_transition/mod.rs +8 -0
  128. package/src/identity/state_transition/identity_create_transition/to_object.rs +45 -0
  129. package/src/identity/state_transition/identity_public_key_transitions.rs +207 -0
  130. package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +31 -0
  131. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +278 -0
  132. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +113 -0
  133. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +37 -0
  134. package/src/identity/state_transition/identity_topup_transition/mod.rs +8 -0
  135. package/src/identity/state_transition/identity_topup_transition/to_object.rs +42 -0
  136. package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +24 -0
  137. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +55 -0
  138. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +448 -0
  139. package/src/identity/state_transition/identity_update_transition/identity_update_transition_basic_validator.rs +94 -0
  140. package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +53 -0
  141. package/src/identity/state_transition/identity_update_transition/mod.rs +9 -0
  142. package/src/identity/state_transition/identity_update_transition/to_object.rs +66 -0
  143. package/src/identity/state_transition/mod.rs +12 -0
  144. package/src/identity/state_transition/validate_public_key_signatures.rs +61 -0
  145. package/src/identity/validation/identity_validator.rs +50 -0
  146. package/src/identity/validation/mod.rs +2 -0
  147. package/src/identity/validation/public_keys_validator.rs +14 -13
  148. package/src/identity_public_key/public_keys_validator.rs +44 -0
  149. package/src/lib.rs +6 -0
  150. package/src/lodash.rs +7 -0
  151. package/src/metadata.rs +54 -10
  152. package/src/state_repository.rs +598 -101
  153. package/src/state_transition/conversion.rs +104 -0
  154. package/src/state_transition/errors/invalid_state_transition_error.rs +32 -0
  155. package/src/state_transition/errors/mod.rs +1 -0
  156. package/src/state_transition/mod.rs +46 -0
  157. package/src/state_transition/state_transition_facade.rs +263 -0
  158. package/src/state_transition/state_transition_factory.rs +216 -0
  159. package/src/state_transition/validation/mod.rs +1 -0
  160. package/src/state_transition/validation/validate_state_transition_key_signature.rs +62 -0
  161. package/src/utils.rs +210 -8
  162. package/src/validation/json_schema_validator.rs +41 -0
  163. package/src/validation/mod.rs +2 -0
  164. package/src/validation/validation_result.rs +29 -5
  165. package/src/version/mod.rs +2 -0
  166. package/src/version/protocol_version.rs +103 -0
  167. package/test/integration/dataContract/DataContractFacade.spec.js +46 -30
  168. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +45 -127
  169. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +91 -139
  170. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +577 -503
  171. package/test/integration/document/Document.spec.js +55 -29
  172. package/test/integration/document/DocumentFacade.spec.js +51 -64
  173. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +38 -16
  174. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +341 -396
  175. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +116 -218
  176. package/test/integration/document/validation/validateDocumentFactory.spec.js +123 -171
  177. package/test/integration/identity/IdentityFacade.spec.js +52 -27
  178. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +185 -164
  179. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +84 -114
  180. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +120 -137
  181. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +106 -91
  182. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +50 -16
  183. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +78 -86
  184. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +74 -30
  185. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +93 -147
  186. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +65 -77
  187. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +60 -23
  188. package/test/integration/identity/validation/validateIdentityFactory.spec.js +46 -114
  189. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +9 -3
  190. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +12 -8
  191. package/test/integration/stateTransition/StateTransitionFacade.spec.js +95 -233
  192. package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +53 -0
  193. package/test/unit/Identifier.spec.js +36 -36
  194. package/test/unit/Metadata.spec.js +17 -3
  195. package/test/unit/dataContract/DataContract.spec.js +9 -4
  196. package/test/unit/dataContract/createDataContract.spec.js +0 -1
  197. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +3 -3
  198. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
  199. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +2 -2
  200. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -3
  201. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
  202. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +25 -31
  203. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +3 -3
  204. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +2 -0
  205. package/test/unit/decodeProtocolEntityFactory.spec.js +2 -2
  206. package/test/unit/document/Document.spec.js +147 -155
  207. package/test/unit/document/DocumentFactory.spec.js +153 -153
  208. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +59 -14
  209. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +131 -62
  210. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +144 -56
  211. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +38 -8
  212. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +11 -7
  213. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +29 -18
  214. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +38 -29
  215. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +53 -91
  216. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +357 -493
  217. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +133 -72
  218. package/test/unit/identity/Identity.spec.js +26 -9
  219. package/test/unit/identity/IdentityFactory.spec.js +81 -89
  220. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +73 -30
  221. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +38 -38
  222. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +34 -25
  223. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +36 -16
  224. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +85 -50
  225. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +24 -6
  226. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +44 -22
  227. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +58 -103
  228. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +63 -0
  229. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +90 -0
  230. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +18 -3
  231. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +38 -11
  232. package/test/unit/stateTransition/StateTransitionFactory.spec.js +49 -101
  233. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +23 -25
  234. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +73 -46
  235. package/test/unit/version/validateProtocolVersionFactory.spec.js +45 -27
  236. package/wasm/package.json +5 -0
  237. package/wasm/wasm_dpp.d.ts +3397 -1237
  238. package/wasm/wasm_dpp.js +7158 -1384
  239. package/wasm/wasm_dpp_bg.js +1 -1
  240. package/wasm/wasm_dpp_bg.wasm +0 -0
  241. package/wasm/wasm_dpp_bg.wasm.d.ts +777 -389
  242. package/webpack.config.js +9 -0
  243. package/src/document/state_transition/document_batch_transition/document_transition/document_update_transition.rs +0 -22
  244. package/test/integration/stateTransition/calculateStateTransitionFeeFactory.spec.js +0 -135
  245. package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +0 -54
@@ -1,52 +1,58 @@
1
- const { PublicKey } = require('@dashevo/dashcore-lib');
2
- const Identity = require('@dashevo/dpp/lib/identity/Identity');
3
- const IdentityCreateTransition = require('@dashevo/dpp/lib/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition');
4
- const IdentityTopUpTransition = require('@dashevo/dpp/lib/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition');
5
-
6
1
  const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
7
-
8
- const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
9
- const SerializedObjectParsingError = require('@dashevo/dpp/lib/errors/consensus/basic/decode/SerializedObjectParsingError');
10
-
11
- const InvalidIdentityError = require(
12
- '@dashevo/dpp/lib/identity/errors/InvalidIdentityError',
13
- );
14
2
  const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture');
15
- const InstantAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/instant/InstantAssetLockProof');
16
3
  const getChainAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
17
- const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock');
18
- const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
19
- const IdentityFactory = require('@dashevo/dpp/lib/identity/IdentityFactory');
20
- const IdentityUpdateTransition = require('@dashevo/dpp/lib/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition');
21
4
  const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
5
+ const { default: loadWasmDpp } = require('../../../dist');
6
+ const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
22
7
 
23
8
  describe('IdentityFactory', () => {
24
9
  let factory;
25
- let validateIdentityMock;
26
- let decodeProtocolEntityMock;
27
10
  let identity;
28
11
  let instantAssetLockProof;
29
12
  let chainAssetLockProof;
30
- let dppMock;
31
13
  let fakeTime;
32
14
 
33
- beforeEach(function beforeEach() {
34
- validateIdentityMock = this.sinonSandbox.stub();
35
- decodeProtocolEntityMock = this.sinonSandbox.stub();
15
+ let Identity;
16
+ let IdentityFactory;
17
+ let IdentityValidator;
18
+ let InstantAssetLockProof;
19
+ let IdentityCreateTransition;
20
+ let IdentityTopUpTransition;
21
+ let IdentityUpdateTransition;
22
+ let IdentityPublicKeyCreateTransition;
23
+ let InvalidIdentityError;
24
+ let SerializedObjectParsingError;
25
+ let UnsupportedProtocolVersionError;
26
+ let ChainAssetLockProof;
27
+
28
+ before(async () => {
29
+ ({
30
+ Identity, IdentityFactory, IdentityValidator,
31
+ InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
32
+ IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyCreateTransition,
33
+ InvalidIdentityError, UnsupportedProtocolVersionError, SerializedObjectParsingError,
34
+ } = await loadWasmDpp());
35
+ });
36
36
 
37
- instantAssetLockProof = getInstantAssetLockProofFixture();
38
- chainAssetLockProof = getChainAssetLockProofFixture();
37
+ beforeEach(async function () {
38
+ const instantAssetLockProofJS = getInstantAssetLockProofFixture();
39
+ const chainAssetLockProofJS = getChainAssetLockProofFixture();
40
+ instantAssetLockProof = new InstantAssetLockProof(instantAssetLockProofJS.toObject());
41
+ chainAssetLockProof = new ChainAssetLockProof(chainAssetLockProofJS.toObject());
39
42
 
40
- dppMock = createDPPMock();
43
+ const blsAdapter = await getBlsAdapterMock();
44
+
45
+ const identityValidator = new IdentityValidator(blsAdapter);
41
46
 
42
47
  factory = new IdentityFactory(
43
- dppMock,
44
- validateIdentityMock,
45
- decodeProtocolEntityMock,
48
+ 1,
49
+ identityValidator,
46
50
  );
47
51
 
48
- identity = getIdentityFixture();
49
- identity.id = instantAssetLockProof.createIdentifier();
52
+ const identityObject = getIdentityFixture().toObject();
53
+ identityObject.id = instantAssetLockProof.createIdentifier();
54
+
55
+ identity = new Identity(identityObject);
50
56
  identity.setAssetLockProof(instantAssetLockProof);
51
57
  identity.setBalance(0);
52
58
 
@@ -57,19 +63,12 @@ describe('IdentityFactory', () => {
57
63
  fakeTime.reset();
58
64
  });
59
65
 
60
- describe('#constructor', () => {
61
- it('should set validator', () => {
62
- expect(factory.validateIdentity).to.equal(validateIdentityMock);
63
- });
64
- });
65
-
66
66
  describe('#create', () => {
67
67
  it('should create Identity from asset lock transaction, output index, proof and public keys', () => {
68
68
  const publicKeys = identity
69
69
  .getPublicKeys()
70
70
  .map((identityPublicKey) => ({
71
71
  ...identityPublicKey.toObject(),
72
- key: new PublicKey(identityPublicKey.getData()),
73
72
  readonly: true,
74
73
  }));
75
74
 
@@ -85,30 +84,28 @@ describe('IdentityFactory', () => {
85
84
 
86
85
  describe('#createFromObject', () => {
87
86
  it('should skip validation if options is set', () => {
88
- factory.createFromObject({}, { skipValidation: true });
89
-
90
- expect(validateIdentityMock).to.have.not.been.called();
87
+ const identityObject = identity.toObject();
88
+ identityObject.protocolVersion = 100;
89
+ const result = factory.createFromObject(identityObject, { skipValidation: true });
90
+ expect(result).to.exist();
91
91
  });
92
92
 
93
93
  it('should throw an error if validation have failed', () => {
94
- const errors = [new SomeConsensusError('error')];
95
-
96
- validateIdentityMock.returns(new ValidationResult(errors));
94
+ const identityObject = identity.toObject();
95
+ identityObject.protocolVersion = 3;
97
96
 
98
97
  try {
99
- factory.createFromObject(identity.toObject());
98
+ factory.createFromObject(identityObject);
100
99
 
101
100
  expect.fail('error was not thrown');
102
101
  } catch (e) {
103
102
  expect(e).to.be.an.instanceOf(InvalidIdentityError);
104
- expect(e.getErrors()).to.have.deep.members(errors);
105
- expect(e.getRawIdentity()).to.deep.equal(identity.toObject());
103
+ expect(e.getErrors()[0]).to.be.instanceOf(UnsupportedProtocolVersionError);
104
+ expect(e.getRawIdentity()).to.deep.equal(identityObject);
106
105
  }
107
106
  });
108
107
 
109
108
  it('should create an identity if validation passed', () => {
110
- validateIdentityMock.returns(new ValidationResult());
111
-
112
109
  const result = factory.createFromObject(identity.toObject());
113
110
 
114
111
  expect(result).to.be.an.instanceOf(Identity);
@@ -120,42 +117,20 @@ describe('IdentityFactory', () => {
120
117
  let serializedIdentity;
121
118
  let rawIdentity;
122
119
 
123
- beforeEach(function beforeEach() {
124
- this.sinonSandbox.stub(factory, 'createFromObject');
125
-
120
+ beforeEach(() => {
126
121
  serializedIdentity = identity.toBuffer();
127
122
  rawIdentity = identity.toObject();
128
123
  });
129
124
 
130
- afterEach(() => {
131
- factory.createFromObject.restore();
132
- });
133
-
134
125
  it('should return new Identity from serialized one', () => {
135
- decodeProtocolEntityMock.returns([rawIdentity.protocolVersion, rawIdentity]);
136
-
137
- factory.createFromObject.returns(identity);
138
-
139
126
  const result = factory.createFromBuffer(serializedIdentity);
140
-
141
- expect(result).to.equal(identity);
142
-
143
- expect(factory.createFromObject).to.have.been.calledOnceWith(rawIdentity);
144
-
145
- expect(decodeProtocolEntityMock).to.have.been.calledOnceWithExactly(
146
- serializedIdentity,
147
- );
127
+ expect(result.toObject()).to.deep.equal(rawIdentity);
148
128
  });
149
129
 
150
130
  it('should throw InvalidIdentityError if the decoding fails with consensus error', () => {
151
- const parsingError = new SerializedObjectParsingError(
152
- serializedIdentity,
153
- new Error(),
154
- );
155
-
156
- decodeProtocolEntityMock.throws(parsingError);
157
-
158
131
  try {
132
+ // Mess up protocol version
133
+ serializedIdentity[0] = 3;
159
134
  factory.createFromBuffer(serializedIdentity);
160
135
 
161
136
  expect.fail('should throw InvalidIdentityError');
@@ -163,21 +138,18 @@ describe('IdentityFactory', () => {
163
138
  expect(e).to.be.an.instanceOf(InvalidIdentityError);
164
139
 
165
140
  const [innerError] = e.getErrors();
166
- expect(innerError).to.equal(parsingError);
141
+ expect(innerError).to.be.instanceOf(UnsupportedProtocolVersionError);
167
142
  }
168
143
  });
169
144
 
170
145
  it('should throw an error if decoding fails with any other error', () => {
171
- const parsingError = new Error('Something failed during parsing');
172
-
173
- decodeProtocolEntityMock.throws(parsingError);
174
-
175
146
  try {
147
+ serializedIdentity = serializedIdentity.slice(4);
176
148
  factory.createFromBuffer(serializedIdentity);
177
149
 
178
150
  expect.fail('should throw an error');
179
151
  } catch (e) {
180
- expect(e).to.equal(parsingError);
152
+ expect(e).to.be.instanceOf(SerializedObjectParsingError);
181
153
  }
182
154
  });
183
155
  });
@@ -204,7 +176,15 @@ describe('IdentityFactory', () => {
204
176
  const stateTransition = factory.createIdentityCreateTransition(identity);
205
177
 
206
178
  expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
207
- expect(stateTransition.getPublicKeys()).to.deep.equal(identity.getPublicKeys());
179
+ const keysToExpect = stateTransition.getPublicKeys()
180
+ .map((key) => {
181
+ const keyObject = key.toObject();
182
+ delete keyObject.signature;
183
+ return keyObject;
184
+ });
185
+
186
+ expect(keysToExpect)
187
+ .to.deep.equal(identity.getPublicKeys().map((key) => key.toObject()));
208
188
  expect(stateTransition.getAssetLockProof().toObject())
209
189
  .to.deep.equal(instantAssetLockProof.toObject());
210
190
  });
@@ -212,15 +192,25 @@ describe('IdentityFactory', () => {
212
192
 
213
193
  describe('createChainAssetLockProof', () => {
214
194
  it('should create IdentityCreateTransition from Identity model', () => {
215
- identity = getIdentityFixture();
216
- identity.id = chainAssetLockProof.createIdentifier();
195
+ const identityObject = getIdentityFixture().toObject();
196
+ identityObject.id = chainAssetLockProof.createIdentifier();
197
+ identity = new Identity(identityObject);
217
198
  identity.setAssetLockProof(chainAssetLockProof);
218
199
  identity.setBalance(0);
219
200
 
220
201
  const stateTransition = factory.createIdentityCreateTransition(identity);
221
202
 
222
203
  expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
223
- expect(stateTransition.getPublicKeys()).deep.to.equal(identity.getPublicKeys());
204
+ const keysToExpect = stateTransition.getPublicKeys()
205
+ .map((key) => {
206
+ const keyObject = key.toObject();
207
+ delete keyObject.signature;
208
+ return keyObject;
209
+ });
210
+
211
+ expect(keysToExpect)
212
+ .to.deep.equal(identity.getPublicKeys().map((key) => key.toObject()));
213
+
224
214
  expect(stateTransition.getAssetLockProof().toObject())
225
215
  .to.deep.equal(chainAssetLockProof.toObject());
226
216
  });
@@ -235,7 +225,7 @@ describe('IdentityFactory', () => {
235
225
  );
236
226
 
237
227
  expect(stateTransition).to.be.instanceOf(IdentityTopUpTransition);
238
- expect(stateTransition.getIdentityId()).to.deep.equal(identity.getId());
228
+ expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(identity.getId().toBuffer());
239
229
  expect(stateTransition.getAssetLockProof().toObject())
240
230
  .to.deep.equal(instantAssetLockProof.toObject());
241
231
  });
@@ -245,13 +235,14 @@ describe('IdentityFactory', () => {
245
235
  it('should create IdentityUpdateTransition', () => {
246
236
  const revision = 1;
247
237
  const disablePublicKeys = [identity.getPublicKeyById(0)];
248
- const addPublicKeys = [new IdentityPublicKey({
238
+ const addPublicKeys = [new IdentityPublicKeyCreateTransition({
249
239
  id: 0,
250
240
  type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
251
241
  data: Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'),
252
242
  purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
253
243
  securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
254
244
  readOnly: false,
245
+ signature: Buffer.alloc(0),
255
246
  })];
256
247
 
257
248
  const stateTransition = factory
@@ -264,9 +255,10 @@ describe('IdentityFactory', () => {
264
255
  );
265
256
 
266
257
  expect(stateTransition).to.be.instanceOf(IdentityUpdateTransition);
267
- expect(stateTransition.getIdentityId()).to.deep.equal(identity.getId());
258
+ expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(identity.getId().toBuffer());
268
259
  expect(stateTransition.getRevision()).to.deep.equal(revision);
269
- expect(stateTransition.getPublicKeysToAdd()).to.deep.equal(addPublicKeys);
260
+ expect(stateTransition.getPublicKeysToAdd().map((key) => key.toObject()))
261
+ .to.deep.equal(addPublicKeys.map((key) => key.toObject()));
270
262
  expect(stateTransition.getPublicKeyIdsToDisable()).to.deep.equal([0]);
271
263
  expect(stateTransition.getPublicKeysDisabledAt()).to.deep.equal(new Date());
272
264
  });
@@ -1,35 +1,69 @@
1
- const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
2
-
3
- const stateTransitionTypes = require(
4
- '@dashevo/dpp/lib/stateTransition/stateTransitionTypes',
5
- );
1
+ const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
2
+ const getChainAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
6
3
 
4
+ const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
7
5
  const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
8
- const IdentityCreateTransition = require('@dashevo/dpp/lib/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition');
9
- const Identifier = require('@dashevo/dpp/lib/identifier/Identifier');
10
-
11
- const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
12
- const InstantAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/instant/InstantAssetLockProof');
6
+ const { default: loadWasmDpp } = require('../../../../../dist');
13
7
 
14
8
  describe('IdentityCreateTransition', () => {
15
9
  let rawStateTransition;
16
10
  let stateTransition;
17
11
 
12
+ let IdentityCreateTransition;
13
+ let InstantAssetLockProof;
14
+ let KeyType;
15
+ let KeyPurpose;
16
+ let KeySecurityLevel;
17
+ let Identifier;
18
+ let IdentityPublicKeyCreateTransition;
19
+
20
+ const mockRawPublicKey = (params = {}) => ({
21
+ id: 0,
22
+ type: KeyType.ECDSA_SECP256K1,
23
+ data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
24
+ purpose: KeyPurpose.AUTHENTICATION,
25
+ securityLevel: KeySecurityLevel.MASTER,
26
+ signature: Buffer.alloc(32).fill(1),
27
+ readOnly: false,
28
+ ...params,
29
+ });
30
+
31
+ before(async () => {
32
+ ({
33
+ IdentityCreateTransition,
34
+ IdentityPublicKeyCreateTransition,
35
+ KeyType,
36
+ KeyPurpose,
37
+ KeySecurityLevel,
38
+ InstantAssetLockProof, Identifier,
39
+ } = await loadWasmDpp());
40
+ });
41
+
18
42
  beforeEach(() => {
19
- stateTransition = getIdentityCreateTransitionFixture();
20
- rawStateTransition = stateTransition.toObject();
43
+ rawStateTransition = getIdentityCreateTransitionFixture().toObject();
44
+ stateTransition = new IdentityCreateTransition(
45
+ rawStateTransition,
46
+ );
21
47
  });
22
48
 
23
49
  describe('#constructor', () => {
24
- it('should create an instance with specified data', () => {
50
+ it('should create instance with specified data', () => {
25
51
  expect(stateTransition.getAssetLockProof().toObject()).to.deep.equal(
26
52
  rawStateTransition.assetLockProof,
27
53
  );
28
54
 
29
- expect(stateTransition.publicKeys).to.deep.equal([
30
- new IdentityPublicKey(rawStateTransition.publicKeys[0]),
55
+ expect(stateTransition.publicKeys.map((key) => key.toObject())).to.deep.equal([
56
+ new IdentityPublicKeyCreateTransition(rawStateTransition.publicKeys[0]).toObject(),
31
57
  ]);
32
58
  });
59
+
60
+ it('should create instance with chain asset lock proof', () => {
61
+ const stObject = stateTransition.toObject();
62
+ stObject.assetLockProof = getChainAssetLockProofFixture().toObject();
63
+ stateTransition = new IdentityCreateTransition(stObject);
64
+ expect(stateTransition.getAssetLockProof().toObject())
65
+ .to.deep.equal(stObject.assetLockProof);
66
+ });
33
67
  });
34
68
 
35
69
  describe('#getType', () => {
@@ -53,8 +87,8 @@ describe('IdentityCreateTransition', () => {
53
87
  new InstantAssetLockProof(rawStateTransition.assetLockProof),
54
88
  );
55
89
 
56
- expect(stateTransition.identityId).to.deep.equal(
57
- stateTransition.getAssetLockProof().createIdentifier(),
90
+ expect(stateTransition.identityId.toBuffer()).to.deep.equal(
91
+ stateTransition.getAssetLockProof().createIdentifier().toBuffer(),
58
92
  );
59
93
  });
60
94
  });
@@ -69,44 +103,53 @@ describe('IdentityCreateTransition', () => {
69
103
 
70
104
  describe('#setPublicKeys', () => {
71
105
  it('should set public keys', () => {
72
- const publicKeys = [new IdentityPublicKey(), new IdentityPublicKey()];
106
+ const publicKeys = [
107
+ new IdentityPublicKeyCreateTransition(mockRawPublicKey({ id: 0 })),
108
+ new IdentityPublicKeyCreateTransition(mockRawPublicKey({ id: 1 })),
109
+ ];
73
110
 
74
111
  stateTransition.setPublicKeys(publicKeys);
75
112
 
76
- expect(stateTransition.publicKeys).to.have.deep.members(publicKeys);
113
+ expect(stateTransition.publicKeys.map((key) => key.toObject()))
114
+ .to.have.deep.members(publicKeys.map((key) => key.toObject()));
77
115
  });
78
116
  });
79
117
 
80
118
  describe('#getPublicKeys', () => {
81
119
  it('should return set public keys', () => {
82
- expect(stateTransition.getPublicKeys()).to.deep.equal(
83
- rawStateTransition.publicKeys.map((rawPublicKey) => new IdentityPublicKey(rawPublicKey)),
120
+ expect(stateTransition.getPublicKeys().map((key) => key.toObject())).to.deep.equal(
121
+ rawStateTransition.publicKeys
122
+ .map((rawPublicKey) => new IdentityPublicKeyCreateTransition(rawPublicKey).toObject()),
84
123
  );
85
124
  });
86
125
  });
87
126
 
88
127
  describe('#addPublicKeys', () => {
89
128
  it('should add more public keys', () => {
90
- const publicKeys = [new IdentityPublicKey(), new IdentityPublicKey()];
129
+ const publicKeys = [
130
+ new IdentityPublicKeyCreateTransition(mockRawPublicKey({ id: 0 })),
131
+ new IdentityPublicKeyCreateTransition(mockRawPublicKey({ id: 1 })),
132
+ ];
91
133
 
92
- stateTransition.publicKeys = [];
134
+ stateTransition.setPublicKeys([]);
93
135
  stateTransition.addPublicKeys(publicKeys);
94
- expect(stateTransition.getPublicKeys()).to.have.deep.members(publicKeys);
136
+ expect(stateTransition.getPublicKeys().map((key) => key.toObject()))
137
+ .to.have.deep.members(publicKeys.map((key) => key.toObject()));
95
138
  });
96
139
  });
97
140
 
98
141
  describe('#getIdentityId', () => {
99
142
  it('should return identity id', () => {
100
- expect(stateTransition.getIdentityId()).to.deep.equal(
101
- stateTransition.getAssetLockProof().createIdentifier(),
143
+ expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(
144
+ stateTransition.getAssetLockProof().createIdentifier().toBuffer(),
102
145
  );
103
146
  });
104
147
  });
105
148
 
106
149
  describe('#getOwnerId', () => {
107
150
  it('should return owner id', () => {
108
- expect(stateTransition.getOwnerId()).to.equal(
109
- stateTransition.getIdentityId(),
151
+ expect(stateTransition.getOwnerId().toBuffer()).to.deep.equal(
152
+ stateTransition.getIdentityId().toBuffer(),
110
153
  );
111
154
  });
112
155
  });
@@ -158,8 +201,8 @@ describe('IdentityCreateTransition', () => {
158
201
  const identityId = result[0];
159
202
 
160
203
  expect(identityId).to.be.an.instanceOf(Identifier);
161
- expect(identityId).to.be.deep.equal(
162
- new IdentityCreateTransition(rawStateTransition).getIdentityId(),
204
+ expect(identityId.toBuffer()).to.be.deep.equal(
205
+ new IdentityCreateTransition(rawStateTransition).getIdentityId().toBuffer(),
163
206
  );
164
207
  });
165
208
  });
@@ -1,9 +1,3 @@
1
- const Identity = require('@dashevo/dpp/lib/identity/Identity');
2
-
3
- const applyIdentityCreateTransitionFactory = require(
4
- '@dashevo/dpp/lib/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory',
5
- );
6
-
7
1
  const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
8
2
 
9
3
  const { convertSatoshiToCredits } = require('@dashevo/dpp/lib/identity/creditsConverter');
@@ -11,21 +5,40 @@ const { convertSatoshiToCredits } = require('@dashevo/dpp/lib/identity/creditsCo
11
5
  const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
12
6
 
13
7
  const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
14
- const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
15
- const ReadOperation = require('@dashevo/dpp/lib/stateTransition/fee/operations/ReadOperation');
8
+
9
+ const { default: loadWasmDpp } = require('../../../../../dist');
16
10
 
17
11
  describe('applyIdentityCreateTransitionFactory', () => {
18
12
  let stateTransition;
19
13
  let applyIdentityCreateTransition;
20
14
  let stateRepositoryMock;
21
- let fetchAssetLockTransactionOutputMock;
22
15
  let output;
23
16
  let executionContext;
24
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
+
25
33
  beforeEach(function beforeEach() {
26
34
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
35
+ stateRepositoryMock.createIdentity.resolves();
36
+ stateRepositoryMock.addToSystemCredits.resolves();
37
+ stateRepositoryMock.markAssetLockTransactionOutPointAsUsed.resolves();
27
38
 
28
- stateTransition = getIdentityCreateTransitionFixture();
39
+ stateTransition = new IdentityCreateTransition(
40
+ getIdentityCreateTransitionFixture().toObject(),
41
+ );
29
42
 
30
43
  executionContext = new StateTransitionExecutionContext();
31
44
 
@@ -33,19 +46,13 @@ describe('applyIdentityCreateTransitionFactory', () => {
33
46
 
34
47
  output = stateTransition.getAssetLockProof().getOutput();
35
48
 
36
- fetchAssetLockTransactionOutputMock = this.sinonSandbox.stub().resolves(output);
37
-
38
- applyIdentityCreateTransition = applyIdentityCreateTransitionFactory(
49
+ applyIdentityCreateTransition = (st) => applyIdentityCreateTransitionDPP(
39
50
  stateRepositoryMock,
40
- fetchAssetLockTransactionOutputMock,
51
+ st,
41
52
  );
42
53
  });
43
54
 
44
- it('should store identity created from state transition', async () => {
45
- executionContext.addOperation(
46
- new ReadOperation(1),
47
- );
48
-
55
+ it('should store identity created from state transition', async function () {
49
56
  await applyIdentityCreateTransition(stateTransition);
50
57
 
51
58
  const balance = convertSatoshiToCredits(
@@ -55,36 +62,29 @@ describe('applyIdentityCreateTransitionFactory', () => {
55
62
  const identity = new Identity({
56
63
  protocolVersion: protocolVersion.latestVersion,
57
64
  id: stateTransition.getIdentityId(),
58
- publicKeys: stateTransition.getPublicKeys().map((key) => key.toObject()),
65
+ publicKeys: stateTransition.getPublicKeys()
66
+ .map((key) => key.toObject({ skipSignature: true })),
59
67
  balance,
60
68
  revision: 0,
61
69
  });
62
70
 
71
+ const { match } = this.sinonSandbox;
72
+
63
73
  expect(stateRepositoryMock.createIdentity).to.have.been.calledOnceWithExactly(
64
- identity,
65
- executionContext,
74
+ match((arg) => expect(arg.toObject()).to.deep.equal(identity.toObject())),
75
+ match.instanceOf(StateTransitionExecutionContext),
66
76
  );
67
77
 
68
- const publicKeyHashes = identity
69
- .getPublicKeys()
70
- .map((publicKey) => publicKey.hash());
71
-
72
- expect(stateRepositoryMock.storeIdentityPublicKeyHashes).to.have.been.calledOnceWithExactly(
73
- identity.getId(),
74
- publicKeyHashes,
75
- executionContext,
78
+ expect(stateRepositoryMock.addToSystemCredits).to.have.been.calledOnceWithExactly(
79
+ balance,
80
+ match.instanceOf(StateTransitionExecutionContext),
76
81
  );
77
82
 
83
+ const outPoint = stateTransition.getAssetLockProof().getOutPoint();
78
84
  expect(stateRepositoryMock.markAssetLockTransactionOutPointAsUsed).to.have.been
79
85
  .calledOnceWithExactly(
80
- stateTransition.getAssetLockProof().getOutPoint(),
81
- executionContext,
82
- );
83
-
84
- expect(fetchAssetLockTransactionOutputMock)
85
- .to.be.calledOnceWithExactly(
86
- stateTransition.getAssetLockProof(),
87
- executionContext,
86
+ match((arg) => Buffer.from(arg).equals(outPoint)),
87
+ match.instanceOf(StateTransitionExecutionContext),
88
88
  );
89
89
  });
90
90
  });