@dashevo/wasm-dpp 0.24.0-dev.12 → 0.24.0-dev.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mocharc.yml +1 -1
- package/Cargo.toml +5 -2
- package/README.md +5 -1
- package/dist/index.js +1 -1
- package/dist/index.js.LICENSE.txt +9 -0
- package/dist/wasm/wasm_dpp.d.ts +3397 -1237
- package/karma.conf.js +5 -0
- package/lib/identifier/patchIdentifier.ts +5 -4
- package/lib/index.ts +1 -1
- package/lib/test/bootstrap.js +5 -0
- package/lib/test/fixtures/getDataContractFixture.js +267 -0
- package/lib/test/fixtures/getDocumentsFixture.js +43 -0
- package/lib/test/mocks/createStateRepositoryMock.js +64 -0
- package/lib/test/mocks/getBlsAdapterMock.js +51 -0
- package/package.json +11 -8
- package/src/bls_adapter.rs +17 -1
- package/src/buffer.rs +3 -0
- package/src/dash_platform_protocol.rs +107 -10
- package/src/data_contract/data_contract.rs +59 -10
- package/src/data_contract/data_contract_facade.rs +128 -0
- package/src/data_contract/errors/invalid_data_contract.rs +16 -16
- package/src/data_contract/errors/invalid_document_type.rs +8 -8
- package/src/data_contract/errors/mod.rs +10 -16
- package/src/data_contract/index.rs +56 -1
- package/src/data_contract/mod.rs +4 -0
- 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 +41 -10
- package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +35 -4
- package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +1 -1
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +20 -7
- package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +47 -11
- package/src/data_contract_factory/data_contract_factory.rs +19 -17
- package/src/data_trigger/data_trigger_execution_context.rs +95 -0
- package/src/data_trigger/data_trigger_execution_result.rs +48 -0
- package/src/data_trigger/execute_data_triggers_factory.rs +60 -0
- package/src/data_trigger/get_data_triggers_factory.rs +65 -0
- package/src/data_trigger/mod.rs +121 -0
- package/src/document/document_facade.rs +125 -0
- package/src/document/errors/invalid_document_error.rs +10 -9
- package/src/document/errors/invalid_initial_revision_error.rs +1 -1
- package/src/document/errors/mismatch_owners_ids_error.rs +14 -4
- package/src/document/errors/mod.rs +17 -13
- package/src/document/errors/no_documents_supplied_error.rs +4 -4
- package/src/document/factory.rs +257 -0
- package/src/document/fetch_and_validate_data_contract.rs +77 -0
- package/src/document/generate_document_id.rs +17 -0
- package/src/document/mod.rs +311 -37
- package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +22 -0
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +253 -1
- package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +60 -1
- package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +263 -0
- package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +302 -3
- package/src/document/state_transition/document_batch_transition/mod.rs +378 -0
- package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_id.rs +40 -0
- package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_indices.rs +50 -0
- package/src/document/state_transition/document_batch_transition/validation/basic/mod.rs +8 -0
- package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +34 -0
- package/src/document/state_transition/document_batch_transition/validation/basic/validate_partial_compound_indices.rs +39 -0
- package/src/document/state_transition/document_batch_transition/validation/mod.rs +2 -0
- package/src/document/state_transition/document_batch_transition/validation/state/fetch_documents.rs +43 -0
- package/src/document/state_transition/document_batch_transition/validation/state/mod.rs +3 -0
- package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +27 -0
- package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_uniqueness_by_indices.rs +47 -0
- package/src/document/validator.rs +52 -0
- package/src/errors/compatible_protocol_version_is_not_defined_error.rs +24 -0
- 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_type_error.rs +15 -1
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +16 -2
- 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 +6 -2
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +5 -2
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +3 -3
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +2 -2
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +29 -0
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +4 -3
- 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/missing_public_key_error.rs +4 -3
- package/src/errors/consensus/basic/identity/mod.rs +2 -0
- package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
- package/src/errors/consensus/basic/json_schema_error.rs +8 -2
- package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +9 -9
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +4 -4
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +35 -0
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +34 -0
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +10 -7
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +2 -3
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +7 -3
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -3
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +7 -4
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +2 -1
- package/src/errors/consensus/state/identity/mod.rs +4 -0
- package/src/errors/consensus_error.rs +218 -268
- package/src/errors/data_contract_not_present_error.rs +23 -0
- package/src/errors/dpp_error.rs +17 -0
- package/src/errors/from.rs +22 -0
- package/src/errors/js_conversion.rs +52 -5
- package/src/errors/mod.rs +6 -0
- package/src/errors/protocol_error.rs +14 -3
- package/src/identifier/errors.rs +30 -0
- package/src/identifier/mod.rs +95 -11
- package/src/identity/errors/asset_lock_output_not_found_error.rs +11 -0
- package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +20 -0
- package/src/identity/errors/invalid_identity_error.rs +32 -0
- package/src/identity/errors/mod.rs +9 -0
- package/src/identity/errors/unknown_asset_lock_proof_type_error.rs +26 -0
- package/src/identity/factory_utils.rs +87 -0
- package/src/identity/identity_facade.rs +194 -20
- package/src/identity/identity_factory.rs +209 -0
- package/src/identity/identity_public_key/mod.rs +51 -40
- package/src/identity/mod.rs +31 -17
- package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +132 -0
- package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +72 -0
- package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +4 -0
- package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +177 -0
- package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +72 -0
- package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +4 -0
- package/src/identity/state_transition/asset_lock_proof/mod.rs +269 -0
- package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +26 -0
- package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +337 -0
- package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +153 -0
- package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +37 -0
- package/src/identity/state_transition/identity_create_transition/mod.rs +8 -0
- package/src/identity/state_transition/identity_create_transition/to_object.rs +45 -0
- package/src/identity/state_transition/identity_public_key_transitions.rs +207 -0
- package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +31 -0
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +278 -0
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +113 -0
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +37 -0
- package/src/identity/state_transition/identity_topup_transition/mod.rs +8 -0
- package/src/identity/state_transition/identity_topup_transition/to_object.rs +42 -0
- package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +24 -0
- package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +55 -0
- package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +448 -0
- package/src/identity/state_transition/identity_update_transition/identity_update_transition_basic_validator.rs +94 -0
- package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +53 -0
- package/src/identity/state_transition/identity_update_transition/mod.rs +9 -0
- package/src/identity/state_transition/identity_update_transition/to_object.rs +66 -0
- package/src/identity/state_transition/mod.rs +12 -0
- package/src/identity/state_transition/validate_public_key_signatures.rs +61 -0
- package/src/identity/validation/identity_validator.rs +50 -0
- package/src/identity/validation/mod.rs +2 -0
- package/src/identity/validation/public_keys_validator.rs +14 -13
- package/src/identity_public_key/public_keys_validator.rs +44 -0
- package/src/lib.rs +6 -0
- package/src/lodash.rs +7 -0
- package/src/metadata.rs +54 -10
- package/src/state_repository.rs +598 -101
- package/src/state_transition/conversion.rs +104 -0
- package/src/state_transition/errors/invalid_state_transition_error.rs +32 -0
- package/src/state_transition/errors/mod.rs +1 -0
- package/src/state_transition/mod.rs +46 -0
- package/src/state_transition/state_transition_facade.rs +263 -0
- package/src/state_transition/state_transition_factory.rs +216 -0
- package/src/state_transition/validation/mod.rs +1 -0
- package/src/state_transition/validation/validate_state_transition_key_signature.rs +62 -0
- package/src/utils.rs +210 -8
- package/src/validation/json_schema_validator.rs +41 -0
- package/src/validation/mod.rs +2 -0
- package/src/validation/validation_result.rs +29 -5
- package/src/version/mod.rs +2 -0
- package/src/version/protocol_version.rs +103 -0
- package/test/integration/dataContract/DataContractFacade.spec.js +46 -30
- package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +45 -127
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +91 -139
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +577 -503
- package/test/integration/document/Document.spec.js +55 -29
- package/test/integration/document/DocumentFacade.spec.js +51 -64
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +38 -16
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +341 -396
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +116 -218
- package/test/integration/document/validation/validateDocumentFactory.spec.js +123 -171
- package/test/integration/identity/IdentityFacade.spec.js +52 -27
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +185 -164
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +84 -114
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +120 -137
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +106 -91
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +50 -16
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +78 -86
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +74 -30
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +93 -147
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +65 -77
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +60 -23
- package/test/integration/identity/validation/validateIdentityFactory.spec.js +46 -114
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +9 -3
- package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +12 -8
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +95 -233
- package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +53 -0
- package/test/unit/Identifier.spec.js +36 -36
- package/test/unit/Metadata.spec.js +17 -3
- package/test/unit/dataContract/DataContract.spec.js +9 -4
- package/test/unit/dataContract/createDataContract.spec.js +0 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +3 -3
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +2 -2
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -3
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +25 -31
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +3 -3
- package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +2 -0
- package/test/unit/decodeProtocolEntityFactory.spec.js +2 -2
- package/test/unit/document/Document.spec.js +147 -155
- package/test/unit/document/DocumentFactory.spec.js +153 -153
- package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +59 -14
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +131 -62
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +144 -56
- package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +38 -8
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +11 -7
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +29 -18
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +38 -29
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +53 -91
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +357 -493
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +133 -72
- package/test/unit/identity/Identity.spec.js +26 -9
- package/test/unit/identity/IdentityFactory.spec.js +81 -89
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +73 -30
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +38 -38
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +34 -25
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +36 -16
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +85 -50
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +24 -6
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +44 -22
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +58 -103
- package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +63 -0
- package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +90 -0
- package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +18 -3
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +38 -11
- package/test/unit/stateTransition/StateTransitionFactory.spec.js +49 -101
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +23 -25
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +73 -46
- package/test/unit/version/validateProtocolVersionFactory.spec.js +45 -27
- package/wasm/package.json +5 -0
- package/wasm/wasm_dpp.d.ts +3397 -1237
- package/wasm/wasm_dpp.js +7158 -1384
- package/wasm/wasm_dpp_bg.js +1 -1
- package/wasm/wasm_dpp_bg.wasm +0 -0
- package/wasm/wasm_dpp_bg.wasm.d.ts +777 -389
- package/webpack.config.js +9 -0
- package/src/document/state_transition/document_batch_transition/document_transition/document_update_transition.rs +0 -22
- package/test/integration/stateTransition/calculateStateTransitionFeeFactory.spec.js +0 -135
- package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +0 -54
|
@@ -1,94 +1,90 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
|
|
5
|
-
|
|
6
|
-
const DataTrigger = require('@dashevo/dpp/lib/dataTrigger/DataTrigger');
|
|
7
|
-
const DataTriggerExecutionResult = require('@dashevo/dpp/lib/dataTrigger/DataTriggerExecutionResult');
|
|
8
|
-
const DataTriggerExecutionContext = require('@dashevo/dpp/lib/dataTrigger/DataTriggerExecutionContext');
|
|
1
|
+
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
2
|
+
const dpnsSystemIds = require('@dashevo/dpns-contract/lib/systemIds');
|
|
9
3
|
const getDpnsContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDpnsContractFixture');
|
|
10
4
|
const dpnsDocumentFixture = require('@dashevo/dpp/lib/test/fixtures/getDpnsDocumentFixture');
|
|
11
5
|
const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
|
|
12
6
|
const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture');
|
|
13
7
|
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
14
8
|
|
|
15
|
-
const
|
|
16
|
-
const dpnsDeleteDomainDataTrigger = require('@dashevo/dpp/lib/dataTrigger/dpnsTriggers/createDomainDataTrigger');
|
|
17
|
-
const dpnsUpdateDomainDataTrigger = require('@dashevo/dpp/lib/dataTrigger/dpnsTriggers/createDomainDataTrigger');
|
|
9
|
+
const IdentifierJs = require('@dashevo/dpp/lib/identifier/Identifier');
|
|
18
10
|
|
|
19
|
-
const
|
|
11
|
+
const { default: loadWasmDpp } = require('../../../../../../../dist');
|
|
20
12
|
|
|
21
|
-
|
|
13
|
+
let DataContract;
|
|
14
|
+
let DocumentTransition;
|
|
15
|
+
let DocumentCreateTransition;
|
|
16
|
+
let DataTriggerExecutionContext;
|
|
17
|
+
let Document;
|
|
18
|
+
let DataTriggerExecutionResult;
|
|
19
|
+
let StateTransitionExecutionContext;
|
|
20
|
+
let getAllDataTriggers;
|
|
22
21
|
|
|
23
22
|
describe('executeDataTriggersFactory', () => {
|
|
23
|
+
let childDocumentJs;
|
|
24
24
|
let childDocument;
|
|
25
25
|
let contractMock;
|
|
26
|
-
|
|
27
|
-
let dpnsTriggers;
|
|
28
|
-
|
|
29
|
-
let domainDocumentType;
|
|
30
|
-
|
|
31
|
-
let stateTransitionHeaderMock;
|
|
26
|
+
let stateTransitionExecutionContext;
|
|
32
27
|
let context;
|
|
33
28
|
let documentTransitions;
|
|
34
|
-
let dpnsCreateDomainDataTriggerMock;
|
|
35
|
-
let dpnsUpdateDomainDataTriggerMock;
|
|
36
|
-
let dpnsDeleteDomainDataTriggerMock;
|
|
37
|
-
let getDataTriggersMock;
|
|
38
29
|
|
|
39
30
|
let executeDataTriggers;
|
|
31
|
+
let dataContractJs;
|
|
40
32
|
let dataContract;
|
|
33
|
+
let stateRepositoryMock;
|
|
41
34
|
|
|
42
|
-
beforeEach(function beforeEach() {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
35
|
+
beforeEach(async function beforeEach() {
|
|
36
|
+
({
|
|
37
|
+
DataContract,
|
|
38
|
+
DocumentTransition,
|
|
39
|
+
DocumentCreateTransition,
|
|
40
|
+
DataTriggerExecutionContext,
|
|
41
|
+
Document,
|
|
42
|
+
DataTriggerExecutionResult,
|
|
43
|
+
StateTransitionExecutionContext,
|
|
44
|
+
executeDataTriggers,
|
|
45
|
+
getAllDataTriggers,
|
|
46
|
+
} = await loadWasmDpp());
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
dpnsDeleteDomainDataTrigger,
|
|
50
|
-
dpnsUpdateDomainDataTrigger,
|
|
51
|
-
];
|
|
52
|
-
|
|
53
|
-
contractMock = getDpnsContractFixture();
|
|
54
|
-
|
|
55
|
-
childDocument = dpnsDocumentFixture.getChildDocumentFixture();
|
|
48
|
+
dataContractJs = getDataContractFixture();
|
|
49
|
+
dataContract = new DataContract(dataContractJs.toObject());
|
|
56
50
|
|
|
57
|
-
|
|
58
|
-
dpnsUpdateDomainDataTriggerMock = { execute: this.sinonSandbox.stub() };
|
|
59
|
-
dpnsDeleteDomainDataTriggerMock = { execute: this.sinonSandbox.stub() };
|
|
51
|
+
contractMock = new DataContract(getDpnsContractFixture().toObject());
|
|
60
52
|
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
childDocumentJs = dpnsDocumentFixture.getChildDocumentFixture();
|
|
54
|
+
childDocument = new Document(childDocumentJs.toObject(),
|
|
55
|
+
dataContract.clone());
|
|
63
56
|
|
|
64
|
-
|
|
65
|
-
.execute.resolves(new DataTriggerExecutionResult());
|
|
57
|
+
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
66
58
|
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
contractMock.setId(dpnsSystemIds.contractId);
|
|
60
|
+
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
61
|
+
stateRepositoryMock.fetchDocuments.resolves([childDocument]);
|
|
69
62
|
|
|
70
|
-
|
|
63
|
+
stateTransitionExecutionContext = new StateTransitionExecutionContext();
|
|
64
|
+
stateTransitionExecutionContext.disableDryRun();
|
|
71
65
|
|
|
72
66
|
context = new DataTriggerExecutionContext(
|
|
73
|
-
|
|
67
|
+
stateRepositoryMock,
|
|
68
|
+
childDocument.getOwnerId(),
|
|
69
|
+
contractMock.clone(),
|
|
70
|
+
stateTransitionExecutionContext,
|
|
74
71
|
);
|
|
75
72
|
|
|
76
|
-
|
|
77
|
-
create: [
|
|
73
|
+
const documentTransitionsJs = getDocumentTransitionsFixture({
|
|
74
|
+
create: [childDocumentJs],
|
|
78
75
|
});
|
|
79
76
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
executeDataTriggers = executeDataTriggersFactory(getDataTriggersMock);
|
|
77
|
+
documentTransitions = documentTransitionsJs.map((transition) => {
|
|
78
|
+
const transitionCreate = new DocumentCreateTransition(
|
|
79
|
+
transition.toObject(), dataContract.clone(),
|
|
80
|
+
);
|
|
81
|
+
return DocumentTransition.fromTransitionCreate(transitionCreate);
|
|
82
|
+
});
|
|
87
83
|
});
|
|
88
84
|
|
|
89
|
-
it('should return an array of DataTriggerExecutionResult', async () => {
|
|
85
|
+
it('should return an array of DataTriggerExecutionResult - Rust', async () => {
|
|
90
86
|
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
91
|
-
documentTransitions, context,
|
|
87
|
+
documentTransitions, context, getAllDataTriggers(),
|
|
92
88
|
);
|
|
93
89
|
|
|
94
90
|
expect(dataTriggerExecutionResults).to.have.a.lengthOf(1);
|
|
@@ -100,195 +96,97 @@ describe('executeDataTriggersFactory', () => {
|
|
|
100
96
|
expect(result.isOk()).to.be.true();
|
|
101
97
|
});
|
|
102
98
|
|
|
103
|
-
it('should
|
|
104
|
-
+ ' the same document and action in the contract', async () => {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
99
|
+
it('should return multiple data triggers if there is more than one data trigger for'
|
|
100
|
+
+ ' the same document and action in the contract - Rust', async () => {
|
|
101
|
+
const dataTriggersList = getAllDataTriggers();
|
|
102
|
+
const dataTriggerListWithDuplicates = [
|
|
103
|
+
dataTriggersList[0],
|
|
104
|
+
dataTriggersList[0],
|
|
105
|
+
dataTriggersList[0],
|
|
106
|
+
];
|
|
110
107
|
|
|
111
108
|
const expectedTriggersCount = 3;
|
|
112
|
-
expect(dpnsTriggers.length).to.equal(expectedTriggersCount);
|
|
113
|
-
|
|
114
109
|
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
115
|
-
documentTransitions, context,
|
|
110
|
+
documentTransitions, context, dataTriggerListWithDuplicates,
|
|
116
111
|
);
|
|
117
112
|
|
|
118
113
|
expect(dataTriggerExecutionResults).to.have.a.lengthOf(expectedTriggersCount);
|
|
119
|
-
|
|
120
|
-
dataTriggerExecutionResults.forEach((dataTriggerExecutionResult) => {
|
|
121
|
-
expect(dataTriggerExecutionResult.getErrors()).to.have.a.lengthOf(0);
|
|
122
|
-
});
|
|
123
114
|
});
|
|
124
115
|
|
|
125
|
-
it('should return a result for each passed document with success or error', async
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
documentTransitions = getDocumentTransitionsFixture({
|
|
130
|
-
create: [doc1, doc1],
|
|
131
|
-
replace: [doc2],
|
|
132
|
-
});
|
|
116
|
+
it('should return a result for each passed document with success or error - Rust', async () => {
|
|
117
|
+
const documentTransition = documentTransitions[0];
|
|
118
|
+
const rawDocumentTransition = documentTransition.toObject();
|
|
119
|
+
rawDocumentTransition.normalizedLabel = 'a'.repeat(257);
|
|
133
120
|
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
executionResultWithErrors.addError(new Error('Trigger error'));
|
|
138
|
-
|
|
139
|
-
const passingTriggerMockFunction = this.sinonSandbox.stub()
|
|
140
|
-
.resolves(passingExecutionResult);
|
|
141
|
-
const throwingTriggerMockFunction = this.sinonSandbox.stub()
|
|
142
|
-
.resolves(executionResultWithErrors);
|
|
143
|
-
|
|
144
|
-
const passingDataTriggerMock = new DataTrigger(
|
|
145
|
-
contractMock.getId(),
|
|
146
|
-
doc1.getType(),
|
|
147
|
-
AbstractDocumentTransition.ACTIONS.CREATE,
|
|
148
|
-
passingTriggerMockFunction,
|
|
121
|
+
const invalidDocumentCreateTransition = new DocumentCreateTransition(
|
|
122
|
+
rawDocumentTransition, dataContract.clone(),
|
|
149
123
|
);
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
contractMock.getId(),
|
|
153
|
-
doc2.getType(),
|
|
154
|
-
AbstractDocumentTransition.ACTIONS.REPLACE,
|
|
155
|
-
throwingTriggerMockFunction,
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
getDataTriggersMock
|
|
159
|
-
.withArgs(contractMock.getId(), doc1.getType(), AbstractDocumentTransition.ACTIONS.CREATE)
|
|
160
|
-
.returns([passingDataTriggerMock]);
|
|
161
|
-
|
|
162
|
-
getDataTriggersMock
|
|
163
|
-
.withArgs(contractMock.getId(), doc2.getType(), AbstractDocumentTransition.ACTIONS.REPLACE)
|
|
164
|
-
.returns([throwingDataTriggerMock]);
|
|
165
|
-
|
|
166
|
-
context = new DataTriggerExecutionContext(
|
|
167
|
-
null, generateRandomIdentifier(), contractMock, stateTransitionHeaderMock,
|
|
124
|
+
const invalidDocumentTransition = DocumentTransition.fromTransitionCreate(
|
|
125
|
+
invalidDocumentCreateTransition,
|
|
168
126
|
);
|
|
169
127
|
|
|
170
128
|
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
171
|
-
|
|
129
|
+
[documentTransition, invalidDocumentTransition], context, getAllDataTriggers(),
|
|
172
130
|
);
|
|
173
131
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
expect(documentTransitions.length).to.equal(expectedResultsCount);
|
|
177
|
-
expect(dataTriggerExecutionResults.length).to.equal(expectedResultsCount);
|
|
178
|
-
|
|
179
|
-
const passingResults = dataTriggerExecutionResults.filter((result) => result.isOk());
|
|
180
|
-
const failingResults = dataTriggerExecutionResults.filter((result) => !result.isOk());
|
|
132
|
+
expect(dataTriggerExecutionResults).to.have.a.lengthOf(2);
|
|
181
133
|
|
|
182
|
-
|
|
183
|
-
expect(
|
|
184
|
-
|
|
185
|
-
expect(failingResults[0].getErrors()).to.have.a.lengthOf(1);
|
|
186
|
-
expect(failingResults[0].getErrors()[0].message).to
|
|
187
|
-
.equal('Trigger error');
|
|
188
|
-
|
|
189
|
-
expect(passingTriggerMockFunction.callCount).to.equal(2);
|
|
190
|
-
expect(throwingTriggerMockFunction.callCount).to.equal(1);
|
|
134
|
+
const [validResult, invalidResult] = dataTriggerExecutionResults;
|
|
135
|
+
expect(validResult.isOk()).to.be.true();
|
|
136
|
+
expect(invalidResult.isOk()).to.be.false();
|
|
191
137
|
});
|
|
192
138
|
|
|
193
|
-
it("should not call any triggers if documents have no triggers associated with it's type or action", async () => {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
.returns([])
|
|
201
|
-
.withArgs(
|
|
202
|
-
contractMock.getId(),
|
|
203
|
-
domainDocumentType,
|
|
204
|
-
AbstractDocumentTransition.ACTIONS.DELETE,
|
|
205
|
-
)
|
|
206
|
-
.returns([dpnsDeleteDomainDataTriggerMock])
|
|
207
|
-
.withArgs(
|
|
208
|
-
contractMock.getId(),
|
|
209
|
-
domainDocumentType,
|
|
210
|
-
AbstractDocumentTransition.ACTIONS.REPLACE,
|
|
211
|
-
)
|
|
212
|
-
.returns([dpnsUpdateDomainDataTriggerMock]);
|
|
213
|
-
|
|
214
|
-
await executeDataTriggers(documentTransitions, context);
|
|
215
|
-
|
|
216
|
-
expect(dpnsDeleteDomainDataTriggerMock.execute).not.to.be.called();
|
|
217
|
-
expect(dpnsUpdateDomainDataTriggerMock.execute).not.to.be.called();
|
|
139
|
+
it("should not call any triggers if documents have no triggers associated with it's type or action - Rust", async () => {
|
|
140
|
+
const dataTriggers = [getAllDataTriggers()[1]];
|
|
141
|
+
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
142
|
+
documentTransitions, context, dataTriggers,
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
expect(dataTriggerExecutionResults).to.have.a.lengthOf(0);
|
|
218
146
|
});
|
|
219
147
|
|
|
220
|
-
it("should call only one trigger if there's one document with a trigger and one without", async () => {
|
|
148
|
+
it("should call only one trigger if there's one document with a trigger and one without - Rust", async () => {
|
|
221
149
|
const dataContractId = getDataContractFixture().getId();
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
150
|
+
childDocumentJs.dataContractId = dataContractId;
|
|
151
|
+
childDocumentJs.dataContract.id = dataContractId;
|
|
152
|
+
childDocumentJs.ownerId = IdentifierJs.from(
|
|
225
153
|
getDocumentsFixture.ownerId,
|
|
226
154
|
);
|
|
227
155
|
|
|
228
|
-
|
|
229
|
-
create: [
|
|
156
|
+
const documentTransitionsJs = getDocumentTransitionsFixture({
|
|
157
|
+
create: [childDocumentJs].concat(getDocumentsFixture(dataContractJs)),
|
|
230
158
|
});
|
|
231
159
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
AbstractDocumentTransition.ACTIONS.DELETE,
|
|
245
|
-
)
|
|
246
|
-
.returns([dpnsDeleteDomainDataTriggerMock])
|
|
247
|
-
.withArgs(
|
|
248
|
-
contractMock.getId(),
|
|
249
|
-
domainDocumentType,
|
|
250
|
-
AbstractDocumentTransition.ACTIONS.REPLACE,
|
|
251
|
-
)
|
|
252
|
-
.returns([dpnsUpdateDomainDataTriggerMock]);
|
|
253
|
-
|
|
254
|
-
await executeDataTriggers(documentTransitions, context);
|
|
255
|
-
|
|
256
|
-
expect(dpnsCreateDomainDataTriggerMock.execute).to.be.calledOnce();
|
|
257
|
-
expect(dpnsDeleteDomainDataTriggerMock.execute).not.to.be.called();
|
|
258
|
-
expect(dpnsUpdateDomainDataTriggerMock.execute).not.to.be.called();
|
|
160
|
+
documentTransitions = documentTransitionsJs.map((transition) => {
|
|
161
|
+
const transitionCreate = new DocumentCreateTransition(
|
|
162
|
+
transition.toObject(), dataContract.clone(),
|
|
163
|
+
);
|
|
164
|
+
return DocumentTransition.fromTransitionCreate(transitionCreate);
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
168
|
+
documentTransitions, context, getAllDataTriggers(),
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
expect(dataTriggerExecutionResults).to.have.a.lengthOf(1);
|
|
259
172
|
});
|
|
260
173
|
|
|
261
|
-
it("should not call any triggers if there's no triggers in the contract", async () => {
|
|
262
|
-
|
|
263
|
-
create: getDocumentsFixture(
|
|
174
|
+
it("should not call any triggers if there's no triggers in the contract - Rust", async () => {
|
|
175
|
+
const documentTransitionsJs = getDocumentTransitionsFixture({
|
|
176
|
+
create: getDocumentsFixture(dataContractJs),
|
|
264
177
|
});
|
|
265
178
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
AbstractDocumentTransition.ACTIONS.DELETE,
|
|
279
|
-
)
|
|
280
|
-
.returns([dpnsDeleteDomainDataTriggerMock])
|
|
281
|
-
.withArgs(
|
|
282
|
-
contractMock.getId(),
|
|
283
|
-
domainDocumentType,
|
|
284
|
-
AbstractDocumentTransition.ACTIONS.REPLACE,
|
|
285
|
-
)
|
|
286
|
-
.returns([dpnsUpdateDomainDataTriggerMock]);
|
|
287
|
-
|
|
288
|
-
await executeDataTriggers(documentTransitions, context);
|
|
289
|
-
|
|
290
|
-
expect(dpnsCreateDomainDataTriggerMock.execute).not.to.be.called();
|
|
291
|
-
expect(dpnsDeleteDomainDataTriggerMock.execute).not.to.be.called();
|
|
292
|
-
expect(dpnsUpdateDomainDataTriggerMock.execute).not.to.be.called();
|
|
179
|
+
documentTransitions = documentTransitionsJs.map((transition) => {
|
|
180
|
+
const transitionCreate = new DocumentCreateTransition(
|
|
181
|
+
transition.toObject(), dataContract.clone(),
|
|
182
|
+
);
|
|
183
|
+
return DocumentTransition.fromTransitionCreate(transitionCreate);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
187
|
+
documentTransitions, context, getAllDataTriggers(),
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
expect(dataTriggerExecutionResults).to.have.a.lengthOf(0);
|
|
293
191
|
});
|
|
294
192
|
});
|