@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
@@ -92,7 +92,6 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
92
92
  executionContext = new StateTransitionExecutionContext();
93
93
 
94
94
  stateTransitionJs.setExecutionContext(executionContextJs);
95
- stateTransition.setExecutionContext(executionContext);
96
95
 
97
96
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
98
97
  stateRepositoryMockJs = createStateRepositoryMock(this.sinonSandbox);
@@ -124,7 +123,9 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
124
123
  stateRepositoryMock.fetchDataContract.resolves(null);
125
124
 
126
125
  try {
127
- await validateDocumentsBatchTransitionState(stateRepositoryMock, stateTransition);
126
+ await validateDocumentsBatchTransitionState(
127
+ stateRepositoryMock, stateTransition, executionContext,
128
+ );
128
129
 
129
130
  expect.fail('should throw DataContractNotPresentError');
130
131
  } catch (e) {
@@ -142,7 +143,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
142
143
  stateRepositoryMock.fetchDocuments.resolves([documents[0].getDocument()]);
143
144
 
144
145
  const result = await validateDocumentsBatchTransitionState(
145
- stateRepositoryMock, stateTransition,
146
+ stateRepositoryMock, stateTransition, executionContext,
146
147
  );
147
148
 
148
149
  expect(result.isValid()).is.not.true();
@@ -170,7 +171,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
170
171
  }, [dataContract]);
171
172
 
172
173
  const result = await validateDocumentsBatchTransitionState(
173
- stateRepositoryMock, stateTransition,
174
+ stateRepositoryMock, stateTransition, executionContext,
174
175
  );
175
176
  expect(result).is.instanceOf(ValidationResult);
176
177
 
@@ -200,7 +201,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
200
201
  }, [dataContract]);
201
202
 
202
203
  const result = await validateDocumentsBatchTransitionState(
203
- stateRepositoryMock, stateTransition,
204
+ stateRepositoryMock, stateTransition, executionContext,
204
205
  );
205
206
 
206
207
  expect(result).is.instanceOf(ValidationResult);
@@ -237,7 +238,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
237
238
  stateRepositoryMock.fetchDocuments.resolves([documents[0].getDocument()]);
238
239
 
239
240
  const result = await validateDocumentsBatchTransitionState(
240
- stateRepositoryMock, stateTransition,
241
+ stateRepositoryMock, stateTransition, executionContext,
241
242
  );
242
243
 
243
244
  expect(result).is.instanceOf(ValidationResult);
@@ -280,6 +281,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
280
281
  const result = await validateDocumentsBatchTransitionState(
281
282
  stateRepositoryMock,
282
283
  stateTransition,
284
+ executionContext,
283
285
  );
284
286
 
285
287
  expect(result).is.instanceOf(ValidationResult);
@@ -357,7 +359,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
357
359
  stateTransition.setTransitions(transitions);
358
360
 
359
361
  const result = await validateDocumentsBatchTransitionState(
360
- stateRepositoryMock, stateTransition,
362
+ stateRepositoryMock, stateTransition, executionContext,
361
363
  );
362
364
 
363
365
  expect(result).is.instanceOf(ValidationResult);
@@ -387,7 +389,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
387
389
  stateTransition.setTransitions(transitions);
388
390
 
389
391
  const result = await validateDocumentsBatchTransitionState(
390
- stateRepositoryMock, stateTransition,
392
+ stateRepositoryMock, stateTransition, executionContext,
391
393
  );
392
394
 
393
395
  expect(result).is.instanceOf(ValidationResult);
@@ -425,7 +427,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
425
427
  stateTransition.setTransitions(transitions);
426
428
 
427
429
  const result = await validateDocumentsBatchTransitionState(
428
- stateRepositoryMock, stateTransition,
430
+ stateRepositoryMock, stateTransition, executionContext,
429
431
  );
430
432
 
431
433
  expect(result).is.instanceOf(ValidationResult);
