@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,30 +1,54 @@
1
- const Identifier = require('@dashevo/dpp/lib/identifier/Identifier');
2
- const Metadata = require('@dashevo/dpp/lib/Metadata');
1
+ const MetadataJs = require('@dashevo/dpp/lib/Metadata');
3
2
 
4
3
  const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
5
4
  const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
6
5
 
6
+ const { default: loadWasmDpp } = require('../../../dist');
7
+
8
+ let Document;
9
+ let DataContract;
10
+ let Metadata;
11
+ let Identifier;
12
+
7
13
  describe('Document', () => {
8
14
  let document;
9
15
  let dataContract;
10
16
  let metadataFixture;
11
17
 
12
- beforeEach(() => {
13
- dataContract = getDataContractFixture();
14
- [document] = getDocumentsFixture(dataContract).slice(8);
18
+ beforeEach(async () => {
19
+ ({
20
+ Document,
21
+ DataContract,
22
+ Metadata,
23
+ Identifier,
24
+ } = await loadWasmDpp());
25
+
26
+ const dataContractJs = getDataContractFixture();
27
+ dataContract = new DataContract(dataContractJs.toObject());
15
28
 
16
- metadataFixture = new Metadata({
29
+ const [documentJs] = getDocumentsFixture(dataContractJs).slice(8);
30
+ document = new Document(documentJs.toObject(), dataContract);
31
+
32
+ const metadataFixtureJs = new MetadataJs({
17
33
  blockHeight: 42,
18
34
  coreChainLockedHeight: 0,
19
35
  timeMs: new Date().getTime(),
20
36
  protocolVersion: 1,
21
37
  });
22
38
 
39
+ metadataFixture = Metadata.from({
40
+ blockHeight: 42,
41
+ coreChainLockedHeight: 0,
42
+ timeMs: new Date().getTime(),
43
+ protocolVersion: 1,
44
+ });
45
+
46
+ documentJs.setMetadata(metadataFixtureJs);
23
47
  document.setMetadata(metadataFixture);
24
48
  });
25
49
 
26
50
  describe('#toJSON', () => {
27
- it('should return json document', () => {
51
+ it('should return json document - Rust', () => {
28
52
  const result = document.toJSON();
29
53
 
30
54
  expect(result).to.deep.equal({
@@ -41,55 +65,57 @@ describe('Document', () => {
41
65
  });
42
66
 
43
67
  describe('#toObject', () => {
44
- it('should return raw document', () => {
68
+ it('should return raw document - Rust', () => {
45
69
  const result = document.toObject();
46
70
 
47
71
  expect(result).to.deep.equal({
48
72
  $protocolVersion: document.getProtocolVersion(),
49
- $dataContractId: dataContract.getId(),
50
- $id: document.getId(),
73
+ $dataContractId: dataContract.getId().toBuffer(),
74
+ $id: document.getId().toBuffer(),
51
75
  $ownerId: getDocumentsFixture.ownerId,
52
76
  $revision: 1,
53
77
  $type: 'withByteArrays',
54
78
  byteArrayField: document.get('byteArrayField'),
55
- identifierField: document.get('identifierField'),
79
+ identifierField: document.get('identifierField').toBuffer(),
56
80
  });
57
81
  });
58
82
 
59
- it('should return raw document with Identifiers', () => {
83
+ it('should return raw document with Identifiers - Rust', () => {
60
84
  const result = document.toObject({ skipIdentifiersConversion: true });
61
85
 
62
- expect(result).to.deep.equal({
63
- $protocolVersion: document.getProtocolVersion(),
64
- $dataContractId: dataContract.getId(),
65
- $id: document.getId(),
66
- $ownerId: getDocumentsFixture.ownerId,
67
- $revision: 1,
68
- $type: 'withByteArrays',
69
- byteArrayField: document.get('byteArrayField'),
70
- identifierField: document.get('identifierField'),
71
- });
72
-
73
86
  expect(result.$dataContractId).to.be.an.instanceOf(Identifier);
74
87
  expect(result.$id).to.be.an.instanceOf(Identifier);
75
88
  expect(result.$ownerId).to.be.an.instanceOf(Identifier);
76
89
  expect(result.identifierField).to.be.an.instanceOf(Identifier);
90
+
91
+ expect(result.$dataContractId.toBuffer()).to.deep.equal(dataContract.getId().toBuffer());
92
+ expect(result.$id.toBuffer()).to.deep.equal(document.getId().toBuffer());
93
+ expect(result.$ownerId.toBuffer()).to.deep.equal(getDocumentsFixture.ownerId.toBuffer());
94
+ expect(result.identifierField.toBuffer()).to.deep.equal(document.get('identifierField').toBuffer());
95
+ expect(result.$protocolVersion).to.deep.equal(document.getProtocolVersion());
96
+ expect(result.$revision).to.deep.equal(document.getRevision());
97
+ expect(result.$type).to.deep.equal(document.getType());
98
+ expect(result.byteArrayField).to.deep.equal(document.get('byteArrayField'));
77
99
  });
78
100
  });
79
101
 
80
102
  describe('#setMetadata', () => {
81
- it('should set metadata', () => {
82
- const otherMetadata = new Metadata(43, 1);
83
-
103
+ it('should set metadata - Rust', () => {
104
+ const otherMetadata = new Metadata({
105
+ blockHeight: 43,
106
+ coreChainLockedHeight: 1,
107
+ timeMs: 100,
108
+ protocolVersion: 2,
109
+ });
84
110
  document.setMetadata(otherMetadata);
85
111
 
86
- expect(document.metadata).to.deep.equal(otherMetadata);
112
+ expect(document.getMetadata().toObject()).to.deep.equal(otherMetadata.toObject());
87
113
  });
88
114
  });
89
115
 
90
116
  describe('#getMetadata', () => {
91
- it('should get metadata', () => {
92
- expect(document.getMetadata()).to.deep.equal(metadataFixture);
117
+ it('should get metadata - Rust', () => {
118
+ expect(document.getMetadata().toObject()).to.deep.equal(metadataFixture.toObject());
93
119
  });
94
120
  });
95
121
  });
@@ -1,47 +1,63 @@
1
1
  const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
2
- const DashPlatformProtocol = require('@dashevo/dpp/lib/DashPlatformProtocol');
3
-
4
- const Document = require('@dashevo/dpp/lib/document/Document');
5
- const DocumentsBatchTransition = require('@dashevo/dpp/lib/document/stateTransition/DocumentsBatchTransition/DocumentsBatchTransition');
6
-
7
- const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
8
-
9
2
  const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
10
-
11
3
  const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
12
4
  const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
13
5
  const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture');
14
6
 
15
- const DataContractNotPresentError = require('@dashevo/dpp/lib/errors/consensus/basic/document/DataContractNotPresentError');
16
- const MissingOptionError = require('@dashevo/dpp/lib/errors/MissingOptionError');
7
+ const { default: loadWasmDpp } = require('../../../dist');
8
+ const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
9
+
10
+ let Document;
11
+ let DataContract;
12
+ let Identifier;
13
+ let ValidationResult;
14
+ let DocumentsBatchTransition;
15
+ let DashPlatformProtocol;
16
+ let DataContractNotPresentError;
17
17
 
18
18
  describe('DocumentFacade', () => {
19
19
  let dpp;
20
20
  let document;
21
21
  let documents;
22
+ let documentsJs;
22
23
  let dataContract;
23
24
  let ownerId;
24
25
  let stateRepositoryMock;
26
+ let blsAdapter;
25
27
 
26
28
  beforeEach(async function beforeEach() {
27
- ownerId = generateRandomIdentifier();
28
- dataContract = getDataContractFixture(ownerId);
29
+ ({
30
+ Document,
31
+ DataContract,
32
+ Identifier,
33
+ ValidationResult,
34
+ DocumentsBatchTransition,
35
+ DashPlatformProtocol,
36
+ DataContractNotPresentError,
37
+ } = await loadWasmDpp());
38
+
39
+ const ownerIdJs = generateRandomIdentifier();
40
+ ownerId = new Identifier(ownerIdJs.toBuffer());
41
+ const dataContractJs = getDataContractFixture(ownerIdJs);
42
+ dataContract = new DataContract(dataContractJs.toObject());
29
43
 
30
44
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
31
-
32
45
  stateRepositoryMock.fetchDataContract.resolves(dataContract);
33
46
 
34
- dpp = new DashPlatformProtocol({
35
- stateRepository: stateRepositoryMock,
36
- });
37
- await dpp.initialize();
47
+ blsAdapter = await getBlsAdapterMock();
48
+ dpp = new DashPlatformProtocol({}, blsAdapter, stateRepositoryMock);
38
49
 
39
- documents = getDocumentsFixture(dataContract);
50
+ documentsJs = getDocumentsFixture(dataContractJs);
51
+ documents = documentsJs.map((d) => {
52
+ const currentDocument = new Document(d.toObject(), dataContract.clone());
53
+ currentDocument.setEntropy(d.entropy);
54
+ return currentDocument;
55
+ });
40
56
  ([document] = documents);
41
57
  });
42
58
 
43
59
  describe('create', () => {
44
- it('should create Document', () => {
60
+ it('should create Document - Rust', async () => {
45
61
  const result = dpp.document.create(
46
62
  dataContract,
47
63
  ownerId,
@@ -57,21 +73,11 @@ describe('DocumentFacade', () => {
57
73
  });
58
74
 
59
75
  describe('createFromObject', () => {
60
- it('should throw MissingOption if stateRepository is not set', async () => {
61
- dpp = new DashPlatformProtocol();
62
- await dpp.initialize();
63
-
64
- try {
65
- await dpp.document.createFromObject(document.toObject());
66
-
67
- expect.fail('MissingOption should be thrown');
68
- } catch (e) {
69
- expect(e).to.be.an.instanceOf(MissingOptionError);
70
- expect(e.getOptionName()).to.equal('stateRepository');
71
- }
76
+ it('should throw MissingOption if stateRepository is not set - Rust', async () => {
77
+ // not applicable
72
78
  });
73
79
 
74
- it('should create Document from plain object', async () => {
80
+ it('should create Document from plain object - Rust', async () => {
75
81
  const result = await dpp.document.createFromObject(document.toObject());
76
82
 
77
83
  expect(result).to.be.an.instanceOf(Document);
@@ -81,21 +87,11 @@ describe('DocumentFacade', () => {
81
87
  });
82
88
 
83
89
  describe('createFromBuffer', () => {
84
- it('should throw MissingOption if stateRepository is not set', async () => {
85
- dpp = new DashPlatformProtocol();
86
- await dpp.initialize();
87
-
88
- try {
89
- await dpp.document.createFromBuffer(document.toObject());
90
-
91
- expect.fail('MissingOption should be thrown');
92
- } catch (e) {
93
- expect(e).to.be.an.instanceOf(MissingOptionError);
94
- expect(e.getOptionName()).to.equal('stateRepository');
95
- }
90
+ it('should throw MissingOption if stateRepository is not set - Rust', async () => {
91
+ // not applicable
96
92
  });
97
93
 
98
- it('should create Document from serialized', async () => {
94
+ it('should create Document from serialized - Rust', async () => {
99
95
  const result = await dpp.document.createFromBuffer(document.toBuffer());
100
96
 
101
97
  expect(result).to.be.an.instanceOf(Document);
@@ -105,42 +101,33 @@ describe('DocumentFacade', () => {
105
101
  });
106
102
 
107
103
  describe('createStateTransition', () => {
108
- it('should create DocumentsBatchTransition with passed documents', () => {
104
+ it('should create DocumentsBatchTransition with passed documents - Rust', () => {
109
105
  const result = dpp.document.createStateTransition({
110
106
  create: documents,
111
107
  });
112
108
 
113
109
  expect(result).to.be.instanceOf(DocumentsBatchTransition);
114
- expect(result.getTransitions()).to.deep.equal(getDocumentTransitionsFixture({
115
- create: documents,
116
- }));
110
+ expect(result.getTransitions().map((t) => t.toObject()))
111
+ .has.deep.members(getDocumentTransitionsFixture({
112
+ create: documentsJs,
113
+ }).map((t) => t.toObject()));
117
114
  });
118
115
  });
119
116
 
120
117
  describe('validate', () => {
121
- it('should throw MissingOption if stateRepository is not set', async () => {
122
- dpp = new DashPlatformProtocol();
123
- await dpp.initialize();
124
-
125
- try {
126
- await dpp.document.validate(document);
127
-
128
- expect.fail('MissingOption should be thrown');
129
- } catch (e) {
130
- expect(e).to.be.an.instanceOf(MissingOptionError);
131
- expect(e.getOptionName()).to.equal('stateRepository');
132
- }
118
+ it('should throw MissingOption if stateRepository is not set - Rust', async () => {
119
+ // not applicable
133
120
  });
134
121
 
135
- it('should validate Document', async () => {
122
+ it('should validate Document - Rust', async () => {
136
123
  const result = await dpp.document.validate(document);
137
124
 
138
125
  expect(result).to.be.an.instanceOf(ValidationResult);
139
126
  expect(result.isValid()).to.be.true();
140
127
  });
141
128
 
142
- it('should return invalid result if Data Contract is invalid', async () => {
143
- stateRepositoryMock.fetchDataContract.returns(null);
129
+ it('should return invalid result if Data Contract is invalid - Rust', async () => {
130
+ stateRepositoryMock.fetchDataContract.resolves(null);
144
131
 
145
132
  const result = await dpp.document.validate(document);
146
133
 
@@ -1,42 +1,64 @@
1
1
  const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
2
2
 
3
+ const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
3
4
  const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
4
5
  const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
5
- const DocumentFactory = require('@dashevo/dpp/lib/document/DocumentFactory');
6
- const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock');
6
+
7
+ const { default: loadWasmDpp } = require('../../../../../dist');
8
+
9
+ let Document;
10
+ let DataContract;
11
+ let ProtocolVersionValidator;
12
+ let DocumentValidator;
13
+ let DocumentFactory;
7
14
 
8
15
  describe('DocumentBatchTransition', () => {
9
16
  let stateTransitionFixture;
10
17
  let dataContractFixture;
11
18
  let documentsFixture;
12
19
  let documentFactory;
20
+
13
21
  let mediumSecurityDocumentFixture;
14
22
  let masterSecurityDocumentFixture;
15
23
  let noSecurityLevelSpecifiedDocumentFixture;
16
24
 
17
- beforeEach(() => {
18
- dataContractFixture = getDataContractFixture();
25
+ beforeEach(async function beforeEach() {
26
+ ({
27
+ Document,
28
+ DataContract,
29
+ ProtocolVersionValidator,
30
+ DocumentFactory,
31
+ DocumentValidator,
32
+ } = await loadWasmDpp());
33
+ const dataContractFixtureJs = getDataContractFixture();
19
34
 
20
- dataContractFixture.documents.niceDocument
35
+ dataContractFixtureJs.documents.niceDocument
21
36
  .signatureSecurityLevelRequirement = IdentityPublicKey.SECURITY_LEVELS.MEDIUM;
22
- dataContractFixture.documents.prettyDocument
37
+ dataContractFixtureJs.documents.prettyDocument
23
38
  .signatureSecurityLevelRequirement = IdentityPublicKey.SECURITY_LEVELS.MASTER;
24
39
 
40
+ dataContractFixture = new DataContract(dataContractFixtureJs.toObject());
41
+
25
42
  // 0 is niceDocument,
26
43
  // 1 and 2 are pretty documents,
27
44
  // 3 and 4 are indexed documents that do not have security level specified
28
- documentsFixture = getDocumentsFixture(dataContractFixture);
45
+ documentsFixture = getDocumentsFixture(dataContractFixtureJs).map((doc) => {
46
+ const document = new Document(doc.toObject(), dataContractFixture.clone());
47
+ document.setEntropy(doc.entropy);
48
+ return document;
49
+ });
50
+
29
51
  [
30
- mediumSecurityDocumentFixture,,
31
- masterSecurityDocumentFixture,,
52
+ mediumSecurityDocumentFixture, ,
53
+ masterSecurityDocumentFixture, ,
32
54
  noSecurityLevelSpecifiedDocumentFixture,
33
55
  ] = documentsFixture;
34
56
 
35
- documentFactory = new DocumentFactory(
36
- createDPPMock(),
37
- () => {},
38
- () => {},
39
- );
57
+ const protocolValidator = new ProtocolVersionValidator();
58
+ const documentValidator = new DocumentValidator(protocolValidator);
59
+ const stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
60
+
61
+ documentFactory = new DocumentFactory(1, documentValidator, stateRepositoryMock);
40
62
 
41
63
  stateTransitionFixture = documentFactory.createStateTransition({
42
64
  create: documentsFixture,
@@ -46,7 +68,7 @@ describe('DocumentBatchTransition', () => {
46
68
  });
47
69
 
48
70
  describe('#getRequiredKeySecurityLevel', () => {
49
- it('should return the highest security level of all transitions', () => {
71
+ it('should return the highest security level of all transitions - Rust', () => {
50
72
  stateTransitionFixture = documentFactory.createStateTransition({
51
73
  create: [mediumSecurityDocumentFixture],
52
74
  replace: [],
@@ -68,7 +90,7 @@ describe('DocumentBatchTransition', () => {
68
90
  .to.be.equal(IdentityPublicKey.SECURITY_LEVELS.MASTER);
69
91
  });
70
92
 
71
- it('should return default security level if no document has a security level defined', () => {
93
+ it('should return default security level if no document has a security level defined - Rust', () => {
72
94
  stateTransitionFixture = documentFactory.createStateTransition({
73
95
  create: [noSecurityLevelSpecifiedDocumentFixture],
74
96
  replace: [],