@dashevo/wasm-dpp 0.24.0-dev.30 → 0.25.0-dev.1
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 +722 -571
- package/dist/wasm/wasm_dpp.js +169 -106
- package/dist/wasm/wasm_dpp_bg.js +1 -1
- package/lib/wasm/wasm_dpp.d.ts +722 -571
- package/package.json +3 -3
- package/src/data_contract/data_contract.rs +1 -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 +2 -12
- 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 +2 -14
- 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 +4 -1
- 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 +13 -17
- 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 +1 -1
- 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 +8 -18
- 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 +1 -12
- 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 +5 -18
- 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 +16 -15
- package/src/state_transition/validation/state_transition_fee_validator.rs +3 -1
- package/src/state_transition/validation/validate_state_transition_identity_signature.rs +3 -1
- 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/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 +20 -7
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -7
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +4 -3
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -3
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +3 -2
- 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/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 +10 -4
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +3 -1
- package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +7 -3
|
@@ -21,6 +21,7 @@ describe('StateTransitionFacade', () => {
|
|
|
21
21
|
let dataContract;
|
|
22
22
|
let identityPublicKey;
|
|
23
23
|
let identity;
|
|
24
|
+
let executionContext;
|
|
24
25
|
|
|
25
26
|
let DashPlatformProtocol;
|
|
26
27
|
let DataContractFactory;
|
|
@@ -37,6 +38,7 @@ describe('StateTransitionFacade', () => {
|
|
|
37
38
|
let InvalidStateTransitionSignatureError;
|
|
38
39
|
let DataContractAlreadyPresentError;
|
|
39
40
|
let BalanceIsNotEnoughError;
|
|
41
|
+
let StateTransitionExecutionContext;
|
|
40
42
|
|
|
41
43
|
before(async () => {
|
|
42
44
|
({
|
|
@@ -55,6 +57,7 @@ describe('StateTransitionFacade', () => {
|
|
|
55
57
|
InvalidStateTransitionSignatureError,
|
|
56
58
|
DataContractAlreadyPresentError,
|
|
57
59
|
BalanceIsNotEnoughError,
|
|
60
|
+
StateTransitionExecutionContext,
|
|
58
61
|
} = await loadWasmDpp());
|
|
59
62
|
});
|
|
60
63
|
|
|
@@ -64,6 +67,8 @@ describe('StateTransitionFacade', () => {
|
|
|
64
67
|
const publicKey = privateKeyModel.toPublicKey().toBuffer();
|
|
65
68
|
const publicKeyId = 1;
|
|
66
69
|
|
|
70
|
+
executionContext = new StateTransitionExecutionContext();
|
|
71
|
+
|
|
67
72
|
identityPublicKey = new IdentityPublicKey({
|
|
68
73
|
id: publicKeyId,
|
|
69
74
|
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
@@ -148,7 +153,7 @@ describe('StateTransitionFacade', () => {
|
|
|
148
153
|
const rawStateTransition = dataContractCreateTransition.toObject();
|
|
149
154
|
rawStateTransition.protocolVersion = 100;
|
|
150
155
|
|
|
151
|
-
const result = await dpp.stateTransition.validate(rawStateTransition);
|
|
156
|
+
const result = await dpp.stateTransition.validate(rawStateTransition, executionContext);
|
|
152
157
|
|
|
153
158
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
154
159
|
expect(result.isValid()).to.be.false();
|
|
@@ -161,7 +166,7 @@ describe('StateTransitionFacade', () => {
|
|
|
161
166
|
const rawStateTransition = dataContractCreateTransition.toObject();
|
|
162
167
|
rawStateTransition.signature = Buffer.alloc(65).fill(1);
|
|
163
168
|
|
|
164
|
-
const result = await dpp.stateTransition.validate(rawStateTransition);
|
|
169
|
+
const result = await dpp.stateTransition.validate(rawStateTransition, executionContext);
|
|
165
170
|
|
|
166
171
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
167
172
|
expect(result.isValid()).to.be.false();
|
|
@@ -173,7 +178,9 @@ describe('StateTransitionFacade', () => {
|
|
|
173
178
|
it('should return invalid result if not enough balance to pay fee for State Transition', async () => {
|
|
174
179
|
identity.setBalance(0);
|
|
175
180
|
stateRepositoryMock.fetchIdentityBalance.resolves(0);
|
|
176
|
-
const result = await dpp.stateTransition.validate(
|
|
181
|
+
const result = await dpp.stateTransition.validate(
|
|
182
|
+
dataContractCreateTransition, executionContext,
|
|
183
|
+
);
|
|
177
184
|
|
|
178
185
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
179
186
|
expect(result.isValid()).to.be.false();
|
|
@@ -185,7 +192,9 @@ describe('StateTransitionFacade', () => {
|
|
|
185
192
|
it('should return invalid result if State Transition is invalid against state', async () => {
|
|
186
193
|
stateRepositoryMock.fetchDataContract.resolves(dataContract);
|
|
187
194
|
|
|
188
|
-
const result = await dpp.stateTransition.validate(
|
|
195
|
+
const result = await dpp.stateTransition.validate(
|
|
196
|
+
dataContractCreateTransition, executionContext,
|
|
197
|
+
);
|
|
189
198
|
|
|
190
199
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
191
200
|
expect(result.isValid()).to.be.false();
|
|
@@ -197,6 +206,7 @@ describe('StateTransitionFacade', () => {
|
|
|
197
206
|
it('should validate DataContractCreateTransition', async () => {
|
|
198
207
|
const result = await dpp.stateTransition.validate(
|
|
199
208
|
dataContractCreateTransition,
|
|
209
|
+
executionContext,
|
|
200
210
|
);
|
|
201
211
|
|
|
202
212
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -210,6 +220,7 @@ describe('StateTransitionFacade', () => {
|
|
|
210
220
|
stateRepositoryMock.fetchDataContract.resolves(dataContract);
|
|
211
221
|
const result = await dpp.stateTransition.validate(
|
|
212
222
|
documentsBatchTransition,
|
|
223
|
+
executionContext,
|
|
213
224
|
);
|
|
214
225
|
|
|
215
226
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -220,7 +231,7 @@ describe('StateTransitionFacade', () => {
|
|
|
220
231
|
describe('validateBasic', () => {
|
|
221
232
|
it('should validate State Transition', async () => {
|
|
222
233
|
const result = await dpp.stateTransition.validateBasic(
|
|
223
|
-
dataContractCreateTransition.toObject(),
|
|
234
|
+
dataContractCreateTransition.toObject(), executionContext,
|
|
224
235
|
);
|
|
225
236
|
|
|
226
237
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -231,7 +242,7 @@ describe('StateTransitionFacade', () => {
|
|
|
231
242
|
describe('validateSignature', () => {
|
|
232
243
|
it('should validate identity signed State Transition', async () => {
|
|
233
244
|
const result = await dpp.stateTransition.validateSignature(
|
|
234
|
-
dataContractCreateTransition,
|
|
245
|
+
dataContractCreateTransition, executionContext,
|
|
235
246
|
);
|
|
236
247
|
|
|
237
248
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -254,7 +265,7 @@ describe('StateTransitionFacade', () => {
|
|
|
254
265
|
);
|
|
255
266
|
|
|
256
267
|
const result = await dpp.stateTransition.validateSignature(
|
|
257
|
-
identityCreateTransition,
|
|
268
|
+
identityCreateTransition, executionContext,
|
|
258
269
|
);
|
|
259
270
|
|
|
260
271
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -266,6 +277,7 @@ describe('StateTransitionFacade', () => {
|
|
|
266
277
|
it('should validate State Transition', async () => {
|
|
267
278
|
const result = await dpp.stateTransition.validateFee(
|
|
268
279
|
dataContractCreateTransition,
|
|
280
|
+
executionContext,
|
|
269
281
|
);
|
|
270
282
|
|
|
271
283
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -277,6 +289,7 @@ describe('StateTransitionFacade', () => {
|
|
|
277
289
|
it('should validate State Transition', async () => {
|
|
278
290
|
const result = await dpp.stateTransition.validateState(
|
|
279
291
|
dataContractCreateTransition,
|
|
292
|
+
executionContext,
|
|
280
293
|
);
|
|
281
294
|
|
|
282
295
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -8,10 +8,8 @@ describe('applyDataContractCreateTransitionFactory', () => {
|
|
|
8
8
|
let stateTransition;
|
|
9
9
|
let dataContract;
|
|
10
10
|
let factory;
|
|
11
|
-
let executionContext;
|
|
12
11
|
let DataContractCreateTransition;
|
|
13
12
|
let ApplyDataContractCreateTransition;
|
|
14
|
-
let StateTransitionExecutionContext;
|
|
15
13
|
|
|
16
14
|
let dataContractStored;
|
|
17
15
|
|
|
@@ -19,7 +17,6 @@ describe('applyDataContractCreateTransitionFactory', () => {
|
|
|
19
17
|
({
|
|
20
18
|
DataContractCreateTransition,
|
|
21
19
|
ApplyDataContractCreateTransition,
|
|
22
|
-
StateTransitionExecutionContext,
|
|
23
20
|
} = await loadWasmDpp());
|
|
24
21
|
});
|
|
25
22
|
|
|
@@ -32,10 +29,6 @@ describe('applyDataContractCreateTransitionFactory', () => {
|
|
|
32
29
|
entropy: Buffer.alloc(32),
|
|
33
30
|
});
|
|
34
31
|
|
|
35
|
-
executionContext = new StateTransitionExecutionContext();
|
|
36
|
-
|
|
37
|
-
stateTransition.setExecutionContext(executionContext);
|
|
38
|
-
|
|
39
32
|
const stateRepositoryLike = {
|
|
40
33
|
createDataContract: async () => {
|
|
41
34
|
dataContractStored = true;
|
|
@@ -37,8 +37,6 @@ describe('validateDataContractCreateTransitionStateFactory', () => {
|
|
|
37
37
|
|
|
38
38
|
executionContext = new StateTransitionExecutionContext();
|
|
39
39
|
|
|
40
|
-
stateTransition.setExecutionContext(executionContext);
|
|
41
|
-
|
|
42
40
|
dataContractFetched = false;
|
|
43
41
|
|
|
44
42
|
const stateRepositoryLike = {
|
|
@@ -47,7 +45,9 @@ describe('validateDataContractCreateTransitionStateFactory', () => {
|
|
|
47
45
|
},
|
|
48
46
|
};
|
|
49
47
|
|
|
50
|
-
factory = (t) => validateDataContractCreateTransitionState(
|
|
48
|
+
factory = (t) => validateDataContractCreateTransitionState(
|
|
49
|
+
stateRepositoryLike, t, executionContext,
|
|
50
|
+
);
|
|
51
51
|
});
|
|
52
52
|
|
|
53
53
|
it('should return invalid result if Data Contract is already exist', async () => {
|
|
@@ -63,6 +63,7 @@ describe('validateDataContractCreateTransitionStateFactory', () => {
|
|
|
63
63
|
const result = await validateDataContractCreateTransitionState(
|
|
64
64
|
stateRepositoryLikeWithContract,
|
|
65
65
|
stateTransition,
|
|
66
|
+
executionContext,
|
|
66
67
|
);
|
|
67
68
|
const [error] = result.getErrors();
|
|
68
69
|
|
|
@@ -31,8 +31,6 @@ describe('applyDataContractUpdateTransitionFactory', () => {
|
|
|
31
31
|
|
|
32
32
|
executionContext = new StateTransitionExecutionContext();
|
|
33
33
|
|
|
34
|
-
stateTransition.setExecutionContext(executionContext);
|
|
35
|
-
|
|
36
34
|
const stateRepositoryLike = {
|
|
37
35
|
updateDataContract: async () => {
|
|
38
36
|
dataContractStored = true;
|
|
@@ -45,7 +43,7 @@ describe('applyDataContractUpdateTransitionFactory', () => {
|
|
|
45
43
|
});
|
|
46
44
|
|
|
47
45
|
it('should store a data contract from state transition in the repository', async () => {
|
|
48
|
-
await factory.applyDataContractUpdateTransition(stateTransition);
|
|
46
|
+
await factory.applyDataContractUpdateTransition(stateTransition, executionContext);
|
|
49
47
|
expect(dataContractStored).to.be.true();
|
|
50
48
|
});
|
|
51
49
|
});
|
|
@@ -44,8 +44,6 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
44
44
|
|
|
45
45
|
executionContext = new StateTransitionExecutionContext();
|
|
46
46
|
|
|
47
|
-
stateTransition.setExecutionContext(executionContext);
|
|
48
|
-
|
|
49
47
|
const validator = new DataContractValidator();
|
|
50
48
|
const dataContractFactory = new DataContractFactory(protocolVersion.latestVersion, validator);
|
|
51
49
|
const wasmDataContract = await dataContractFactory.createFromBuffer(dataContract.toBuffer());
|
|
@@ -57,6 +55,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
57
55
|
validateTransitionWithExistingContract = (t) => validateDataContractUpdateTransitionState(
|
|
58
56
|
stateRepositoryLike,
|
|
59
57
|
t,
|
|
58
|
+
executionContext,
|
|
60
59
|
);
|
|
61
60
|
});
|
|
62
61
|
|
|
@@ -68,6 +67,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
68
67
|
const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState(
|
|
69
68
|
stateRepositoryLikeNoDataContract,
|
|
70
69
|
t,
|
|
70
|
+
executionContext,
|
|
71
71
|
);
|
|
72
72
|
|
|
73
73
|
const result = await validateTransitionWithNoContract(stateTransition);
|
|
@@ -114,6 +114,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
114
114
|
const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState(
|
|
115
115
|
stateRepositoryLikeNoDataContract,
|
|
116
116
|
t,
|
|
117
|
+
executionContext,
|
|
117
118
|
);
|
|
118
119
|
|
|
119
120
|
executionContext.enableDryRun();
|
|
@@ -104,7 +104,6 @@ describe('applyDocumentsBatchTransitionFactory', () => {
|
|
|
104
104
|
executionContext = new StateTransitionExecutionContext();
|
|
105
105
|
|
|
106
106
|
stateTransitionJs.setExecutionContext(executionContextJs);
|
|
107
|
-
stateTransition.setExecutionContext(executionContext);
|
|
108
107
|
|
|
109
108
|
stateRepositoryMockJs = createStateRepositoryMock(this.sinonSandbox);
|
|
110
109
|
stateRepositoryMockJs.fetchDataContract.resolves(dataContractJs);
|
|
@@ -163,7 +162,7 @@ describe('applyDocumentsBatchTransitionFactory', () => {
|
|
|
163
162
|
});
|
|
164
163
|
|
|
165
164
|
it('should call `store`, `replace` and `remove` functions for specific type of transitions - Rust', async () => {
|
|
166
|
-
await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition);
|
|
165
|
+
await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition, executionContext);
|
|
167
166
|
expect(stateRepositoryMock.createDocument).to.have.been.calledOnce();
|
|
168
167
|
|
|
169
168
|
const [fetchContractId, fetchDocumentType] = stateRepositoryMock
|
|
@@ -203,7 +202,7 @@ describe('applyDocumentsBatchTransitionFactory', () => {
|
|
|
203
202
|
const replaceDocumentTransition = documentTransitionsJs[1];
|
|
204
203
|
|
|
205
204
|
try {
|
|
206
|
-
await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition);
|
|
205
|
+
await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition, executionContext);
|
|
207
206
|
expect.fail('Error was not thrown');
|
|
208
207
|
} catch (e) {
|
|
209
208
|
expect(e).to.be.an.instanceOf(DocumentNotProvidedError);
|
|
@@ -227,11 +226,11 @@ describe('applyDocumentsBatchTransitionFactory', () => {
|
|
|
227
226
|
transitions: documentTransitionsJs.map((t) => t.toObject()),
|
|
228
227
|
}, [dataContract]);
|
|
229
228
|
|
|
230
|
-
|
|
229
|
+
executionContext.enableDryRun();
|
|
231
230
|
|
|
232
|
-
await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition);
|
|
231
|
+
await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition, executionContext);
|
|
233
232
|
|
|
234
|
-
|
|
233
|
+
executionContext.disableDryRun();
|
|
235
234
|
|
|
236
235
|
const [documentTransition] = stateTransition.getTransitions();
|
|
237
236
|
|
|
@@ -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);
|
|
@@ -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
|
|
|
@@ -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();
|
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 () => {
|