@@ -471,10 +473,10 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
471
473
  t.setCreatedAt(undefined);
472
474
  });
473
475
  stateTransition.setTransitions(transitions);
474
- stateTransition.getExecutionContext().enableDryRun();
476
+ executionContext.enableDryRun();
475
477
 
476
478
  const result = await validateDocumentsBatchTransitionState(
477
- stateRepositoryMock, stateTransition,
479
+ stateRepositoryMock, stateTransition, executionContext,
478
480
  );
479
481
 
480
482
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -501,10 +503,10 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
501
503
  // eslint-disable-next-line no-param-reassign
502
504
  t.setUpdatedAt(new Date());
503
505
  });
504
- stateTransition.getExecutionContext().enableDryRun();
506
+ executionContext.enableDryRun();
505
507
 
506
508
  const result = await validateDocumentsBatchTransitionState(
507
- stateRepositoryMock, stateTransition,
509
+ stateRepositoryMock, stateTransition, executionContext,
508
510
  );
509
511
 
510
512
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -540,7 +542,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
540
542
  stateTransition.setTransitions(transitions);
541
543
 
542
544
  const result = await validateDocumentsBatchTransitionState(
543
- stateRepositoryMock, stateTransition,
545
+ stateRepositoryMock, stateTransition, executionContext,
544
546
  );
545
547
 
546
548
  expect(result).is.instanceOf(ValidationResult);
@@ -585,10 +587,10 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
585
587
  t.setUpdatedAt(new Date(createdAtMinus6Mins));
586
588
  });
587
589
  stateTransition.setTransitions(transitions);
588
- stateTransition.getExecutionContext().enableDryRun();
590
+ executionContext.enableDryRun();
589
591
 
590
592
  const result = await validateDocumentsBatchTransitionState(
591
- stateRepositoryMock, stateTransition,
593
+ stateRepositoryMock, stateTransition, executionContext,
592
594
  );
593
595
 
594
596
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -621,7 +623,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
621
623
  }, [dataContract]);
622
624
 
623
625
  const result = await validateDocumentsBatchTransitionState(
624
- stateRepositoryMock, stateTransition,
626
+ stateRepositoryMock, stateTransition, executionContext,
625
627
  );
626
628
 
627
629
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -658,7 +660,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => {
658
660
  }, [dataContract]);
659
661
 
660
662
  const result = await validateDocumentsBatchTransitionState(
661
- stateRepositoryMock, stateTransition,
663
+ stateRepositoryMock, stateTransition, executionContext,
662
664
  );
663
665
 
664
666
  expect(result).to.be.an.instanceOf(ValidationResult);
@@ -1,7 +1,6 @@
1
1
  const varint = require('varint');
2
2
  const JSIdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
3
3
  const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
4
- const JSIdentity = require('@dashevo/dpp/lib/identity/Identity');
5
4
 
6
5
  const { hash: hashFunction } = require('@dashevo/dpp/lib/util/hash');
7
6
  const { expect } = require('chai');
@@ -135,14 +134,10 @@ describe('Identity', () => {
135
134
  });
136
135
 
