@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.
- package/Cargo.toml +2 -2
- package/dist/wasm/wasm_dpp.d.ts +600 -454
- package/dist/wasm/wasm_dpp.js +178 -120
- package/dist/wasm/wasm_dpp_bg.js +1 -1
- package/lib/test/fixtures/getDocumentsFixture.js +5 -1
- package/lib/wasm/wasm_dpp.d.ts +600 -454
- package/package.json +4 -4
- package/src/dash_platform_protocol.rs +1 -1
- package/src/data_contract/data_contract.rs +2 -1
- package/src/data_contract/data_contract_facade.rs +2 -2
- package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
- package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +7 -16
- package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +5 -3
- package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +6 -2
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +7 -18
- package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +6 -4
- package/src/decode_protocol_entity.rs +19 -19
- package/src/document/extended_document.rs +5 -2
- package/src/document/fetch_and_validate_data_contract.rs +2 -2
- package/src/document/mod.rs +5 -3
- package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +9 -6
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +1 -1
- package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +1 -1
- package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +1 -2
- package/src/document/state_transition/document_batch_transition/mod.rs +18 -25
- package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +4 -4
- package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +3 -1
- package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +3 -3
- package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +3 -3
- package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +3 -3
- package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +4 -4
- package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +2 -2
- package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +1 -1
- package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -1
- package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -1
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
- package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
- package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -1
- package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -1
- package/src/errors/consensus/basic/document/invalid_document_type_error.rs +2 -2
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -1
- package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -1
- package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -1
- package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -1
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +35 -0
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -1
- package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -1
- package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -1
- package/src/errors/consensus/basic/identity/mod.rs +2 -0
- package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +2 -2
- package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -3
- package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -1
- package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -1
- package/src/errors/consensus/basic/json_schema_error.rs +1 -3
- package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
- package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -2
- package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -1
- package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -1
- package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -1
- package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -1
- package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -1
- package/src/errors/consensus/consensus_error.rs +24 -4
- package/src/errors/consensus/deserialize.rs +1 -1
- package/src/errors/consensus/fee/balance_is_not_enough_error.rs +1 -1
- package/src/errors/consensus/signature/basic_bls_error.rs +38 -0
- package/src/errors/consensus/signature/basic_ecdsa_error.rs +38 -0
- package/src/errors/consensus/signature/mod.rs +6 -0
- package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +38 -0
- package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +2 -2
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +58 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +66 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +50 -1
- package/src/errors/consensus/state/document/document_already_present_error.rs +1 -1
- package/src/errors/consensus/state/document/document_not_found_error.rs +1 -1
- package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -1
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +2 -2
- package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -1
- package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -1
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +1 -1
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -1
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -1
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +1 -1
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -1
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -1
- package/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs +26 -0
- package/src/errors/consensus/state/identity/mod.rs +2 -0
- package/src/errors/consensus/value_error.rs +1 -1
- package/src/errors/from.rs +0 -1
- package/src/generate_temporary_ecdsa_private_key.rs +2 -6
- package/src/identity/factory_utils.rs +4 -4
- package/src/identity/identity_public_key/key_type.rs +2 -0
- package/src/identity/identity_public_key/purpose.rs +7 -0
- package/src/identity/mod.rs +4 -2
- package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +6 -2
- package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +14 -32
- package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +3 -1
- package/src/identity/state_transition/identity_create_transition/to_object.rs +2 -2
- package/src/identity/state_transition/identity_public_key_transitions.rs +11 -11
- package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +6 -2
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +7 -26
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +3 -1
- package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +3 -1
- package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
- package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +11 -32
- package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +3 -2
- package/src/identity/state_transition/identity_update_transition/to_object.rs +2 -2
- package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
- package/src/state_repository.rs +3 -2
- package/src/state_transition/fee/calculate_state_transition_fee.rs +8 -5
- package/src/state_transition/state_transition_facade.rs +18 -21
- package/src/state_transition/validation/state_transition_fee_validator.rs +3 -1
- package/src/state_transition/validation/validate_state_transition_identity_signature.rs +22 -6
- package/src/state_transition/validation/validate_state_transition_key_signature.rs +7 -1
- package/src/utils.rs +2 -4
- package/src/validation/validation_result.rs +12 -7
- package/test/integration/dataContract/DataContractFacade.spec.js +17 -20
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +5 -4
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +0 -17
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +10 -3
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +4 -7
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +21 -8
- package/test/unit/dataContract/DataContract.spec.js +9 -21
- package/test/unit/dataContract/DataContractFactory.spec.js +19 -28
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +2 -4
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -7
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -8
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -5
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -3
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +8 -6
- package/test/unit/decodeProtocolEntityFactory.spec.js +4 -1
- package/test/unit/document/Document.spec.js +9 -7
- package/test/unit/document/DocumentFactory.spec.js +38 -90
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +2 -3
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +5 -6
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +20 -18
- package/test/unit/identity/Identity.spec.js +3 -8
- package/test/unit/identity/IdentityFactory.spec.js +3 -4
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +1 -2
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +7 -3
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +1 -2
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -1
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +3 -3
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +12 -6
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +4 -16
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +8 -4
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +3 -1
- 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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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,
|
|
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(
|
|
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
|
-
|
|
76
|
+
executionContext.enableDryRun();
|
|
73
77
|
|
|
74
78
|
const result = await validateIdentityCreateTransitionState(stateTransition);
|
|
75
79
|
|
|
76
|
-
|
|
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
|
-
|
|
72
|
+
executionContext.enableDryRun();
|
|
73
73
|
|
|
74
74
|
await applyIdentityUpdateTransition(stateTransition);
|
|
75
75
|
|
|
76
|
-
|
|
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
|
|
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 <
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
273
|
+
executionContext.disableDryRun();
|
|
286
274
|
|
|
287
275
|
expect(result.isValid()).to.be.true();
|
|
288
276
|
|
package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js
CHANGED
|
@@ -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(
|
|
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
|
-
|
|
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);
|
package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js
CHANGED
|
@@ -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();
|