@dashevo/wasm-dpp 0.24.0-dev.33 → 0.25.0-dev.10

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 (186) hide show
  1. package/Cargo.toml +2 -2
  2. package/dist/wasm/wasm_dpp.d.ts +600 -454
  3. package/dist/wasm/wasm_dpp.js +178 -120
  4. package/dist/wasm/wasm_dpp_bg.js +1 -1
  5. package/lib/test/fixtures/getDocumentsFixture.js +5 -1
  6. package/lib/wasm/wasm_dpp.d.ts +600 -454
  7. package/package.json +4 -4
  8. package/src/dash_platform_protocol.rs +1 -1
  9. package/src/data_contract/data_contract.rs +2 -1
  10. package/src/data_contract/data_contract_facade.rs +2 -2
  11. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
  12. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +7 -16
  13. package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +5 -3
  14. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +6 -2
  15. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +7 -18
  16. package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +6 -4
  17. package/src/decode_protocol_entity.rs +19 -19
  18. package/src/document/extended_document.rs +5 -2
  19. package/src/document/fetch_and_validate_data_contract.rs +2 -2
  20. package/src/document/mod.rs +5 -3
  21. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +9 -6
  22. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +1 -1
  23. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +1 -1
  24. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +1 -2
  25. package/src/document/state_transition/document_batch_transition/mod.rs +18 -25
  26. package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +4 -4
  27. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +3 -1
  28. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +1 -1
  29. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +3 -3
  30. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +1 -1
  31. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -1
  32. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -1
  33. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +3 -3
  34. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +3 -3
  35. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +4 -4
  36. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -1
  37. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -1
  38. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -1
  39. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -1
  40. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -1
  41. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -1
  42. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -1
  43. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -1
  44. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -1
  45. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +2 -2
  46. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +1 -1
  47. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -1
  48. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -1
  49. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
  50. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
  51. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
  52. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -1
  53. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -1
  54. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +2 -2
  55. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -1
  56. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -1
  57. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -1
  58. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -1
  59. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
  60. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
  61. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +1 -1
  62. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -1
  63. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +1 -1
  64. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -1
  65. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -1
  66. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -1
  67. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -1
  68. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -1
  69. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +35 -0
  70. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -1
  71. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -1
  72. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -1
  73. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -1
  74. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -1
  75. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -1
  76. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
  77. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
  78. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -1
  79. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -1
  80. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -1
  81. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -1
  82. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -1
  83. package/src/errors/consensus/basic/identity/mod.rs +2 -0
  84. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +2 -2
  85. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
  86. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -3
  87. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -1
  88. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -1
  89. package/src/errors/consensus/basic/json_schema_error.rs +1 -3
  90. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
  91. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -2
  92. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -1
  93. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -1
  94. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -1
  95. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -1
  96. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -1
  97. package/src/errors/consensus/consensus_error.rs +24 -4
  98. package/src/errors/consensus/deserialize.rs +1 -1
  99. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +1 -1
  100. package/src/errors/consensus/signature/basic_bls_error.rs +38 -0
  101. package/src/errors/consensus/signature/basic_ecdsa_error.rs +38 -0
  102. package/src/errors/consensus/signature/mod.rs +6 -0
  103. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +38 -0
  104. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +2 -2
  105. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +58 -1
  106. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +66 -1
  107. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +50 -1
  108. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -1
  109. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -1
  110. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -1
  111. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +2 -2
  112. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -1
  113. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -1
  114. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +1 -1
  115. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -1
  116. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -1
  117. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -1
  118. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -1
  119. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -1
  120. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -1
  121. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +1 -1
  122. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -1
  123. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -1
  124. package/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs +26 -0
  125. package/src/errors/consensus/state/identity/mod.rs +2 -0
  126. package/src/errors/consensus/value_error.rs +1 -1
  127. package/src/errors/from.rs +0 -1
  128. package/src/generate_temporary_ecdsa_private_key.rs +2 -6
  129. package/src/identity/factory_utils.rs +4 -4
  130. package/src/identity/identity_public_key/key_type.rs +2 -0
  131. package/src/identity/identity_public_key/purpose.rs +7 -0
  132. package/src/identity/mod.rs +4 -2
  133. package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +6 -2
  134. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +14 -32
  135. package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +3 -1
  136. package/src/identity/state_transition/identity_create_transition/to_object.rs +2 -2
  137. package/src/identity/state_transition/identity_public_key_transitions.rs +11 -11
  138. package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +6 -2
  139. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +7 -26
  140. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +3 -1
  141. package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +3 -1
  142. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  143. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +11 -32
  144. package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +3 -2
  145. package/src/identity/state_transition/identity_update_transition/to_object.rs +2 -2
  146. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  147. package/src/state_repository.rs +3 -2
  148. package/src/state_transition/fee/calculate_state_transition_fee.rs +8 -5
  149. package/src/state_transition/state_transition_facade.rs +18 -21
  150. package/src/state_transition/validation/state_transition_fee_validator.rs +3 -1
  151. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +22 -6
  152. package/src/state_transition/validation/validate_state_transition_key_signature.rs +7 -1
  153. package/src/utils.rs +2 -4
  154. package/src/validation/validation_result.rs +12 -7
  155. package/test/integration/dataContract/DataContractFacade.spec.js +17 -20
  156. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +5 -4
  157. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +0 -17
  158. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +10 -3
  159. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +4 -7
  160. package/test/integration/stateTransition/StateTransitionFacade.spec.js +21 -8
  161. package/test/unit/dataContract/DataContract.spec.js +9 -21
  162. package/test/unit/dataContract/DataContractFactory.spec.js +19 -28
  163. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +2 -4
  164. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -7
  165. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -8
  166. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -5
  167. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -3
  168. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +8 -6
  169. package/test/unit/decodeProtocolEntityFactory.spec.js +4 -1
  170. package/test/unit/document/Document.spec.js +9 -7
  171. package/test/unit/document/DocumentFactory.spec.js +38 -90
  172. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +2 -3
  173. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +5 -6
  174. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +20 -18
  175. package/test/unit/identity/Identity.spec.js +3 -8
  176. package/test/unit/identity/IdentityFactory.spec.js +3 -4
  177. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +1 -2
  178. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +7 -3
  179. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +1 -2
  180. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -1
  181. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +3 -3
  182. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +12 -6
  183. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +4 -16
  184. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +8 -4
  185. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +3 -1
  186. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +7 -3
