@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,64 +1,73 @@
1
- const { expectValidationError } = require(
2
- '@dashevo/dpp/lib/test/expect/expectError',
3
- );
4
-
5
- const validateIdentityCreateTransitionStateFactory = require(
6
- '@dashevo/dpp/lib/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory',
7
- );
8
-
9
1
  const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
10
2
 
11
- const IdentityAlreadyExistsError = require(
12
- '@dashevo/dpp/lib/errors/consensus/state/identity/IdentityAlreadyExistsError',
13
- );
14
-
15
3
  const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
16
- const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
4
+
5
+ const { default: loadWasmDpp } = require('../../../../../../../dist');
6
+ const { expectValidationError } = require('../../../../../../../lib/test/expect/expectError');
17
7
 
18
8
  describe('validateIdentityCreateTransitionStateFactory', () => {
19
9
  let validateIdentityCreateTransitionState;
20
10
  let stateTransition;
21
11
  let stateRepositoryMock;
22
12
 
23
- beforeEach(async function beforeEach() {
24
- const privateKey = 'af432c476f65211f45f48f1d42c9c0b497e56696aa1736b40544ef1a496af837';
13
+ let IdentityCreateTransition;
14
+ let IdentityPublicKey;
15
+ let IdentityAlreadyExistsError;
16
+ let IdentityCreateTransitionStateValidator;
17
+
18
+ before(async () => {
19
+ ({
20
+ IdentityCreateTransition,
21
+ IdentityAlreadyExistsError,
22
+ IdentityPublicKey,
23
+ IdentityCreateTransitionStateValidator,
24
+ } = await loadWasmDpp());
25
+ });
26
+
27
+ beforeEach(async function () {
28
+ const privateKey = Buffer.from('af432c476f65211f45f48f1d42c9c0b497e56696aa1736b40544ef1a496af837', 'hex');
25
29
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
26
30
 
27
- validateIdentityCreateTransitionState = validateIdentityCreateTransitionStateFactory(
28
- stateRepositoryMock,
29
- );
31
+ const validator = new IdentityCreateTransitionStateValidator(stateRepositoryMock);
32
+ validateIdentityCreateTransitionState = (st) => validator.validate(st);
30
33
 
31
- stateTransition = getIdentityCreateTransitionFixture();
34
+ stateTransition = new IdentityCreateTransition(
35
+ getIdentityCreateTransitionFixture().toObject(),
36
+ );
32
37
 
33
38
  await stateTransition.signByPrivateKey(privateKey, IdentityPublicKey.TYPES.ECDSA_SECP256K1);
34
39
 
35
40
  const rawTransaction = '030000000137feb5676d0851337ea3c9a992496aab7a0b3eee60aeeb9774000b7f4bababa5000000006b483045022100d91557de37645c641b948c6cd03b4ae3791a63a650db3e2fee1dcf5185d1b10402200e8bd410bf516ca61715867666d31e44495428ce5c1090bf2294a829ebcfa4ef0121025c3cc7fbfc52f710c941497fd01876c189171ea227458f501afcb38a297d65b4ffffffff021027000000000000166a14152073ca2300a86b510fa2f123d3ea7da3af68dcf77cb0090a0000001976a914152073ca2300a86b510fa2f123d3ea7da3af68dc88ac00000000';
36
41
 
37
- stateRepositoryMock.fetchTransaction.resolves(rawTransaction);
42
+ stateRepositoryMock.fetchTransaction.resolves({
43
+ data: Buffer.from(rawTransaction, 'hex'),
44
+ height: 42,
45
+ });
38
46
  });
39
47
 
40
48
  it('should return invalid result if identity already exists', async () => {
41
- stateRepositoryMock.fetchIdentity.resolves({});
49
+ stateRepositoryMock.fetchIdentityBalance.resolves(1);
42
50
 
43
51
  const result = await validateIdentityCreateTransitionState(stateTransition);
44
52
 
45
- expectValidationError(result, IdentityAlreadyExistsError, 1);
53
+ await expectValidationError(result, IdentityAlreadyExistsError);
46
54
 
47
55
  const [error] = result.getErrors();
48
56
 
49
57
  expect(error.getCode()).to.equal(4011);
50
- expect(Buffer.isBuffer(error.getIdentityId())).to.be.true();
51
- expect(error.getIdentityId()).to.deep.equal(stateTransition.getIdentityId());
58
+ expect(error.getIdentityId()).to.exist();
59
+ expect(error.getIdentityId()).to.deep.equal(stateTransition.getIdentityId().toBuffer());
52
60
  });
53
61
 
54
62
  it('should return valid result if state transition is valid', async () => {
63
+ stateRepositoryMock.fetchIdentityBalance.resolves();
55
64
  const result = await validateIdentityCreateTransitionState(stateTransition);
56
65
 
57
66
  expect(result.isValid()).to.be.true();
58
67
  });
59
68
 
60
69
  it('should return valid result on dry run', async () => {
61
- stateRepositoryMock.fetchIdentity.resolves({});
70
+ stateRepositoryMock.fetchIdentityBalance.resolves(1);
62
71
 
63
72
  stateTransition.getExecutionContext().enableDryRun();
64
73
 
@@ -1,20 +1,30 @@
1
- const stateTransitionTypes = require(
2
- '@dashevo/dpp/lib/stateTransition/stateTransitionTypes',
3
- );
4
-
5
- const Identifier = require('@dashevo/dpp/lib/identifier/Identifier');
6
-
7
1
  const getIdentityTopUpTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture');
2
+ const getChainAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
8
3
 
4
+ const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
9
5
  const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
6
+ const { default: loadWasmDpp } = require('../../../../../dist');
10
7
 
11
8
  describe('IdentityTopUpTransition', () => {
12
9
  let rawStateTransition;
13
10
  let stateTransition;
14
11
 
12
+ let IdentityTopUpTransition;
13
+ let InstantAssetLockProof;
14
+ let Identifier;
15
+
16
+ before(async () => {
17
+ ({
18
+ IdentityTopUpTransition, InstantAssetLockProof, Identifier,
19
+ } = await loadWasmDpp());
20
+ });
21
+
15
22
  beforeEach(() => {
16
- stateTransition = getIdentityTopUpTransitionFixture();
17
- rawStateTransition = stateTransition.toObject();
23
+ rawStateTransition = getIdentityTopUpTransitionFixture().toObject();
24
+
25
+ stateTransition = new IdentityTopUpTransition(
26
+ rawStateTransition,
27
+ );
18
28
  });
19
29
 
20
30
  describe('#constructor', () => {
@@ -22,10 +32,17 @@ describe('IdentityTopUpTransition', () => {
22
32
  expect(stateTransition.getAssetLockProof().toObject()).to.be.deep.equal(
23
33
  rawStateTransition.assetLockProof,
24
34
  );
25
- expect(stateTransition.getIdentityId()).to.be.deep.equal(
35
+ expect(stateTransition.getIdentityId().toBuffer()).to.be.deep.equal(
26
36
  rawStateTransition.identityId,
27
37
  );
28
38
  });
39
+
40
+ it('should create instance with chain asset lock proof', () => {
41
+ rawStateTransition.assetLockProof = getChainAssetLockProofFixture().toObject();
42
+ stateTransition = new IdentityTopUpTransition(rawStateTransition);
43
+ expect(stateTransition.getAssetLockProof().toObject())
44
+ .to.deep.equal(rawStateTransition.assetLockProof);
45
+ });
29
46
  });
30
47
 
31
48
  describe('#getType', () => {
@@ -36,13 +53,16 @@ describe('IdentityTopUpTransition', () => {
36
53
 
37
54
  describe('#setAssetLockProof', () => {
38
55
  it('should set asset lock proof', () => {
39
- stateTransition.setAssetLockProof(rawStateTransition.assetLockProof);
56
+ stateTransition.setAssetLockProof(
57
+ new InstantAssetLockProof(rawStateTransition.assetLockProof),
58
+ );
40
59
 
41
- expect(stateTransition.assetLockProof).to.deep.equal(rawStateTransition.assetLockProof);
60
+ expect(stateTransition.assetLockProof.toObject())
61
+ .to.deep.equal(rawStateTransition.assetLockProof);
42
62
  });
43
63
  });
44
64
 
45
- describe('#getAssetLock', () => {
65
+ describe('#getAssetLockProof', () => {
46
66
  it('should return currently set asset lock proof', () => {
47
67
  expect(stateTransition.getAssetLockProof().toObject()).to.deep.equal(
48
68
  rawStateTransition.assetLockProof,
@@ -52,7 +72,7 @@ describe('IdentityTopUpTransition', () => {
52
72
 
53
73
  describe('#getIdentityId', () => {
54
74
  it('should return identity id', () => {
55
- expect(stateTransition.getIdentityId()).to.deep.equal(
75
+ expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(
56
76
  rawStateTransition.identityId,
57
77
  );
58
78
  });
@@ -60,7 +80,7 @@ describe('IdentityTopUpTransition', () => {
60
80
 
61
81
  describe('#getOwnerId', () => {
62
82
  it('should return owner id', () => {
63
- expect(stateTransition.getOwnerId()).to.deep.equal(
83
+ expect(stateTransition.getOwnerId().toBuffer()).to.deep.equal(
64
84
  rawStateTransition.identityId,
65
85
  );
66
86
  });
@@ -99,7 +119,7 @@ describe('IdentityTopUpTransition', () => {
99
119
  protocolVersion: protocolVersion.latestVersion,
100
120
  type: stateTransitionTypes.IDENTITY_TOP_UP,
101
121
  assetLockProof: stateTransition.getAssetLockProof().toJSON(),
102
- identityId: Identifier(rawStateTransition.identityId).toString(),
122
+ identityId: new Identifier(rawStateTransition.identityId).toString(),
103
123
  signature: undefined,
104
124
  });
105
125
  });
@@ -113,7 +133,7 @@ describe('IdentityTopUpTransition', () => {
113
133
  const identityId = result[0];
114
134
 
115
135
  expect(identityId).to.be.an.instanceOf(Identifier);
116
- expect(identityId).to.be.deep.equal(rawStateTransition.identityId);
136
+ expect(identityId.toBuffer()).to.be.deep.equal(rawStateTransition.identityId);
117
137
  });
118
138
  });
119
139
 
@@ -1,80 +1,120 @@
1
- const applyIdentityTopUpTransitionFactory = require(
2
- '@dashevo/dpp/lib/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory',
3
- );
4
-
5
- const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
6
1
  const getIdentityTopUpTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture');
7
2
 
8
3
  const { convertSatoshiToCredits } = require('@dashevo/dpp/lib/identity/creditsConverter');
9
4
 
10
5
  const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
11
- const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
12
- const getBiggestPossibleIdentity = require('@dashevo/dpp/lib/identity/getBiggestPossibleIdentity');
6
+
7
+ const { default: loadWasmDpp } = require('../../../../../dist');
13
8
 
14
9
  describe('applyIdentityTopUpTransitionFactory', () => {
15
10
  let stateTransition;
16
11
  let applyIdentityTopUpTransition;
17
12
  let stateRepositoryMock;
18
- let identity;
19
- let fetchAssetLockTransactionOutputMock;
20
13
  let executionContext;
21
14
 
22
- beforeEach(function beforeEach() {
23
- identity = getIdentityFixture();
15
+ let StateTransitionExecutionContext;
16
+ let IdentityTopUpTransition;
17
+
18
+ let applyIdentityTopUpTransitionDPP;
19
+
20
+ before(async () => {
21
+ ({
22
+ StateTransitionExecutionContext,
23
+ IdentityTopUpTransition,
24
+ applyIdentityTopUpTransition: applyIdentityTopUpTransitionDPP,
25
+ } = await loadWasmDpp());
26
+ });
24
27
 
28
+ beforeEach(async function beforeEach() {
25
29
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
26
- stateRepositoryMock.fetchIdentity.resolves(identity);
30
+ stateRepositoryMock.fetchIdentityBalanceWithDebt.resolves(0);
31
+ stateRepositoryMock.addToIdentityBalance.resolves();
32
+ stateRepositoryMock.addToSystemCredits.resolves();
33
+ stateRepositoryMock.markAssetLockTransactionOutPointAsUsed.resolves();
27
34
 
28
- stateTransition = getIdentityTopUpTransitionFixture();
35
+ const rawTransaction = '030000000137feb5676d0851337ea3c9a992496aab7a0b3eee60aeeb9774000b7f4bababa5000000006b483045022100d91557de37645c641b948c6cd03b4ae3791a63a650db3e2fee1dcf5185d1b10402200e8bd410bf516ca61715867666d31e44495428ce5c1090bf2294a829ebcfa4ef0121025c3cc7fbfc52f710c941497fd01876c189171ea227458f501afcb38a297d65b4ffffffff021027000000000000166a14152073ca2300a86b510fa2f123d3ea7da3af68dcf77cb0090a0000001976a914152073ca2300a86b510fa2f123d3ea7da3af68dc88ac00000000';
29
36
 
30
- executionContext = new StateTransitionExecutionContext();
37
+ stateRepositoryMock.fetchTransaction.resolves({
38
+ data: Buffer.from(rawTransaction, 'hex'),
39
+ height: 42,
40
+ });
31
41
 
32
- stateTransition.setExecutionContext(executionContext);
42
+ stateTransition = new IdentityTopUpTransition(
43
+ getIdentityTopUpTransitionFixture().toObject(),
44
+ );
33
45
 
34
- const output = stateTransition.getAssetLockProof().getOutput();
46
+ executionContext = new StateTransitionExecutionContext();
35
47
 
36
- fetchAssetLockTransactionOutputMock = this.sinonSandbox.stub().resolves(output);
48
+ stateTransition.setExecutionContext(executionContext);
37
49
 
38
- applyIdentityTopUpTransition = applyIdentityTopUpTransitionFactory(
50
+ applyIdentityTopUpTransition = (st) => applyIdentityTopUpTransitionDPP(
39
51
  stateRepositoryMock,
40
- fetchAssetLockTransactionOutputMock,
52
+ st,
41
53
  );
42
54
  });
43
55
 
44
- it('should store identity created from state transition', async () => {
45
- const balanceBeforeTopUp = identity.getBalance();
46
-
56
+ it('should add topup amount to identity balance', async function () {
47
57
  const balanceToTopUp = convertSatoshiToCredits(
48
58
  stateTransition.getAssetLockProof().getOutput().satoshis,
49
59
  );
50
60
 
51
61
  await applyIdentityTopUpTransition(stateTransition);
52
62
 
53
- expect(identity.getBalance()).to.be.equal(balanceBeforeTopUp + balanceToTopUp);
54
- expect(identity.getBalance()).to.be.greaterThan(balanceBeforeTopUp);
63
+ const { match } = this.sinonSandbox;
55
64
 
56
- expect(stateRepositoryMock.updateIdentity).to.have.been.calledOnceWithExactly(
57
- identity,
58
- executionContext,
65
+ expect(stateRepositoryMock.addToIdentityBalance).to.have.been.calledOnceWithExactly(
66
+ match((arg) => arg.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
67
+ balanceToTopUp,
68
+ match.instanceOf(StateTransitionExecutionContext),
59
69
  );
60
70
 
71
+ expect(stateRepositoryMock.addToSystemCredits).to.have.been.calledOnceWithExactly(
72
+ balanceToTopUp,
73
+ match.instanceOf(StateTransitionExecutionContext),
74
+ );
75
+
76
+ const outPoint = stateTransition.getAssetLockProof().getOutPoint();
77
+
61
78
  expect(stateRepositoryMock.markAssetLockTransactionOutPointAsUsed).to.have.been
62
79
  .calledOnceWithExactly(
63
- stateTransition.getAssetLockProof().getOutPoint(),
64
- executionContext,
80
+ match((arg) => Buffer.from(arg).equals(outPoint)),
81
+ match.instanceOf(StateTransitionExecutionContext),
65
82
  );
83
+ });
84
+
85
+ it('should ignore balance debt for system credits', async function () {
86
+ stateRepositoryMock.fetchIdentityBalanceWithDebt.resolves(-5);
66
87
 
67
- expect(fetchAssetLockTransactionOutputMock)
68
- .to.be.calledOnceWithExactly(
69
- stateTransition.getAssetLockProof(),
70
- executionContext,
88
+ const balanceToTopUp = convertSatoshiToCredits(
89
+ stateTransition.getAssetLockProof().getOutput().satoshis,
90
+ );
91
+
92
+ await applyIdentityTopUpTransition(stateTransition);
93
+
94
+ const { match } = this.sinonSandbox;
95
+
96
+ expect(stateRepositoryMock.addToIdentityBalance).to.have.been.calledOnceWithExactly(
97
+ match((arg) => arg.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
98
+ balanceToTopUp,
99
+ match.instanceOf(StateTransitionExecutionContext),
100
+ );
101
+
102
+ expect(stateRepositoryMock.addToSystemCredits).to.have.been.calledOnceWithExactly(
103
+ balanceToTopUp - 5,
104
+ match.instanceOf(StateTransitionExecutionContext),
105
+ );
106
+
107
+ const outPoint = stateTransition.getAssetLockProof().getOutPoint();
108
+
109
+ expect(stateRepositoryMock.markAssetLockTransactionOutPointAsUsed).to.have.been
110
+ .calledOnceWithExactly(
111
+ match((arg) => Buffer.from(arg).equals(outPoint)),
112
+ match.instanceOf(StateTransitionExecutionContext),
71
113
  );
72
114
  });
73
115
 
74
- it('should store biggest possible identity on dry run', async () => {
75
- const biggestPossibleIdentity = getBiggestPossibleIdentity();
76
-
77
- const balanceBeforeTopUp = biggestPossibleIdentity.getBalance();
116
+ it('should add topup amount to identity balance on dry run', async function () {
117
+ const { match } = this.sinonSandbox;
78
118
 
79
119
  const balanceToTopUp = convertSatoshiToCredits(
80
120
  stateTransition.getAssetLockProof().getOutput().satoshis,
@@ -86,23 +126,18 @@ describe('applyIdentityTopUpTransitionFactory', () => {
86
126
 
87
127
  executionContext.disableDryRun();
88
128
 
89
- expect(biggestPossibleIdentity.getBalance()).to.be.equal(balanceBeforeTopUp + balanceToTopUp);
90
-
91
- expect(stateRepositoryMock.updateIdentity).to.have.been.calledOnceWithExactly(
92
- biggestPossibleIdentity,
93
- executionContext,
129
+ expect(stateRepositoryMock.addToIdentityBalance).to.have.been.calledOnceWithExactly(
130
+ match((arg) => arg.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
131
+ balanceToTopUp,
132
+ match.instanceOf(StateTransitionExecutionContext),
94
133
  );
95
134
 
135
+ const outPoint = stateTransition.getAssetLockProof().getOutPoint();
136
+
96
137
  expect(stateRepositoryMock.markAssetLockTransactionOutPointAsUsed).to.have.been
97
138
  .calledOnceWithExactly(
98
- stateTransition.getAssetLockProof().getOutPoint(),
99
- executionContext,
100
- );
101
-
102
- expect(fetchAssetLockTransactionOutputMock)
103
- .to.be.calledOnceWithExactly(
104
- stateTransition.getAssetLockProof(),
105
- executionContext,
139
+ match((arg) => Buffer.from(arg).equals(outPoint)),
140
+ match.instanceOf(StateTransitionExecutionContext),
106
141
  );
107
142
  });
108
143
  });
@@ -1,17 +1,35 @@
1
1
  const getIdentityTopUpTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture');
2
2
 
3
- const validateIdentityTopUpTransitionStateFactory = require(
4
- '@dashevo/dpp/lib/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory',
5
- );
3
+ const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
4
+ const { default: loadWasmDpp } = require('../../../../../../../dist');
6
5
 
7
6
  describe('validateIdentityTopUpTransitionStateFactory', () => {
8
7
  let validateIdentityTopUpTransitionState;
9
8
  let stateTransition;
9
+ let stateRepositoryMock;
10
10
 
11
- beforeEach(() => {
12
- validateIdentityTopUpTransitionState = validateIdentityTopUpTransitionStateFactory();
11
+ let IdentityTopUpTransition;
12
+ let IdentityTopUpTransitionStateValidator;
13
13
 
14
- stateTransition = getIdentityTopUpTransitionFixture();
14
+ before(async () => {
15
+ ({
16
+ IdentityTopUpTransition,
17
+ IdentityTopUpTransitionStateValidator,
18
+ } = await loadWasmDpp());
19
+ });
20
+
21
+ beforeEach(function () {
22
+ stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
23
+
24
+ stateTransition = new IdentityTopUpTransition(
25
+ getIdentityTopUpTransitionFixture().toObject(),
26
+ );
27
+
28
+ const validator = new IdentityTopUpTransitionStateValidator(stateRepositoryMock);
29
+
30
+ validateIdentityTopUpTransitionState = (st) => validator.validate(
31
+ st,
32
+ );
15
33
  });
16
34
 
17
35
  it('should return valid result', async () => {
@@ -1,22 +1,37 @@
1
- const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
2
-
3
1
  const stateTransitionTypes = require(
4
2
  '@dashevo/dpp/lib/stateTransition/stateTransitionTypes',
5
3
  );
6
4
 
7
5
  const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
8
- const Identifier = require('@dashevo/dpp/lib/identifier/Identifier');
9
6
 
10
7
  const getIdentityUpdateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityUpdateTransitionFixture');
11
- const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
8
+
9
+ const { default: loadWasmDpp } = require('../../../../../dist');
10
+ const generateRandomIdentifierAsync = require('../../../../../lib/test/utils/generateRandomIdentifierAsync');
12
11
 
13
12
  describe('IdentityUpdateTransition', () => {
14
13
  let rawStateTransition;
15
14
  let stateTransition;
16
15
 
16
+ let IdentityUpdateTransition;
17
+ let IdentityPublicKey;
18
+ let Identifier;
19
+ let IdentityPublicKeyCreateTransition;
20
+
21
+ before(async () => {
22
+ ({
23
+ IdentityUpdateTransition,
24
+ IdentityPublicKey,
25
+ Identifier,
26
+ IdentityPublicKeyCreateTransition,
27
+ } = await loadWasmDpp());
28
+ });
29
+
17
30
  beforeEach(() => {
18
- stateTransition = getIdentityUpdateTransitionFixture();
19
- rawStateTransition = stateTransition.toObject();
31
+ rawStateTransition = getIdentityUpdateTransitionFixture().toObject();
32
+ stateTransition = new IdentityUpdateTransition(
33
+ rawStateTransition,
34
+ );
20
35
  });
21
36
 
22
37
  describe('#getType', () => {
@@ -26,18 +41,20 @@ describe('IdentityUpdateTransition', () => {
26
41
  });
27
42
 
28
43
  describe('#setIdentityId', () => {
29
- it('should set identityId', () => {
30
- const id = generateRandomIdentifier();
44
+ it('should set identityId', async () => {
45
+ const id = await generateRandomIdentifierAsync();
31
46
 
32
47
  stateTransition.setIdentityId(id);
33
48
 
34
- expect(stateTransition.identityId).to.deep.equal(id);
49
+ expect(stateTransition.identityId.toBuffer())
50
+ .to.deep.equal(id.toBuffer());
35
51
  });
36
52
  });
37
53
 
38
54
  describe('#getIdentityId', () => {
39
55
  it('should return identityId', () => {
40
- expect(stateTransition.getIdentityId()).to.deep.equal(rawStateTransition.identityId);
56
+ expect(stateTransition.getIdentityId().toBuffer())
57
+ .to.deep.equal(rawStateTransition.identityId);
41
58
  });
42
59
  });
43
60
 
@@ -51,13 +68,13 @@ describe('IdentityUpdateTransition', () => {
51
68
  it('should set revision', () => {
52
69
  stateTransition.setRevision(42);
53
70
 
54
- expect(stateTransition.revision).to.equal(42);
71
+ expect(stateTransition.getRevision()).to.equal(42);
55
72
  });
56
73
  });
57
74
 
58
75
  describe('#getOwnerId', () => {
59
76
  it('should return owner id', () => {
60
- expect(stateTransition.getOwnerId()).to.deep.equal(
77
+ expect(stateTransition.getOwnerId().toBuffer()).to.deep.equal(
61
78
  rawStateTransition.identityId,
62
79
  );
63
80
  });
@@ -65,33 +82,37 @@ describe('IdentityUpdateTransition', () => {
65
82
 
66
83
  describe('#getPublicKeysToAdd', () => {
67
84
  it('should return public keys to add', () => {
68
- expect(stateTransition.getPublicKeysToAdd()).to.deep.equal(
69
- rawStateTransition.addPublicKeys.map((rawPublicKey) => new IdentityPublicKey(rawPublicKey)),
70
- );
85
+ expect(stateTransition.getPublicKeysToAdd().map((key) => key.toObject()))
86
+ .to.deep.equal(
87
+ rawStateTransition.addPublicKeys
88
+ .map((rawPublicKey) => new IdentityPublicKeyCreateTransition(rawPublicKey).toObject()),
89
+ );
71
90
  });
72
91
  });
73
92
 
74
93
  describe('#setPublicKeysToAdd', () => {
75
94
  it('should set public keys to add', () => {
76
- const publicKeys = [new IdentityPublicKey({
95
+ const publicKeys = [new IdentityPublicKeyCreateTransition({
77
96
  id: 0,
78
97
  type: IdentityPublicKey.TYPES.BLS12_381,
79
98
  purpose: 0,
80
99
  securityLevel: 0,
81
100
  readOnly: true,
101
+ signature: Buffer.alloc(0),
82
102
  data: Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'),
83
103
  })];
84
104
 
85
105
  stateTransition.setPublicKeysToAdd(publicKeys);
86
106
 
87
- expect(stateTransition.addPublicKeys).to.have.deep.members(publicKeys);
107
+ expect(stateTransition.addPublicKeys.map((key) => key.toObject()))
108
+ .to.have.deep.members(publicKeys.map((key) => key.toObject()));
88
109
  });
89
110
  });
90
111
 
91
112
  describe('#getPublicKeyIdsToDisable', () => {
92
113
  it('should return public key ids to disable', () => {
93
114
  expect(stateTransition.getPublicKeyIdsToDisable())
94
- .to.deep.equal(stateTransition.disablePublicKeys);
115
+ .to.deep.equal(rawStateTransition.disablePublicKeys);
95
116
  });
96
117
  });
97
118
 
@@ -99,14 +120,15 @@ describe('IdentityUpdateTransition', () => {
99
120
  it('should set public key ids to disable', () => {
100
121
  stateTransition.setPublicKeyIdsToDisable([1, 2]);
101
122
 
102
- expect(stateTransition.disablePublicKeys).to.deep.equal([1, 2]);
123
+ expect(stateTransition.getPublicKeyIdsToDisable())
124
+ .to.deep.equal([1, 2]);
103
125
  });
104
126
  });
105
127
 
106
128
  describe('#getPublicKeysDisabledAt', () => {
107
129
  it('should return time to disable public keys', () => {
108
130
  expect(stateTransition.getPublicKeysDisabledAt())
109
- .to.deep.equal(new Date(stateTransition.publicKeysDisabledAt));
131
+ .to.deep.equal(new Date(rawStateTransition.publicKeysDisabledAt));
110
132
  });
111
133
  });
112
134
 
@@ -116,7 +138,7 @@ describe('IdentityUpdateTransition', () => {
116
138
 
117
139
  stateTransition.setPublicKeysDisabledAt(now);
118
140
 
119
- expect(stateTransition.publicKeysDisabledAt).to.deep.equal(new Date(now));
141
+ expect(stateTransition.getPublicKeysDisabledAt()).to.deep.equal(new Date(now));
120
142
  });
121
143
  });
122
144
 
@@ -195,7 +217,7 @@ describe('IdentityUpdateTransition', () => {
195
217
  const identityId = result[0];
196
218
 
197
219
  expect(identityId).to.be.an.instanceOf(Identifier);
198
- expect(identityId).to.be.deep.equal(rawStateTransition.identityId);
220
+ expect(identityId.toBuffer()).to.be.deep.equal(rawStateTransition.identityId);
199
221
  });
200
222
  });
201
223