137
136
  describe('#toBuffer', () => {
138
- it('should return the same buffer as JS Identity', () => {
139
- // Due to browser polyfill, we got two different versions of buffers, and makes
140
- // the compatibility test to fail in karma, so hence this hack here.
141
- rawIdentity.id = Buffer.from(rawIdentity.id.toBuffer());
142
- const oldIdentity = new JSIdentity(rawIdentity);
137
+ it('should return buffer', () => {
143
138
  const result = identity.toBuffer();
144
-
145
- expect(result).to.deep.eq(oldIdentity.toBuffer());
139
+ expect(result).to.be.instanceOf(Buffer);
140
+ expect(result).to.have.length(87);
146
141
  });
147
142
  });
148
143
 
@@ -2,7 +2,7 @@ const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey')
2
2
  const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture');
3
3
  const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
4
4
  const getChainAssetLockProofFixture = require('../../../lib/test/fixtures/getChainAssetLockProofFixture');
5
- const { default: loadWasmDpp } = require('../../../dist');
5
+ const { default: loadWasmDpp, SerializedObjectParsingError } = require('../../../dist');
6
6
  const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
7
7
 
8
8
  describe('IdentityFactory', () => {
@@ -21,7 +21,6 @@ describe('IdentityFactory', () => {
21
21
  let IdentityUpdateTransition;
22
22
  let IdentityPublicKeyWithWitness;
23
23
  let InvalidIdentityError;
24
- let PlatformValueError;
25
24
  let UnsupportedProtocolVersionError;
26
25
  let ChainAssetLockProof;
27
26
 
@@ -30,7 +29,7 @@ describe('IdentityFactory', () => {
30
29
  Identity, IdentityFactory, IdentityValidator,
31
30
  InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
32
31
  IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyWithWitness,
33
- InvalidIdentityError, UnsupportedProtocolVersionError, PlatformValueError,
32
+ InvalidIdentityError, UnsupportedProtocolVersionError,
34
33
  } = await loadWasmDpp());
35
34
  });
36
35
 
@@ -149,7 +148,7 @@ describe('IdentityFactory', () => {
149
148
 
150
149
  expect.fail('should throw an error');
151
150
  } catch (e) {
152
- expect(e).to.be.instanceOf(PlatformValueError);
151
+ expect(e).to.be.instanceOf(SerializedObjectParsingError);
153
152
  }
154
153
  });
155
154
  });
@@ -42,13 +42,12 @@ describe('applyIdentityCreateTransitionFactory', () => {
42
42
 
43
43
  executionContext = new StateTransitionExecutionContext();
44
44
 
45
- stateTransition.setExecutionContext(executionContext);
46
-
47
45
  output = stateTransition.getAssetLockProof().getOutput();
48
46
 
49
47
  applyIdentityCreateTransition = (st) => applyIdentityCreateTransitionDPP(
50
48
  stateRepositoryMock,
51
49
  st,
50
+ executionContext,
52
51
  );
53
52
  });
54
53
 
@@ -9,11 +9,13 @@ describe('validateIdentityCreateTransitionStateFactory', () => {
9
9
  let validateIdentityCreateTransitionState;
10
10
  let stateTransition;
11
11
  let stateRepositoryMock;
12
+ let executionContext;
12
13
 
13
14
  let IdentityCreateTransition;
14
15
  let IdentityPublicKey;
15
16
  let IdentityAlreadyExistsError;
16
17
  let IdentityCreateTransitionStateValidator;
18
+ let StateTransitionExecutionContext;
17
19
 
18
20
  before(async () => {
19
21
  ({
@@ -21,15 +23,17 @@ describe('validateIdentityCreateTransitionStateFactory', () => {
21
23
  IdentityAlreadyExistsError,
22
24
  IdentityPublicKey,
23
25
  IdentityCreateTransitionStateValidator,
26
+ StateTransitionExecutionContext,
24
27
  } = await loadWasmDpp());
25
28
  });
26
29
 
27
30
  beforeEach(async function () {
31
+ executionContext = new StateTransitionExecutionContext();
28
32
  const privateKey = Buffer.from('af432c476f65211f45f48f1d42c9c0b497e56696aa1736b40544ef1a496af837', 'hex');
29
33
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
30
34
 
31
35
  const validator = new IdentityCreateTransitionStateValidator(stateRepositoryMock);
32
- validateIdentityCreateTransitionState = (st) => validator.validate(st);
36
+ validateIdentityCreateTransitionState = (st) => validator.validate(st, executionContext);
33
37
 
34
38
  stateTransition = new IdentityCreateTransition(
35
39
  getIdentityCreateTransitionFixture().toObject(),
@@ -69,11 +73,11 @@ describe('validateIdentityCreateTransitionStateFactory', () => {
69
73
  it('should return valid result on dry run', async () => {
70
74
  stateRepositoryMock.fetchIdentityBalance.resolves(1);
71
75
 
72
- stateTransition.getExecutionContext().enableDryRun();
76
+ executionContext.enableDryRun();
73
77
 
74
78
  const result = await validateIdentityCreateTransitionState(stateTransition);
75
79
 
76
- stateTransition.getExecutionContext().disableDryRun();
80
+ executionContext.disableDryRun();
77
81
 
78
82
  expect(result.isValid()).to.be.true();
79
83
  });
@@ -45,11 +45,10 @@ describe('applyIdentityTopUpTransitionFactory', () => {
45
45
 
46
46
  executionContext = new StateTransitionExecutionContext();
47
47
 
48
- stateTransition.setExecutionContext(executionContext);
49
-
50
48
  applyIdentityTopUpTransition = (st) => applyIdentityTopUpTransitionDPP(
51
49
  stateRepositoryMock,
52
50
  st,
51
+ executionContext,
53
52
  );
54
53
  });
55
54
 
@@ -7,14 +7,17 @@ describe('validateIdentityTopUpTransitionStateFactory', () => {
7
7
  let validateIdentityTopUpTransitionState;
8
8
  let stateTransition;
9
9
  let stateRepositoryMock;
10
+ let executionContext;
10
11
 
11
12
  let IdentityTopUpTransition;
12
13
  let IdentityTopUpTransitionStateValidator;
14
+ let StateTransitionExecutionContext;
13
15
 
14
16
  before(async () => {
15
17
  ({
16
18
  IdentityTopUpTransition,
17
19
  IdentityTopUpTransitionStateValidator,
20
+ StateTransitionExecutionContext,
18
21
  } = await loadWasmDpp());
19
22
  });
20
23
 
@@ -27,8 +30,9 @@ describe('validateIdentityTopUpTransitionStateFactory', () => {
27
30
 
28
31
  const validator = new IdentityTopUpTransitionStateValidator(stateRepositoryMock);
29
32
 
33
+ executionContext = new StateTransitionExecutionContext();
30
34
  validateIdentityTopUpTransitionState = (st) => validator.validate(
31
- st,
35
+ st, executionContext,
32
36
  );
33
37
  });
34
38
 
@@ -25,7 +25,6 @@ describe('applyIdentityUpdateTransition', () => {
25
25
  stateTransition.setRevision(stateTransition.getRevision() + 1);
26
26
 
27
27
  executionContext = new StateTransitionExecutionContext();
28
- stateTransition.setExecutionContext(executionContext);
29
28
 
30
29
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
31
30
  stateRepositoryMock.updateIdentityRevision.resolves();
@@ -35,6 +34,7 @@ describe('applyIdentityUpdateTransition', () => {
35
34
  applyIdentityUpdateTransition = (st) => applyIdentityUpdateTransitionDPP(
36
35
  stateRepositoryMock,
37
36
  st,
37
+ executionContext,
38
38
  );
39
39
  });
40
40
 
@@ -69,11 +69,11 @@ describe('applyIdentityUpdateTransition', () => {
69
69
  it('should add and disable public keys on dry run', async function () {
70
70
  const { match } = this.sinonSandbox;
71
71
 
72
- stateTransition.getExecutionContext().enableDryRun();
72
+ executionContext.enableDryRun();
73
73
 
74
74
  await applyIdentityUpdateTransition(stateTransition);
75
75
 
76
- stateTransition.getExecutionContext().disableDryRun();
76
+ executionContext.disableDryRun();
77
77
 
78
78
  expect(stateRepositoryMock.updateIdentityRevision).to.be.calledOnceWithExactly(
79
79
  match((id) => id.toBuffer().equals(stateTransition.getOwnerId().toBuffer())),
@@ -13,6 +13,7 @@ let {
13
13
  StateTransitionMaxSizeExceededError,
14
14
  JsonSchemaError,
15
15
  ValidationResult,
16
+ StateTransitionExecutionContext,
16
17
  } = require('../../../..');
17
18
 
18
19
  describe('validateStateTransitionBasicFactory', () => {
@@ -20,6 +21,7 @@ describe('validateStateTransitionBasicFactory', () => {
20
21
  let dataContract;
21
22
  let stateTransition;
22
23
  let dpp;
24
+ let executionContext;
23
25
 
24
26
  beforeEach(async function beforeEach() {
25
27
  ({
@@ -27,6 +29,7 @@ describe('validateStateTransitionBasicFactory', () => {
27
29
  MissingStateTransitionTypeError,
28
30
  InvalidStateTransitionTypeError,
29
31
  StateTransitionMaxSizeExceededError,
32
+ StateTransitionExecutionContext,
30
33
  JsonSchemaError,
31
34
  ValidationResult,
32
35
  } = await loadWasmDpp());
@@ -45,12 +48,14 @@ describe('validateStateTransitionBasicFactory', () => {
45
48
  await stateTransition.sign(identityPublicKey, privateKey, getBlsMock());
46
49
 
47
50
  rawStateTransition = stateTransition.toObject();
51
+
52
+ executionContext = new StateTransitionExecutionContext();
48
53
  });
49
54
 
50
55
  it('should return invalid result if ST type is missing', async () => {
51
56
  delete rawStateTransition.type;
52
57
 
53
- const result = await dpp.stateTransition.validateBasic(rawStateTransition);
58
+ const result = await dpp.stateTransition.validateBasic(rawStateTransition, executionContext);
54
59
 
55
60
  await expectValidationError(result);
56
61
 
@@ -62,7 +67,7 @@ describe('validateStateTransitionBasicFactory', () => {
62
67
  it('should return invalid result if ST type is not valid', async () => {
63
68
  rawStateTransition.type = 66;
64
69
 
65
- const result = await dpp.stateTransition.validateBasic(rawStateTransition);
70
+ const result = await dpp.stateTransition.validateBasic(rawStateTransition, executionContext);
66
71
 
67
72
  await expectValidationError(result);
68
73
 
@@ -73,7 +78,7 @@ describe('validateStateTransitionBasicFactory', () => {
73
78
 
74
79
  it('should return invalid result if ST is invalid against validation function', async () => {
75
80
  delete rawStateTransition.signaturePublicKeyId;
76
- const result = await dpp.stateTransition.validateBasic(rawStateTransition);
81
+ const result = await dpp.stateTransition.validateBasic(rawStateTransition, executionContext);
77
82
 
78
83
  await expectValidationError(result);
79
84
 
@@ -82,11 +87,11 @@ describe('validateStateTransitionBasicFactory', () => {
82
87
  expect(error).to.instanceof(JsonSchemaError);
83
88
  });
84
89
 
85
- it('should return invalid result if ST size is more than 16 kb', async () => {
90
+ it('should return invalid result if ST size is more than 25 kb', async () => {
86
91
  const largeDocument = rawStateTransition.dataContract.documents.niceDocument;
87
92
 
88
93
  // generate big state transition
89
- for (let i = 0; i < 6; i++) {
94
+ for (let i = 0; i < 7; i++) {
90
95
  largeDocument.properties[`name${i}`] = { type: 'string' };
91
96
  }
92
97
  for (let i = 0; i < 90; i++) {
@@ -95,6 +100,7 @@ describe('validateStateTransitionBasicFactory', () => {
95
100
 
96
101
  const result = await dpp.stateTransition.validateBasic(
97
102
  rawStateTransition,
103
+ executionContext,
98
104
  );
99
105
 
100
106
  await expectValidationError(result, StateTransitionMaxSizeExceededError);
@@ -105,7 +111,7 @@ describe('validateStateTransitionBasicFactory', () => {
105
111
  });
106
112
 
107
113
  it('should return valid result', async () => {
108
- const result = await dpp.stateTransition.validateBasic(rawStateTransition);
114
+ const result = await dpp.stateTransition.validateBasic(rawStateTransition, executionContext);
109
115
 
110
116
  expect(result).to.be.an.instanceOf(ValidationResult);
111
117
  expect(result.isValid()).to.be.true();
@@ -42,10 +42,9 @@ describe('validateStateTransitionFeeFactory', () => {
42
42
 
43
43
  const validator = new StateTransitionFeeValidator(stateRepositoryMock);
44
44
 
45
- validateStateTransitionFee = (st) => validator.validate(st);
46
-
47
45
  executionContext = new StateTransitionExecutionContext();
48
46
  executionContext.disableDryRun();
47
+ validateStateTransitionFee = (st) => validator.validate(st, executionContext);
49
48
 
50
49
  dataContract = await getDataContractFixture();
51
50
  });
@@ -61,7 +60,6 @@ describe('validateStateTransitionFeeFactory', () => {
61
60
 
62
61
  it('should return invalid result if balance is not enough', async () => {
63
62
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
64
- dataContractCreateTransition.setExecutionContext(executionContext);
65
63
  stateRepositoryMock.fetchIdentityBalance.resolves(1);
66
64
 
67
65
  const result = await validateStateTransitionFee(dataContractCreateTransition);
@@ -83,7 +81,6 @@ describe('validateStateTransitionFeeFactory', () => {
83
81
  stateRepositoryMock.fetchIdentityBalance.resolves(42);
84
82
 
85
83
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
86
- dataContractCreateTransition.setExecutionContext(executionContext);
87
84
 
88
85
  const result = await validateStateTransitionFee(dataContractCreateTransition);
89
86
 
@@ -112,7 +109,6 @@ describe('validateStateTransitionFeeFactory', () => {
112
109
  stateRepositoryMock.fetchIdentityBalance.resolves(1);
113
110
 
114
111
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
115
- documentsBatchTransition.setExecutionContext(executionContext);
116
112
 
117
113
  const result = await validateStateTransitionFee(documentsBatchTransition);
118
114
 
@@ -133,7 +129,6 @@ describe('validateStateTransitionFeeFactory', () => {
133
129
  stateRepositoryMock.fetchIdentityBalance.resolves(42);
134
130
 
135
131
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
136
- documentsBatchTransition.setExecutionContext(executionContext);
137
132
 
138
133
  const result = await validateStateTransitionFee(documentsBatchTransition);
139
134
 
@@ -151,11 +146,10 @@ describe('validateStateTransitionFeeFactory', () => {
151
146
  executionContext.enableDryRun();
152
147
 
153
148
  executionContext.addOperation(new PreCalculatedOperation(0, 42, []));
154
- documentsBatchTransition.setExecutionContext(executionContext);
155
149
 
156
150
  const result = await validateStateTransitionFee(documentsBatchTransition);
157
151
 
158
- documentsBatchTransition.getExecutionContext().disableDryRun();
152
+ executionContext.disableDryRun();
159
153
 
160
154
  expect(result.isValid()).to.be.true();
161
155
 
@@ -182,7 +176,6 @@ describe('validateStateTransitionFeeFactory', () => {
182
176
 
183
177
  it('should return invalid result if asset lock output amount is not enough', async () => {
184
178
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount + 1, []));
185
- identityCreateTransition.setExecutionContext(executionContext);
186
179
 
187
180
  const result = await validateStateTransitionFee(identityCreateTransition);
188
181
 
@@ -198,7 +191,6 @@ describe('validateStateTransitionFeeFactory', () => {
198
191
 
199
192
  it('should return valid result', async () => {
200
193
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount, []));
201
- identityCreateTransition.setExecutionContext(executionContext);
202
194
 
203
195
  const result = await validateStateTransitionFee(identityCreateTransition);
204
196
 
@@ -210,11 +202,10 @@ describe('validateStateTransitionFeeFactory', () => {
210
202
  it('should not increase balance on dry run', async () => {
211
203
  executionContext.enableDryRun();
212
204
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount + 1, []));
213
- identityCreateTransition.setExecutionContext(executionContext);
214
205
 
215
206
  const result = await validateStateTransitionFee(identityCreateTransition);
216
207
 
217
- identityCreateTransition.getExecutionContext().disableDryRun();
208
+ executionContext.disableDryRun();
218
209
 
219
210
  expect(result.isValid()).to.be.true();
220
211
  });
@@ -240,7 +231,6 @@ describe('validateStateTransitionFeeFactory', () => {
240
231
  stateRepositoryMock.fetchIdentityBalanceWithDebt.resolves(1);
241
232
 
242
233
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount + 2, []));
243
- identityTopUpTransition.setExecutionContext(executionContext);
244
234
 
245
235
  const result = await validateStateTransitionFee(identityTopUpTransition);
246
236
 
@@ -261,7 +251,6 @@ describe('validateStateTransitionFeeFactory', () => {
261
251
  stateRepositoryMock.fetchIdentityBalanceWithDebt.resolves(41);
262
252
 
263
253
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount - 1, []));
264
- identityTopUpTransition.setExecutionContext(executionContext);
265
254
 
266
255
  const result = await validateStateTransitionFee(identityTopUpTransition);
267
256
 
@@ -278,11 +267,10 @@ describe('validateStateTransitionFeeFactory', () => {
278
267
 
279
268
  executionContext.enableDryRun();
280
269
  executionContext.addOperation(new PreCalculatedOperation(0, outputAmount + 42, []));
281
- identityTopUpTransition.setExecutionContext(executionContext);
282
270
 
283
271
  const result = await validateStateTransitionFee(identityTopUpTransition);
284
272
 
285
- identityTopUpTransition.getExecutionContext().disableDryRun();
273
+ executionContext.disableDryRun();
286
274
 
287
275
  expect(result.isValid()).to.be.true();
288
276
 
@@ -70,12 +70,13 @@ describe('validateStateTransitionIdentitySignatureFactory', () => {
70
70
  identity.addPublicKey(identityPublicKey);
71
71
 
72
72
  stateTransition.sign(identity.getPublicKeyById(2), privateKey, getBlsMock());
73
- stateTransition.setExecutionContext(executionContext);
74
73
 
75
74
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
76
75
  stateRepositoryMock.fetchIdentity.resolves(identity);
77
76
 
78
- validateStateTransitionIdentitySignature = (st) => validate(stateRepositoryMock, st, blsMock);
77
+ validateStateTransitionIdentitySignature = (st) => validate(
78
+ stateRepositoryMock, st, executionContext, blsMock,
79
+ );
79
80
  });
80
81
 
81
82
  it('should pass properly signed state transition', async () => {
@@ -227,10 +228,13 @@ describe('validateStateTransitionIdentitySignatureFactory', () => {
227
228
 
228
229
  expect(error).to.be.instanceOf(InvalidSignaturePublicKeySecurityLevelError);
229
230
  expect(error.getPublicKeySecurityLevel()).to.equal(IdentityPublicKey.SECURITY_LEVELS.MASTER);
230
- expect(error.getKeySecurityLevelRequirement()).to.equal(2);
231
+ expect(error.getKeySecurityLevelRequirement()).to.deep.equal([2]);
231
232
  });
232
233
 
233
- it('should return PublicKeySecurityLevelNotMetConsensusError if PublicKeySecurityLevelNotMetError was thrown', async () => {
234
+ // TODO: the error is not used anymore,
235
+ // remove the test and remaining `match` variants in rs-dpp
236
+ // that still expecting to receive this error?
237
+ it.skip('should return PublicKeySecurityLevelNotMetConsensusError if PublicKeySecurityLevelNotMetError was thrown', async () => {
234
238
  const publicKeys = identity.getPublicKeys();
235
239
  publicKeys[2].setSecurityLevel(IdentityPublicKey.SECURITY_LEVELS.MEDIUM);
236
240
  identity.setPublicKeys(publicKeys);
@@ -11,6 +11,7 @@ describe('validateStateTransitionKeySignatureFactory', () => {
11
11
  let stateTransition;
12
12
  let stateRepositoryMock;
13
13
  let validateStateTransitionKeySignature;
14
+ let executionContext;
14
15
 
15
16
  let InvalidStateTransitionSignatureError;
16
17
  let StateTransitionKeySignatureValidator;
@@ -33,6 +34,7 @@ describe('validateStateTransitionKeySignatureFactory', () => {
33
34
  });
34
35
 
35
36
  beforeEach(function beforeEach() {
37
+ executionContext = new StateTransitionExecutionContext();
36
38
  const stateTransitionJS = getIdentityCreateTransitionFixture();
37
39
  const rawStateTransition = stateTransitionJS.toObject();
38
40
 
@@ -42,7 +44,7 @@ describe('validateStateTransitionKeySignatureFactory', () => {
42
44
 
43
45
  const validator = new StateTransitionKeySignatureValidator(stateRepositoryMock);
44
46
 
45
- validateStateTransitionKeySignature = (st) => validator.validate(st);
47
+ validateStateTransitionKeySignature = (st) => validator.validate(st, executionContext);
46
48
  });
47
49
 
48
50
  it('should return invalid result if signature is not valid', async () => {
@@ -9,12 +9,14 @@ let {
9
9
  InvalidStateTransitionTypeError,
10
10
  ValidationResult,
11
11
  DataContractAlreadyPresentError,
12
+ StateTransitionExecutionContext,
12
13
  } = require('../../../..');
13
14
 
14
15
  describe('validateStateTransitionStateFactory', () => {
15
16
  let stateTransition;
16
17
  let dpp;
17
18
  let stateRepositoryMock;
19
+ let executionContext;
18
20
 
19
21
  beforeEach(async function beforeEach() {
20
22
  ({
@@ -22,8 +24,10 @@ describe('validateStateTransitionStateFactory', () => {
22
24
  InvalidStateTransitionTypeError,
23
25
  ValidationResult,
24
26
  DataContractAlreadyPresentError,
27
+ StateTransitionExecutionContext,
25
28
  } = await loadWasmDpp());
26
29
  const dataContract = await getDataContractFixture();
30
+ executionContext = new StateTransitionExecutionContext();
27
31
 
28
32
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
29
33
  stateRepositoryMock.fetchDataContract.resolves();
@@ -46,7 +50,7 @@ describe('validateStateTransitionStateFactory', () => {
46
50
  };
47
51
 
48
52
  try {
49
- await dpp.stateTransition.validateState(stateTransition);
53
+ await dpp.stateTransition.validateState(stateTransition, executionContext);
50
54
 
51
55
  expect.fail('should throw InvalidStateTransitionTypeError');
52
56
  } catch (e) {
@@ -58,7 +62,7 @@ describe('validateStateTransitionStateFactory', () => {
58
62
  it('should return invalid result if Data Contract State Transition is not valid', async () => {
59
63
  stateRepositoryMock.fetchDataContract.resolves(await getDataContractFixture());
60
64
 
61
- const result = await dpp.stateTransition.validateState(stateTransition);
65
+ const result = await dpp.stateTransition.validateState(stateTransition, executionContext);
62
66
 
63
67
  await expectValidationError(result);
64
68
 
@@ -70,7 +74,7 @@ describe('validateStateTransitionStateFactory', () => {
70
74
  });
71
75
 
72
76
  it('should return valid result', async () => {
73
- const result = await dpp.stateTransition.validateState(stateTransition);
77
+ const result = await dpp.stateTransition.validateState(stateTransition, executionContext);
74
78
 
75
79
  expect(result).to.be.an.instanceOf(ValidationResult);
76
80
  expect(result.isValid()).to.be.true();