@@ -3,19 +3,19 @@ use crate::{
3
3
  errors::consensus::consensus_error::from_consensus_error_ref,
4
4
  utils::{consensus_errors_from_buffers, WithJsError},
5
5
  };
6
- use dpp::{consensus::ConsensusError, validation::ValidationResult};
6
+ use dpp::{consensus::ConsensusError, validation::ConsensusValidationResult};
7
7
  use js_sys::{JsString, Uint8Array};
8
8
  use wasm_bindgen::prelude::*;
9
9
 
10
10
  #[wasm_bindgen(js_name=ValidationResult)]
11
11
  #[derive(Debug)]
12
- pub struct ValidationResultWasm(ValidationResult<JsValue>);
12
+ pub struct ValidationResultWasm(ConsensusValidationResult<JsValue>);
13
13
 
14
- impl<T> From<ValidationResult<T>> for ValidationResultWasm
14
+ impl<T> From<ConsensusValidationResult<T>> for ValidationResultWasm
15
15
  where
16
16
  T: Into<JsValue> + Clone,
17
17
  {
18
- fn from(validation_result: ValidationResult<T>) -> Self {
18
+ fn from(validation_result: ConsensusValidationResult<T>) -> Self {
19
19
  ValidationResultWasm(validation_result.map(Into::into))
20
20
  }
21
21
  }
@@ -27,10 +27,12 @@ impl ValidationResultWasm {
27
27
  if let Some(errors) = errors_option {
28
28
  let consensus_errors: Vec<ConsensusError> = consensus_errors_from_buffers(errors)?;
29
29
 
30
- return Ok(Self(ValidationResult::new_with_errors(consensus_errors)));
30
+ return Ok(Self(ConsensusValidationResult::new_with_errors(
31
+ consensus_errors,
32
+ )));
31
33
  }
32
34
 
33
- Ok(Self(ValidationResult::new_with_errors(vec![])))
35
+ Ok(Self(ConsensusValidationResult::new_with_errors(vec![])))
34
36
  }
35
37
 
36
38
  /// This is just a test method - doesn't need to be in the resulted binding. Please
@@ -57,7 +59,10 @@ impl ValidationResultWasm {
57
59
 
58
60
  #[wasm_bindgen(js_name=getData)]
59
61
  pub fn get_data(&self) -> JsValue {
60
- self.0.data().unwrap_or(&JsValue::undefined()).to_owned()
62
+ self.0
63
+ .data_as_borrowed()
64
+ .unwrap_or(&JsValue::undefined())
65
+ .to_owned()
61
66
  }
62
67
 
63
68
  #[wasm_bindgen(js_name=getFirstError)]
@@ -1,5 +1,5 @@
1
- const getDataContractJSFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
2
1
  const crypto = require('crypto');
2
+ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
3
3
  const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
4
4
  const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock');
5
5
  const getPrivateAndPublicKey = require('../../../lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture');
@@ -12,11 +12,10 @@ let {
12
12
 
13
13
  describe('DataContractFacade', () => {
14
14
  let dpp;
15
- let dataContractJs;
15
+ let dataContract;
16
16
  let dataContractFactory;
17
17
  let blsAdapter;
18
18
  let rawDataContract;
19
- let dataContractWasm;
20
19
  let stateTransitionMock;
21
20
 
22
21
  before(async () => {
@@ -34,29 +33,27 @@ describe('DataContractFacade', () => {
34
33
  blsAdapter, stateTransitionMock, { generate: () => crypto.randomBytes(32) }, 1,
35
34
  );
36
35
 
37
- dataContractJs = await getDataContractJSFixture();
38
- rawDataContract = dataContractJs.toObject();
36
+ dataContract = await getDataContractFixture();
37
+ rawDataContract = dataContract.toObject();
39
38
 
40
39
  const dataContractValidator = new DataContractValidator();
41
40
  dataContractFactory = new DataContractFactory(
42
41
  1,
43
42
  dataContractValidator,
44
43
  );
45
-
46
- dataContractWasm = await dataContractFactory.createFromObject(rawDataContract);
47
44
  });
48
45
 
49
46
  describe('create', () => {
50
47
  it('should create DataContract', () => {
51
48
  const result = dpp.dataContract.create(
52
- dataContractJs.getOwnerId(),
53
- dataContractJs.getDocuments(),
49
+ dataContract.getOwnerId(),
50
+ dataContract.getDocuments(),
54
51
  );
55
52
 
56
53
  expect(result).to.be.an.instanceOf(DataContract);
57
54
 
58
- expect(result.getOwnerId().toBuffer()).to.deep.equal(dataContractJs.getOwnerId().toBuffer());
59
- expect(result.getDocuments()).to.deep.equal(dataContractJs.getDocuments());
55
+ expect(result.getOwnerId().toBuffer()).to.deep.equal(dataContract.getOwnerId().toBuffer());
56
+ expect(result.getDocuments()).to.deep.equal(dataContract.getDocuments());
60
57
  });
61
58
  });
62
59
 
@@ -66,15 +63,15 @@ describe('DataContractFacade', () => {
66
63
 
67
64
  expect(result).to.be.an.instanceOf(DataContract);
68
65
 
69
- expect(result.toObject()).to.deep.equal(dataContractJs.toObject());
66
+ expect(result.toObject()).to.deep.equal(dataContract.toObject());
70
67
  });
71
68
  });
72
69
 
73
70
  describe('createFromBuffer', () => {
74
71
  it('should create DataContract from string', async () => {
75
72
  const contract = dpp.dataContract.create(
76
- dataContractJs.getOwnerId(),
77
- dataContractJs.getDocuments(),
73
+ dataContract.getOwnerId(),
74
+ dataContract.getDocuments(),
78
75
  );
79
76
 
80
77
  const result = await dpp.dataContract.createFromBuffer(contract.toBuffer());
@@ -87,9 +84,9 @@ describe('DataContractFacade', () => {
87
84
  describe('createDataContractCreateTransition', () => {
88
85
  it('should create DataContractCreateTransition from DataContract', async () => {
89
86
  const stateTransition = await dataContractFactory
90
- .createDataContractCreateTransition(dataContractWasm);
87
+ .createDataContractCreateTransition(dataContract);
91
88
 
92
- const result = dpp.dataContract.createDataContractCreateTransition(dataContractWasm);
89
+ const result = dpp.dataContract.createDataContractCreateTransition(dataContract);
93
90
 
94
91
  expect(result).to.be.an.instanceOf(DataContractCreateTransition);
95
92
 
@@ -99,12 +96,12 @@ describe('DataContractFacade', () => {
99
96
 
100
97
  describe('createDataContractUpdateTransition', () => {
101
98
  it('should create DataContractUpdateTransition from buffer', async () => {
102
- const dataContractBuffer = Buffer.from('01a56324696458205a3c9565f215156cfb330ef3a4a4400a1dad7415f4f1480e072d3419bb29c12c6724736368656d61783468747470733a2f2f736368656d612e646173682e6f72672f6470702d302d342d302f6d6574612f646174612d636f6e7472616374676f776e657249645820d5199a5b19334554d5dd483af53877251584ab9a66ca777bd1b2e8d2ec4808346776657273696f6e0169646f63756d656e7473a36c6e696365446f63756d656e74a46474797065666f626a656374687265717569726564816a246372656174656441746a70726f70657274696573a1646e616d65a1647479706566737472696e67746164646974696f6e616c50726f70657274696573f46e7769746842797465417272617973a56474797065666f626a65637467696e646963657381a2646e616d6566696e646578316a70726f7065727469657381a16e6279746541727261794669656c6463617363687265717569726564816e6279746541727261794669656c646a70726f70657274696573a26e6279746541727261794669656c64a36474797065656172726179686d61784974656d731069627974654172726179f56f6964656e7469666965724669656c64a56474797065656172726179686d61784974656d731820686d696e4974656d73182069627974654172726179f570636f6e74656e744d656469615479706578216170706c69636174696f6e2f782e646173682e6470702e6964656e746966696572746164646974696f6e616c50726f70657274696573f46f696e6465786564446f63756d656e74a56474797065666f626a65637467696e646963657386a3646e616d6566696e646578316a70726f7065727469657382a168246f776e6572496463617363a16966697273744e616d656361736366756e69717565f5a3646e616d6566696e646578326a70726f7065727469657382a168246f776e6572496463617363a1686c6173744e616d656361736366756e69717565f5a2646e616d6566696e646578336a70726f7065727469657381a1686c6173744e616d6563617363a2646e616d6566696e646578346a70726f7065727469657382a16a2463726561746564417463617363a16a2475706461746564417463617363a2646e616d6566696e646578356a70726f7065727469657381a16a2475706461746564417463617363a2646e616d6566696e646578366a70726f7065727469657381a16a2463726561746564417463617363687265717569726564846966697273744e616d656a246372656174656441746a24757064617465644174686c6173744e616d656a70726f70657274696573a2686c6173744e616d65a2647479706566737472696e67696d61784c656e677468183f6966697273744e616d65a2647479706566737472696e67696d61784c656e677468183f746164646974696f6e616c50726f70657274696573f4', 'hex');
99
+ const dataContractBuffer = dataContract.toBuffer();
103
100
 
104
- const dataContract = await dpp.dataContract.createFromBuffer(dataContractBuffer);
101
+ const dataContractNew = await dpp.dataContract.createFromBuffer(dataContractBuffer);
105
102
 
106
103
  const updatedDataContract = await dpp.dataContract.createFromObject(
107
- dataContract.toObject(),
104
+ dataContractNew.toObject(),
108
105
  );
109
106
 
110
107
  updatedDataContract.incrementVersion();
@@ -138,7 +135,7 @@ describe('DataContractFacade', () => {
138
135
  });
139
136
 
140
137
  it('should validate DataContract instance', async () => {
141
- const result = await dpp.dataContract.validate(dataContractWasm);
138
+ const result = await dpp.dataContract.validate(dataContract);
142
139
 
143
140
  expect(result).to.be.an.instanceOf(ValidationResult);
144
141
  expect(result.getErrors().length).to.be.equal(0);
@@ -1,6 +1,6 @@
1
1
  const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
2
2
  const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
3
- const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
3
+ const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture');
4
4
  const { expectJsonSchemaError, expectValidationError, expectValueError } = require('../../../../../../../lib/test/expect/expectError');
5
5
 
6
6
  const { default: loadWasmDpp } = require('../../../../../../../dist');
@@ -39,7 +39,7 @@ describe('validateDataContractUpdateTransitionBasicFactory', () => {
39
39
  });
40
40
 
41
41
  beforeEach(async function beforeEach() {
42
- dataContract = getDataContractFixture();
42
+ dataContract = await getDataContractFixture();
43
43
 
44
44
  rawDataContract = dataContract.toObject();
45
45
  rawDataContract.version += 1;
@@ -55,9 +55,10 @@ describe('validateDataContractUpdateTransitionBasicFactory', () => {
55
55
 
56
56
  const validator = new DataContractValidator();
57
57
  const dataContractFactory = new DataContractFactory(protocolVersion.latestVersion, validator);
58
- const wasmDataContract = await dataContractFactory.createFromBuffer(dataContract.toBuffer());
58
+ const reCreatedDataContract = await dataContractFactory
59
+ .createFromBuffer(dataContract.toBuffer());
59
60
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
60
- stateRepositoryMock.fetchDataContract.resolves(wasmDataContract);
61
+ stateRepositoryMock.fetchDataContract.resolves(reCreatedDataContract);
61
62
 
62
63
  executionContext = new StateTransitionExecutionContext();
63
64
 
@@ -17,7 +17,6 @@ describe('validateDataContractFactory', () => {
17
17
  let UniqueIndicesLimitReachedError;
18
18
  let SystemPropertyIndexAlreadyPresentError;
19
19
  let InvalidIndexPropertyTypeError;
20
- let InvalidCompoundIndexError;
21
20
  let InvalidIndexedPropertyConstraintError;
22
21
  let InvalidJsonSchemaRefError;
23
22
 
@@ -32,7 +31,6 @@ describe('validateDataContractFactory', () => {
32
31
  UniqueIndicesLimitReachedError,
33
32
  SystemPropertyIndexAlreadyPresentError,
34
33
  InvalidIndexPropertyTypeError,
35
- InvalidCompoundIndexError,
36
34
  InvalidIndexedPropertyConstraintError,
37
35
  InvalidJsonSchemaRefError,
38
36
  } = await loadWasmDpp());
@@ -1929,21 +1927,6 @@ describe('validateDataContractFactory', () => {
1929
1927
  expect(error.getDocumentType()).to.deep.equal('indexedDocument');
1930
1928
  expect(error.getIndexName()).to.equal('index1');
1931
1929
  });
1932
-
1933
- it('should return invalid result if unique compound index contains both required and optional properties', async () => {
1934
- const rawDataContract = dataContract.toObject();
1935
- rawDataContract.documents.optionalUniqueIndexedDocument.required.splice(-1);
1936
-
1937
- const result = await validateDataContract(rawDataContract);
1938
-
1939
- expectValidationError(result, InvalidCompoundIndexError);
1940
-
1941
- const [error] = result.getErrors();
1942
-
1943
- expect(error.getCode()).to.equal(1010);
1944
- expect(error.getIndexName()).to.equal('index2');
1945
- expect(error.getDocumentType()).to.equal('optionalUniqueIndexedDocument');
1946
- });
1947
1930
  });
1948
1931
  });
1949
1932
 
@@ -78,7 +78,11 @@ describe('DocumentBatchTransition', () => {
78
78
 
79
79
  // Nice document has medium security level
80
80
  expect(stateTransitionFixture.getKeySecurityLevelRequirement())
81
- .to.be.equal(IdentityPublicKey.SECURITY_LEVELS.MEDIUM);
81
+ .to.deep.equal([
82
+ IdentityPublicKey.SECURITY_LEVELS.CRITICAL,
83
+ IdentityPublicKey.SECURITY_LEVELS.HIGH,
84
+ IdentityPublicKey.SECURITY_LEVELS.MEDIUM,
85
+ ]);
82
86
 
83
87
  stateTransitionFixture = documentFactory.createStateTransition({
84
88
  create: [mediumSecurityDocumentFixture, masterSecurityDocumentFixture],
@@ -88,7 +92,7 @@ describe('DocumentBatchTransition', () => {
88
92
 
89
93
  // Should be the highest security level out of MEDIUM and MASTER
90
94
  expect(stateTransitionFixture.getKeySecurityLevelRequirement())
91
- .to.be.equal(IdentityPublicKey.SECURITY_LEVELS.MASTER);
95
+ .to.deep.equal([IdentityPublicKey.SECURITY_LEVELS.MASTER]);
92
96
  });
93
97
 
94
98
  it('should return default security level if no document has a security level defined - Rust', () => {
@@ -100,7 +104,10 @@ describe('DocumentBatchTransition', () => {
100
104
 
101
105
  // Should be the default level, which is HIGH
102
106
  expect(stateTransitionFixture.getKeySecurityLevelRequirement())
103
- .to.be.equal(IdentityPublicKey.SECURITY_LEVELS.HIGH);
107
+ .to.deep.equal([
108
+ IdentityPublicKey.SECURITY_LEVELS.CRITICAL,
109
+ IdentityPublicKey.SECURITY_LEVELS.HIGH,
110
+ ]);
104
111
  });
105
112
  });
106
113
  });
@@ -63,8 +63,9 @@ describe('validateIdentityUpdateTransitionStateFactory', () => {
63
63
  stateRepositoryMock.fetchLatestPlatformBlockTime = this.sinonSandbox.stub();
64
64
  stateRepositoryMock.fetchLatestPlatformBlockTime.resolves(blockTime);
65
65
 
66
+ executionContext = new StateTransitionExecutionContext();
66
67
  const validator = new IdentityUpdateTransitionStateValidator(stateRepositoryMock, blsAdapter);
67
- validateIdentityUpdateTransitionState = (st) => validator.validate(st);
68
+ validateIdentityUpdateTransitionState = (st) => validator.validate(st, executionContext);
68
69
 
69
70
  stateTransition = await getIdentityUpdateTransitionFixture();
70
71
 
@@ -72,10 +73,6 @@ describe('validateIdentityUpdateTransitionStateFactory', () => {
72
73
  stateTransition.setPublicKeyIdsToDisable(undefined);
73
74
  stateTransition.setPublicKeysDisabledAt(undefined);
74
75
 
75
- executionContext = new StateTransitionExecutionContext();
76
-
77
- stateTransition.setExecutionContext(executionContext);
78
-
79
76
  const privateKey = '9b67f852093bc61cea0eeca38599dbfba0de28574d2ed9b99d10d33dc1bde7b2';
80
77
 
81
78
  await stateTransition.signByPrivateKey(
@@ -275,10 +272,10 @@ describe('validateIdentityUpdateTransitionStateFactory', () => {
275
272
  // Make code that executes after dry run check to fail
276
273
  stateRepositoryMock.fetchLatestPlatformBlockTime.resolves({});
277
274
 
278
- stateTransition.getExecutionContext().enableDryRun();
275
+ executionContext.enableDryRun();
279
276
  const result = await validateIdentityUpdateTransitionState(stateTransition);
280
277
 
281
- stateTransition.getExecutionContext().disableDryRun();
278
+ executionContext.disableDryRun();
282
279
 
283
280
  expect(result.isValid()).to.be.true();
284
281
 
@@ -21,6 +21,7 @@ describe('StateTransitionFacade', () => {
21
21
  let dataContract;
22
22
  let identityPublicKey;
23
23
  let identity;
24
+ let executionContext;
24
25
 
25
26
  let DashPlatformProtocol;
26
27
  let DataContractFactory;
@@ -37,6 +38,7 @@ describe('StateTransitionFacade', () => {
37
38
  let InvalidStateTransitionSignatureError;
38
39
  let DataContractAlreadyPresentError;
39
40
  let BalanceIsNotEnoughError;
41
+ let StateTransitionExecutionContext;
40
42
 
41
43
  before(async () => {
42
44
  ({
@@ -55,6 +57,7 @@ describe('StateTransitionFacade', () => {
55
57
  InvalidStateTransitionSignatureError,
56
58
  DataContractAlreadyPresentError,
57
59
  BalanceIsNotEnoughError,
60
+ StateTransitionExecutionContext,
58
61
  } = await loadWasmDpp());
59
62
  });
60
63
 
@@ -64,6 +67,8 @@ describe('StateTransitionFacade', () => {
64
67
  const publicKey = privateKeyModel.toPublicKey().toBuffer();
65
68
  const publicKeyId = 1;
66
69
 
70
+ executionContext = new StateTransitionExecutionContext();
71
+
67
72
  identityPublicKey = new IdentityPublicKey({
68
73
  id: publicKeyId,
69
74
  type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
@@ -132,7 +137,7 @@ describe('StateTransitionFacade', () => {
132
137
  });
133
138
 
134
139
  describe('createFromBuffer', () => {
135
- it('should create State Transition from string', async () => {
140
+ it('should create Data Contract State Transition from buffer', async () => {
136
141
  const result = await dpp.stateTransition.createFromBuffer(
137
142
  dataContractCreateTransition.toBuffer(),
138
143
  );
@@ -148,7 +153,7 @@ describe('StateTransitionFacade', () => {
148
153
  const rawStateTransition = dataContractCreateTransition.toObject();
149
154
  rawStateTransition.protocolVersion = 100;
150
155
 
151
- const result = await dpp.stateTransition.validate(rawStateTransition);
156
+ const result = await dpp.stateTransition.validate(rawStateTransition, executionContext);
152
157
 
153
158
  expect(result).to.be.an.instanceOf(ValidationResult);
154
159
  expect(result.isValid()).to.be.false();
@@ -161,7 +166,7 @@ describe('StateTransitionFacade', () => {
161
166
  const rawStateTransition = dataContractCreateTransition.toObject();
162
167
  rawStateTransition.signature = Buffer.alloc(65).fill(1);
163
168
 
164
- const result = await dpp.stateTransition.validate(rawStateTransition);
169
+ const result = await dpp.stateTransition.validate(rawStateTransition, executionContext);
165
170
 
166
171
  expect(result).to.be.an.instanceOf(ValidationResult);
167
172
  expect(result.isValid()).to.be.false();
@@ -173,7 +178,9 @@ describe('StateTransitionFacade', () => {
173
178
  it('should return invalid result if not enough balance to pay fee for State Transition', async () => {
174
179
  identity.setBalance(0);
175
180
  stateRepositoryMock.fetchIdentityBalance.resolves(0);
176
- const result = await dpp.stateTransition.validate(dataContractCreateTransition);
181
+ const result = await dpp.stateTransition.validate(
182
+ dataContractCreateTransition, executionContext,
183
+ );
177
184
 
178
185
  expect(result).to.be.an.instanceOf(ValidationResult);
179
186
  expect(result.isValid()).to.be.false();
@@ -185,7 +192,9 @@ describe('StateTransitionFacade', () => {
185
192
  it('should return invalid result if State Transition is invalid against state', async () => {
186
193
  stateRepositoryMock.fetchDataContract.resolves(dataContract);
187
194
 
188
- const result = await dpp.stateTransition.validate(dataContractCreateTransition);
195
+ const result = await dpp.stateTransition.validate(
196
+ dataContractCreateTransition, executionContext,
197
+ );
189
198
 
190
199
  expect(result).to.be.an.instanceOf(ValidationResult);
191
200
  expect(result.isValid()).to.be.false();
@@ -197,6 +206,7 @@ describe('StateTransitionFacade', () => {
197
206
  it('should validate DataContractCreateTransition', async () => {
198
207
  const result = await dpp.stateTransition.validate(
199
208
  dataContractCreateTransition,
209
+ executionContext,
200
210
  );
201
211
 
202
212
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -210,6 +220,7 @@ describe('StateTransitionFacade', () => {
210
220
  stateRepositoryMock.fetchDataContract.resolves(dataContract);
211
221
  const result = await dpp.stateTransition.validate(
212
222
  documentsBatchTransition,
223
+ executionContext,
213
224
  );
214
225
 
215
226
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -220,7 +231,7 @@ describe('StateTransitionFacade', () => {
220
231
  describe('validateBasic', () => {
221
232
  it('should validate State Transition', async () => {
222
233
  const result = await dpp.stateTransition.validateBasic(
223
- dataContractCreateTransition.toObject(),
234
+ dataContractCreateTransition.toObject(), executionContext,
224
235
  );
225
236
 
226
237
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -231,7 +242,7 @@ describe('StateTransitionFacade', () => {
231
242
  describe('validateSignature', () => {
232
243
  it('should validate identity signed State Transition', async () => {
233
244
  const result = await dpp.stateTransition.validateSignature(
234
- dataContractCreateTransition,
245
+ dataContractCreateTransition, executionContext,
235
246
  );
236
247
 
237
248
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -254,7 +265,7 @@ describe('StateTransitionFacade', () => {
254
265
  );
255
266
 
256
267
  const result = await dpp.stateTransition.validateSignature(
257
- identityCreateTransition,
268
+ identityCreateTransition, executionContext,
258
269
  );
259
270
 
260
271
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -266,6 +277,7 @@ describe('StateTransitionFacade', () => {
266
277
  it('should validate State Transition', async () => {
267
278
  const result = await dpp.stateTransition.validateFee(
268
279
  dataContractCreateTransition,
280
+ executionContext,
269
281
  );
270
282
 
271
283
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -277,6 +289,7 @@ describe('StateTransitionFacade', () => {
277
289
  it('should validate State Transition', async () => {
278
290
  const result = await dpp.stateTransition.validateState(
279
291
  dataContractCreateTransition,
292
+ executionContext,
280
293
  );
281
294
 
282
295
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -1,7 +1,6 @@
1
1
  const bs58 = require('bs58');
2
2
 
3
3
  const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
4
- const JsDataContract = require('@dashevo/dpp/lib/dataContract/DataContract');
5
4
 
6
5
  const { default: loadWasmDpp } = require('../../../dist');
7
6
 
@@ -9,7 +8,6 @@ describe('DataContract', () => {
9
8
  let documentType;
10
9
  let documentSchema;
11
10
  let documents;
12
- let jsDataContract;
13
11
  let ownerId;
14
12
  let entropy;
15
13
  let contractId;
@@ -52,16 +50,6 @@ describe('DataContract', () => {
52
50
 
53
51
  defs = { something: { type: 'string' } };
54
52
 
55
- jsDataContract = new JsDataContract({
56
- $schema: JsDataContract.DEFAULTS.SCHEMA,
57
- $id: contractId,
58
- version: 1,
59
- protocolVersion: 1,
60
- ownerId,
61
- documents,
62
- $defs: defs,
63
- });
64
-
65
53
  dataContract = new DataContract({
66
54
  $schema: DataContractDefaults.SCHEMA,
67
55
  $id: contractId,
@@ -285,21 +273,21 @@ describe('DataContract', () => {
285
273
 
286
274
  describe('#toBuffer', () => {
287
275
  it('should return DataContract as a Buffer', () => {
288
- expect(jsDataContract.getProtocolVersion()).to.deep.equal(dataContract.getProtocolVersion());
289
-
290
- const jsResult = jsDataContract.toBuffer();
291
- const wasmResult = dataContract.toBuffer();
292
-
293
- expect(wasmResult).to.deep.equal(jsResult);
276
+ const result = dataContract.toBuffer();
277
+ expect(result).to.be.instanceOf(Buffer);
278
+ expect(result).to.have.lengthOf(251);
294
279
  });
295
280
  });
296
281
 
282
+ // TODO: can not compare to JS because rust
283
+ // DataContract does not match JS anymore
297
284
  describe('#hash', () => {
298
285
  it('should return DataContract hash', () => {
299
- const jsResult = jsDataContract.hash();
286
+ // const jsResult = jsDataContract.hash();
300
287
  const wasmResult = dataContract.hash();
301
-
302
- expect(wasmResult).to.deep.equal(jsResult);
288
+ //
289
+ // expect(wasmResult).to.deep.equal(jsResult);
290
+ expect(wasmResult).to.be.instanceOf(Uint8Array);
303
291
  });
304
292
  });
305
293
 
@@ -1,19 +1,17 @@
1
- const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
2
-
3
1
  const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
2
+ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
4
3
 
5
- const { default: loadWasmDpp } = require('../../../dist');
4
+ const { default: loadWasmDpp, UnsupportedProtocolVersionError } = require('../../../dist');
6
5
 
7
6
  describe('DataContractFactory', () => {
8
7
  let DataContractFactory;
9
8
  let DataContractValidator;
10
9
  let DataContract;
11
10
  let InvalidDataContractError;
12
- let SerializedObjectParsingError;
13
11
  let JsonSchemaError;
14
12
 
15
13
  let factory;
16
- let jsDataContract;
14
+ let dataContract;
17
15
  let rawDataContract;
18
16
  let dataContractValidator;
19
17
 
@@ -23,18 +21,13 @@ describe('DataContractFactory', () => {
23
21
  DataContractValidator,
24
22
  DataContract,
25
23
  InvalidDataContractError,
26
- SerializedObjectParsingError,
27
24
  JsonSchemaError,
28
25
  } = await loadWasmDpp());
29
26
  });
30
27
 
31
- beforeEach(() => {
32
- jsDataContract = getDataContractFixture();
33
-
34
- // For some reason fixture has empty $defs which violates meta schema
35
- delete jsDataContract.$defs;
36
-
37
- rawDataContract = jsDataContract.toObject();
28
+ beforeEach(async () => {
29
+ dataContract = await getDataContractFixture();
30
+ rawDataContract = dataContract.toObject();
38
31
 
39
32
  dataContractValidator = new DataContractValidator();
40
33
 
@@ -47,7 +40,7 @@ describe('DataContractFactory', () => {
47
40
  describe('create', () => {
48
41
  it('should return new Data Contract with specified name and documents definition', () => {
49
42
  const result = factory.create(
50
- jsDataContract.ownerId.toBuffer(),
43
+ dataContract.getOwnerId(),
51
44
  rawDataContract.documents,
52
45
  ).toObject();
53
46
 
@@ -62,8 +55,7 @@ describe('DataContractFactory', () => {
62
55
  });
63
56
 
64
57
  it('should return new Data Contract without validation if "skipValidation" option is passed', async () => {
65
- const alteredContract = jsDataContract.toObject();
66
- alteredContract.$defs = {}; // Empty defs are bad!
58
+ const alteredContract = dataContract.toObject();
67
59
 
68
60
  const resultSkipValidation = await factory.createFromObject(alteredContract, true);
69
61
 
@@ -71,8 +63,7 @@ describe('DataContractFactory', () => {
71
63
  });
72
64
 
73
65
  it('should throw an error if passed object is not valid', async () => {
74
- const alteredContract = jsDataContract.toObject();
75
- alteredContract.$defs = {}; // Empty defs are bad!
66
+ const alteredContract = dataContract.toObject();
76
67
 
77
68
  try {
78
69
  await factory.createFromObject(alteredContract);
@@ -91,24 +82,24 @@ describe('DataContractFactory', () => {
91
82
  let serializedDataContract;
92
83
 
93
84
  beforeEach(() => {
94
- serializedDataContract = jsDataContract.toBuffer();
85
+ serializedDataContract = dataContract.toBuffer();
95
86
  });
96
87
 
97
88
  it('should return new Data Contract from serialized contract', async () => {
98
89
  const result = await factory.createFromBuffer(serializedDataContract);
99
90
 
100
- expect(result.toObject()).to.deep.equal(jsDataContract.toObject());
91
+ expect(result.toObject()).to.deep.equal(dataContract.toObject());
101
92
  });
102
93
 
103
94
  it('should throw InvalidDataContractError if the decoding fails with consensus error', async () => {
104
95
  try {
105
96
  // Casually break serialized data contract:
106
- serializedDataContract[5] += 1337;
97
+ serializedDataContract[0] = 3;
107
98
  await factory.createFromBuffer(serializedDataContract);
108
99
  expect.fail('should throw InvalidDataContractError');
109
100
  } catch (e) {
110
- expect(e).to.be.an.instanceOf(SerializedObjectParsingError);
111
- expect(e.getParsingError()).to.equals('Syntax(1)');
101
+ expect(e).to.be.an.instanceOf(InvalidDataContractError);
102
+ expect(e.getErrors()[0]).to.be.an.instanceOf(UnsupportedProtocolVersionError);
112
103
  }
113
104
  });
114
105
  });
@@ -116,14 +107,14 @@ describe('DataContractFactory', () => {
116
107
  describe('createDataContractCreateTransition', () => {
117
108
  it('should return new DataContractCreateTransition with passed DataContract', async () => {
118
109
  // Create wasm version of DataContract
119
- const dataContract = new DataContract(rawDataContract);
120
- dataContract.setEntropy(jsDataContract.getEntropy());
110
+ const newDataContract = new DataContract(rawDataContract);
111
+ newDataContract.setEntropy(dataContract.getEntropy());
121
112
 
122
- const result = await factory.createDataContractCreateTransition(dataContract);
113
+ const result = await factory.createDataContractCreateTransition(newDataContract);
123
114
 
124
115
  expect(result.getProtocolVersion()).to.equal(protocolVersion.latestVersion);
125
- expect(result.getEntropy()).to.deep.equal(jsDataContract.getEntropy());
126
- expect(result.getDataContract().toObject()).to.deep.equal(jsDataContract.toObject());
116
+ expect(result.getEntropy()).to.deep.equal(dataContract.getEntropy());
117
+ expect(result.getDataContract().toObject()).to.deep.equal(dataContract.toObject());
127
118
  });
128
119
  });
129
120
  });
@@ -1,4 +1,3 @@
1
- const varint = require('varint');
2
1
  const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
3
2
  const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
4
3
 
@@ -65,10 +64,9 @@ describe('DataContractCreateTransition', () => {
65
64
 
66
65
  describe('#toBuffer', () => {
67
66
  it('should return serialized State Transition', () => {
68
- const protocolVersionBytes = Buffer.from(varint.encode(stateTransition.getProtocolVersion()));
69
-
70
67
  const result = stateTransition.toBuffer();
71
- expect(result.compare(protocolVersionBytes, 0, 1, 0, 1)).equals(0);
68
+ expect(result).to.be.instanceOf(Buffer);
69
+ expect(result).to.have.lengthOf(2271);
72
70
  });
73
71
  });
74
72