@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,15 +1,25 @@
1
- const Metadata = require('@dashevo/dpp/lib/Metadata');
1
+ const { default: loadWasmDpp } = require('../..');
2
+
3
+ let Metadata;
2
4
 
3
5
  describe('Metadata', () => {
6
+ beforeEach(async () => {
7
+ ({ Metadata } = await loadWasmDpp());
8
+ });
9
+
4
10
  describe('#constructor', () => {
5
11
  it('should set height and core chain-locked height', () => {
6
12
  const result = new Metadata({
7
13
  blockHeight: 42,
8
14
  coreChainLockedHeight: 1,
15
+ timeMs: 100,
16
+ protocolVersion: 2,
9
17
  });
10
18
 
11
- expect(result.blockHeight).to.equal(42);
12
- expect(result.coreChainLockedHeight).to.equal(1);
19
+ expect(result.getBlockHeight()).to.equal(42);
20
+ expect(result.getCoreChainLockedHeight()).to.equal(1);
21
+ expect(result.getTimeMs()).to.equal(100);
22
+ expect(result.getProtocolVersion()).to.equal(2);
13
23
  });
14
24
  });
15
25
 
@@ -18,6 +28,8 @@ describe('Metadata', () => {
18
28
  const result = new Metadata({
19
29
  blockHeight: 42,
20
30
  coreChainLockedHeight: 1,
31
+ timeMs: 100,
32
+ protocolVersion: 2,
21
33
  });
22
34
 
23
35
  expect(result.getBlockHeight()).to.equal(42);
@@ -29,6 +41,8 @@ describe('Metadata', () => {
29
41
  const result = new Metadata({
30
42
  blockHeight: 1,
31
43
  coreChainLockedHeight: 42,
44
+ timeMs: 100,
45
+ protocolVersion: 2,
32
46
  });
33
47
 
34
48
  expect(result.getCoreChainLockedHeight()).to.equal(42);
@@ -198,7 +198,7 @@ describe('DataContract', () => {
198
198
  dataContract.getDocumentSchema('undefinedObject');
199
199
  expect.fail('Error was not thrown');
200
200
  } catch (e) {
201
- expect(e.getDocType()).to.equal('undefinedObject');
201
+ expect(e.getType()).to.equal('undefinedObject');
202
202
  }
203
203
  });
204
204
 
@@ -215,7 +215,7 @@ describe('DataContract', () => {
215
215
  dataContract.getDocumentSchemaRef('undefinedObject');
216
216
  expect.fail('Error was not thrown');
217
217
  } catch (e) {
218
- expect(e.getDocType()).to.equal('undefinedObject');
218
+ expect(e.getType()).to.equal('undefinedObject');
219
219
  }
220
220
  });
221
221
 
@@ -326,14 +326,19 @@ describe('DataContract', () => {
326
326
  dataContract.getBinaryProperties('unknown');
327
327
  expect.fail('Error was not thrown');
328
328
  } catch (e) {
329
- expect(e.getDocType()).to.equal('unknown');
329
+ expect(e.getType()).to.equal('unknown');
330
330
  }
331
331
  });
332
332
  });
333
333
 
334
334
  describe('#setMetadata', () => {
335
335
  it('should set metadata', () => {
336
- const otherMetadata = new Metadata(43, 1);
336
+ const otherMetadata = new Metadata({
337
+ blockHeight: 43,
338
+ coreChainLockedHeight: 1,
339
+ timeMs: 100,
340
+ protocolVersion: 2,
341
+ });
337
342
  const otherMetadataToObject = otherMetadata.toObject();
338
343
 
339
344
  dataContract.setMetadata(otherMetadata);
@@ -16,7 +16,6 @@ describe('createDataContract', () => {
16
16
  rawDataContract = {
17
17
  $id: generateRandomIdentifier().toBuffer(),
18
18
  ownerId: generateRandomIdentifier().toBuffer(),
19
- contractId: generateRandomIdentifier().toBuffer(),
20
19
  protocolVersion: 4,
21
20
  version: 20,
22
21
  $schema: 'http://test.com/schema',
@@ -1,3 +1,4 @@
1
+ const varint = require('varint');
1
2
  const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
2
3
  const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
3
4
 
@@ -64,11 +65,10 @@ describe('DataContractCreateTransition', () => {
64
65
 
65
66
  describe('#toBuffer', () => {
66
67
  it('should return serialized State Transition', () => {
67
- const protocolVersionUInt32 = Buffer.alloc(4);
68
- protocolVersionUInt32.writeUInt32LE(stateTransition.getProtocolVersion(), 0);
68
+ const protocolVersionBytes = Buffer.from(varint.encode(stateTransition.getProtocolVersion()));
69
69
 
70
70
  const result = stateTransition.toBuffer();
71
- expect(result.compare(protocolVersionUInt32, 0, 4, 0, 4)).equals(0);
71
+ expect(result.compare(protocolVersionBytes, 0, 1, 0, 1)).equals(0);
72
72
  });
73
73
  });
74
74
 
@@ -37,7 +37,7 @@ describe('applyDataContractCreateTransitionFactory', () => {
37
37
  stateTransition.setExecutionContext(executionContext);
38
38
 
39
39
  const stateRepositoryLike = {
40
- storeDataContract: () => {
40
+ storeDataContract: async () => {
41
41
  dataContractStored = true;
42
42
  },
43
43
  };
@@ -42,7 +42,7 @@ describe('validateDataContractCreateTransitionStateFactory', () => {
42
42
  dataContractFetched = false;
43
43
 
44
44
  const stateRepositoryLike = {
45
- fetchDataContract: () => {
45
+ fetchDataContract: async () => {
46
46
  dataContractFetched = true;
47
47
  },
48
48
  };
@@ -57,7 +57,7 @@ describe('validateDataContractCreateTransitionStateFactory', () => {
57
57
  const wasmDataContract = await dataContractFactory.createFromBuffer(dataContract.toBuffer());
58
58
 
59
59
  const stateRepositoryLikeWithContract = {
60
- fetchDataContract: () => wasmDataContract,
60
+ fetchDataContract: async () => wasmDataContract,
61
61
  };
62
62
 
63
63
  const result = await validateDataContractCreateTransitionState(
@@ -1,3 +1,4 @@
1
+ const varint = require('varint');
1
2
  const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
2
3
  const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
3
4
  const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
@@ -62,11 +63,10 @@ describe('DataContractUpdateTransition', () => {
62
63
 
63
64
  describe('#toBuffer', () => {
64
65
  it('should return serialized State Transition that starts with protocol version', () => {
65
- const protocolVersionUInt32 = Buffer.alloc(4);
66
- protocolVersionUInt32.writeUInt32LE(stateTransition.getProtocolVersion(), 0);
66
+ const protocolVersionBytes = Buffer.from(varint.encode(stateTransition.getProtocolVersion()));
67
67
 
68
68
  const result = stateTransition.toBuffer();
69
- expect(result.compare(protocolVersionUInt32, 0, 4, 0, 4)).equals(0);
69
+ expect(result.compare(protocolVersionBytes, 0, 1, 0, 1)).equals(0);
70
70
  });
71
71
  });
72
72
 
@@ -34,7 +34,7 @@ describe('applyDataContractUpdateTransitionFactory', () => {
34
34
  stateTransition.setExecutionContext(executionContext);
35
35
 
36
36
  const stateRepositoryLike = {
37
- storeDataContract: () => {
37
+ storeDataContract: async () => {
38
38
  dataContractStored = true;
39
39
  },
40
40
  };
@@ -23,31 +23,13 @@ describe('validateIndicesAreBackwardCompatible', () => {
23
23
  const oldDataContract = getDataContractFixture();
24
24
  const newDataContract = getDataContractFixture();
25
25
 
26
- newDataContract.getDocumentSchema('indexedDocument').properties.otherName = {
27
- type: 'string',
28
- };
29
-
30
- newDataContract.getDocumentSchema('indexedDocument').indices.push({
31
- name: 'index42',
32
- unique: false,
33
- properties: [
34
- { otherName: 'asc' },
35
- ],
36
- });
37
-
38
- newDataContract.getDocumentSchema('indexedDocument').indices.push({
39
- name: 'index42',
40
- properties: [
41
- { otherName: 'asc' },
42
- ],
43
- });
44
-
45
26
  oldDocumentsSchema = oldDataContract.getDocuments();
46
27
  newDocumentsSchema = newDataContract.getDocuments();
47
28
  });
48
29
 
49
30
  it('should return invalid result if some of unique indices have changed', async () => {
50
31
  newDocumentsSchema.indexedDocument.indices[0].properties[1].firstName = 'desc';
32
+
51
33
  const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
52
34
 
53
35
  expect(result.isValid()).to.be.false();
@@ -58,7 +40,7 @@ describe('validateIndicesAreBackwardCompatible', () => {
58
40
  expect(error.getIndexName()).to.equal(newDocumentsSchema.indexedDocument.indices[0].name);
59
41
  });
60
42
 
61
- it('should return invalid result if non-unique index update failed due to changed old properties', async () => {
43
+ it('should return invalid result if already defined properties are changed in existing index', async () => {
62
44
  newDocumentsSchema.indexedDocument.indices[2].properties[0].lastName = 'desc';
63
45
 
64
46
  const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
@@ -71,24 +53,17 @@ describe('validateIndicesAreBackwardCompatible', () => {
71
53
  expect(error.getIndexName()).to.equal(newDocumentsSchema.indexedDocument.indices[2].name);
72
54
  });
73
55
 
74
- it('should return invalid result if non-unique index update failed due old properties used', async () => {
75
- newDocumentsSchema.indexedDocument.indices.push({
76
- name: 'oldFieldIndex',
77
- properties: [
78
- {
79
- otherProperty: 'asc',
80
- },
81
- ],
82
- });
56
+ it('should return invalid result if already indexed properties are added to existing index', async () => {
57
+ newDocumentsSchema.indexedDocument.indices[2].properties.push({ firstName: 'asc' });
83
58
 
84
59
  const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
85
60
 
86
61
  expect(result.isValid()).to.be.false();
87
62
 
88
- const error = result.getErrors()[0];
63
+ const [error] = result.getErrors();
89
64
 
90
65
  expect(error).to.be.an.instanceOf(DataContractInvalidIndexDefinitionUpdateError);
91
- expect(error.getIndexName()).to.equal('oldFieldIndex');
66
+ expect(error.getIndexName()).to.equal(newDocumentsSchema.indexedDocument.indices[2].name);
92
67
  });
93
68
 
94
69
  it('should return invalid result if one of new indices contains old properties in the wrong order', async () => {
@@ -130,6 +105,25 @@ describe('validateIndicesAreBackwardCompatible', () => {
130
105
  expect(error.getIndexName()).to.equal('index_other');
131
106
  });
132
107
 
108
+ it('should return invalid result if existing property was used in a new index', async () => {
109
+ newDocumentsSchema.indexedDocument.indices.push({
110
+ name: 'oldFieldIndex',
111
+ properties: [
112
+ {
113
+ otherProperty: 'asc',
114
+ },
115
+ ],
116
+ });
117
+
118
+ const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
119
+
120
+ expect(result.isValid()).to.be.false();
121
+
122
+ const [error] = result.getErrors();
123
+ expect(error).to.be.an.instanceOf(DataContractInvalidIndexDefinitionUpdateError);
124
+ expect(error.getIndexName()).to.equal('oldFieldIndex');
125
+ });
126
+
133
127
  it('should return valid result if indices are not changed', async () => {
134
128
  const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
135
129
 
@@ -51,7 +51,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
51
51
  const wasmDataContract = await dataContractFactory.createFromBuffer(dataContract.toBuffer());
52
52
 
53
53
  const stateRepositoryLike = {
54
- fetchDataContract: () => wasmDataContract,
54
+ fetchDataContract: async () => wasmDataContract,
55
55
  };
56
56
 
57
57
  validateTransitionWithExistingContract = (t) => validateDataContractUpdateTransitionState(
@@ -62,7 +62,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
62
62
 
63
63
  it('should return invalid result if Data Contract with specified contractId was not found', async () => {
64
64
  const stateRepositoryLikeNoDataContract = {
65
- fetchDataContract: () => undefined,
65
+ fetchDataContract: async () => undefined,
66
66
  };
67
67
 
68
68
  const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState(
@@ -108,7 +108,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
108
108
 
109
109
  it('should return valid result on dry run', async () => {
110
110
  const stateRepositoryLikeNoDataContract = {
111
- fetchDataContract: () => undefined,
111
+ fetchDataContract: async () => undefined,
112
112
  };
113
113
 
114
114
  const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState(
@@ -33,6 +33,7 @@ describe('createMasternodeRewardSharesDataTrigger', () => {
33
33
  service: '192.168.65.2:20101',
34
34
  pubKeyOperator: '809519c5f6f3be1c08782ac42ae9a83b6c7205eba43f9a96a4f032ec7a73f1a7c25fa78cce0d6d9c135f7e2c28527179',
35
35
  votingAddress: 'yXmprXYP51uzfMyndtWwxz96MnkCKkFc9x',
36
+ nType: 0,
36
37
  isValid: true,
37
38
  }),
38
39
  new SimplifiedMNListEntry({
@@ -41,6 +42,7 @@ describe('createMasternodeRewardSharesDataTrigger', () => {
41
42
  service: '192.168.65.2:20201',
42
43
  pubKeyOperator: '987a4873caba62cd45a2f7d4aa6d94519ee6753e9bef777c927cb94ade768a542b0ff34a93231d3a92b4e75ffdaa366e',
43
44
  votingAddress: 'ycL7L4mhYoaZdm9TH85svvpfeKtdfo249u',
45
+ nType: 0,
44
46
  isValid: true,
45
47
  }),
46
48
  ]),
@@ -1,3 +1,4 @@
1
+ const varint = require('varint');
1
2
  const decodeProtocolEntityFactory = require('@dashevo/dpp/lib/decodeProtocolEntityFactory');
2
3
  const ProtocolVersionParsingError = require('@dashevo/dpp/lib/errors/consensus/basic/decode/ProtocolVersionParsingError');
3
4
  const SerializedObjectParsingError = require('@dashevo/dpp/lib/errors/consensus/basic/decode/SerializedObjectParsingError');
@@ -16,8 +17,7 @@ describe('decodeProtocolEntityFactory', () => {
16
17
  beforeEach(() => {
17
18
  parsedProtocolVersion = 0;
18
19
 
19
- protocolVersionBuffer = Buffer.alloc(4);
20
- protocolVersionBuffer.writeUInt32LE(parsedProtocolVersion, 0);
20
+ protocolVersionBuffer = Buffer.from(varint.encode(parsedProtocolVersion));
21
21
 
22
22
  rawEntity = { test: 'successful' };
23
23
  entityBuffer = encode(rawEntity);