@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,54 +1,93 @@
|
|
|
1
|
-
const verifyDocumentsUniquenessByIndicesFactory = require('@dashevo/dpp/lib/document/stateTransition/DocumentsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory');
|
|
2
|
-
|
|
3
1
|
const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
|
|
4
2
|
const getContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
5
3
|
const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture');
|
|
6
4
|
|
|
7
|
-
const { expectValidationError } = require('@dashevo/dpp/lib/test/expect/expectError');
|
|
8
5
|
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
9
6
|
|
|
10
|
-
const
|
|
7
|
+
const sinon = require('sinon');
|
|
8
|
+
const { expectValidationError } = require('../../../../../../../lib/test/expect/expectError');
|
|
9
|
+
const { default: loadWasmDpp } = require('../../../../../../../dist');
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
let DataContract;
|
|
12
|
+
let Document;
|
|
13
|
+
let ValidationResult;
|
|
14
|
+
let DuplicateUniqueIndexError;
|
|
15
|
+
let validateDocumentsUniquenessByIndices;
|
|
16
|
+
let DocumentCreateTransition;
|
|
17
|
+
let DocumentTransition;
|
|
18
|
+
let Identifier;
|
|
19
|
+
let StateTransitionExecutionContext;
|
|
14
20
|
|
|
15
21
|
describe('validateDocumentsUniquenessByIndices', () => {
|
|
22
|
+
let stateRepositoryMockJs;
|
|
16
23
|
let stateRepositoryMock;
|
|
17
|
-
let
|
|
18
|
-
let
|
|
24
|
+
let documentsJs;
|
|
25
|
+
let documentTransitionsJs;
|
|
19
26
|
let documentTransitions;
|
|
27
|
+
let dataContractJs;
|
|
20
28
|
let dataContract;
|
|
29
|
+
let ownerIdJs;
|
|
21
30
|
let ownerId;
|
|
22
31
|
let executionContext;
|
|
23
32
|
|
|
24
|
-
beforeEach(function beforeEach() {
|
|
25
|
-
({
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
beforeEach(async function beforeEach() {
|
|
34
|
+
({
|
|
35
|
+
Document,
|
|
36
|
+
DataContract,
|
|
37
|
+
Identifier,
|
|
38
|
+
DocumentCreateTransition,
|
|
39
|
+
DocumentTransition,
|
|
40
|
+
ValidationResult,
|
|
41
|
+
StateTransitionExecutionContext,
|
|
42
|
+
validateDocumentsUniquenessByIndices,
|
|
43
|
+
|
|
44
|
+
DuplicateUniqueIndexError,
|
|
45
|
+
} = await loadWasmDpp());
|
|
46
|
+
|
|
47
|
+
({ ownerId: ownerIdJs } = getDocumentsFixture);
|
|
48
|
+
ownerId = Identifier.from(ownerIdJs.toBuffer());
|
|
49
|
+
|
|
50
|
+
dataContractJs = getContractFixture();
|
|
51
|
+
dataContract = new DataContract(dataContractJs.toObject());
|
|
52
|
+
|
|
53
|
+
documentsJs = getDocumentsFixture(dataContractJs);
|
|
54
|
+
documentTransitionsJs = getDocumentTransitionsFixture({
|
|
55
|
+
create: documentsJs,
|
|
30
56
|
});
|
|
31
|
-
|
|
57
|
+
|
|
58
|
+
documentTransitions = documentTransitionsJs.map(
|
|
59
|
+
(transition) => DocumentTransition.fromTransitionCreate(
|
|
60
|
+
new DocumentCreateTransition(
|
|
61
|
+
transition.toObject(), dataContract.clone(),
|
|
62
|
+
),
|
|
63
|
+
),
|
|
64
|
+
);
|
|
32
65
|
|
|
33
66
|
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
34
67
|
stateRepositoryMock.fetchDocuments.resolves([]);
|
|
35
68
|
|
|
36
|
-
|
|
69
|
+
stateRepositoryMockJs = createStateRepositoryMock(this.sinonSandbox);
|
|
70
|
+
stateRepositoryMockJs.fetchDocuments.resolves([]);
|
|
37
71
|
|
|
38
|
-
|
|
39
|
-
stateRepositoryMock,
|
|
40
|
-
);
|
|
72
|
+
executionContext = new StateTransitionExecutionContext();
|
|
41
73
|
});
|
|
42
74
|
|
|
43
|
-
it('should return valid result if Documents have no unique indices', async () => {
|
|
44
|
-
const [niceDocument] =
|
|
75
|
+
it('should return valid result if Documents have no unique indices - Rust', async () => {
|
|
76
|
+
const [niceDocument] = documentsJs;
|
|
45
77
|
const noIndexDocumentTransitions = getDocumentTransitionsFixture({
|
|
46
78
|
create: [niceDocument],
|
|
47
79
|
});
|
|
48
80
|
|
|
81
|
+
const documentTransition = DocumentTransition.fromTransitionCreate(
|
|
82
|
+
new DocumentCreateTransition(
|
|
83
|
+
noIndexDocumentTransitions[0].toObject(), dataContract,
|
|
84
|
+
),
|
|
85
|
+
);
|
|
86
|
+
|
|
49
87
|
const result = await validateDocumentsUniquenessByIndices(
|
|
88
|
+
stateRepositoryMock,
|
|
50
89
|
ownerId,
|
|
51
|
-
|
|
90
|
+
[documentTransition],
|
|
52
91
|
dataContract,
|
|
53
92
|
executionContext,
|
|
54
93
|
);
|
|
@@ -58,36 +97,38 @@ describe('validateDocumentsUniquenessByIndices', () => {
|
|
|
58
97
|
expect(stateRepositoryMock.fetchDocuments).to.have.not.been.called();
|
|
59
98
|
});
|
|
60
99
|
|
|
61
|
-
it('should return valid result if Document has unique indices and there are no duplicates', async () => {
|
|
62
|
-
const [, , , william] =
|
|
100
|
+
it('should return valid result if Document has unique indices and there are no duplicates - Rust', async () => {
|
|
101
|
+
const [, , , william] = documentsJs;
|
|
102
|
+
const williamDocument = new Document(william.toObject(), dataContract);
|
|
63
103
|
|
|
64
104
|
stateRepositoryMock.fetchDocuments
|
|
65
105
|
.withArgs(
|
|
66
106
|
dataContract.getId().toBuffer(),
|
|
67
|
-
|
|
107
|
+
williamDocument.getType(),
|
|
68
108
|
{
|
|
69
109
|
where: [
|
|
70
|
-
['$ownerId', '==',
|
|
110
|
+
['$ownerId', '==', ownerIdJs],
|
|
71
111
|
['firstName', '==', william.get('firstName')],
|
|
72
112
|
],
|
|
73
113
|
},
|
|
74
114
|
)
|
|
75
|
-
.resolves([
|
|
115
|
+
.resolves([williamDocument]);
|
|
76
116
|
|
|
77
117
|
stateRepositoryMock.fetchDocuments
|
|
78
118
|
.withArgs(
|
|
79
|
-
|
|
119
|
+
dataContractJs.getId().toBuffer(),
|
|
80
120
|
william.getType(),
|
|
81
121
|
{
|
|
82
122
|
where: [
|
|
83
|
-
['$ownerId', '==',
|
|
123
|
+
['$ownerId', '==', ownerIdJs],
|
|
84
124
|
['lastName', '==', william.get('lastName')],
|
|
85
125
|
],
|
|
86
126
|
},
|
|
87
127
|
)
|
|
88
|
-
.resolves([
|
|
128
|
+
.resolves([williamDocument]);
|
|
89
129
|
|
|
90
130
|
const result = await validateDocumentsUniquenessByIndices(
|
|
131
|
+
stateRepositoryMock,
|
|
91
132
|
ownerId,
|
|
92
133
|
documentTransitions,
|
|
93
134
|
dataContract,
|
|
@@ -98,18 +139,21 @@ describe('validateDocumentsUniquenessByIndices', () => {
|
|
|
98
139
|
expect(result.isValid()).to.be.true();
|
|
99
140
|
});
|
|
100
141
|
|
|
101
|
-
it('should return invalid result if Document has unique indices and there are duplicates', async () => {
|
|
102
|
-
|
|
142
|
+
it('should return invalid result if Document has unique indices and there are duplicates - Rust', async () => {
|
|
143
|
+
let [, , , william, leon] = documentsJs;
|
|
103
144
|
|
|
104
|
-
|
|
145
|
+
william = new Document(william.toObject(), dataContract.clone());
|
|
146
|
+
leon = new Document(leon.toObject(), dataContract.clone());
|
|
147
|
+
|
|
148
|
+
const indicesDefinition = dataContractJs.getDocumentSchema(william.getType()).indices;
|
|
105
149
|
|
|
106
150
|
stateRepositoryMock.fetchDocuments
|
|
107
151
|
.withArgs(
|
|
108
|
-
|
|
152
|
+
sinon.match.instanceOf(Identifier),
|
|
109
153
|
william.getType(),
|
|
110
154
|
{
|
|
111
155
|
where: [
|
|
112
|
-
['$ownerId', '==', ownerId],
|
|
156
|
+
['$ownerId', '==', ownerId.toJSON()],
|
|
113
157
|
['firstName', '==', william.get('firstName')],
|
|
114
158
|
],
|
|
115
159
|
},
|
|
@@ -118,11 +162,11 @@ describe('validateDocumentsUniquenessByIndices', () => {
|
|
|
118
162
|
|
|
119
163
|
stateRepositoryMock.fetchDocuments
|
|
120
164
|
.withArgs(
|
|
121
|
-
|
|
165
|
+
sinon.match.instanceOf(Identifier),
|
|
122
166
|
william.getType(),
|
|
123
167
|
{
|
|
124
168
|
where: [
|
|
125
|
-
['$ownerId', '==', ownerId],
|
|
169
|
+
['$ownerId', '==', ownerId.toJSON()],
|
|
126
170
|
['lastName', '==', william.get('lastName')],
|
|
127
171
|
],
|
|
128
172
|
},
|
|
@@ -131,11 +175,11 @@ describe('validateDocumentsUniquenessByIndices', () => {
|
|
|
131
175
|
|
|
132
176
|
stateRepositoryMock.fetchDocuments
|
|
133
177
|
.withArgs(
|
|
134
|
-
|
|
178
|
+
sinon.match.instanceOf(Identifier),
|
|
135
179
|
leon.getType(),
|
|
136
180
|
{
|
|
137
181
|
where: [
|
|
138
|
-
['$ownerId', '==', ownerId],
|
|
182
|
+
['$ownerId', '==', ownerId.toJSON()],
|
|
139
183
|
['firstName', '==', leon.get('firstName')],
|
|
140
184
|
],
|
|
141
185
|
},
|
|
@@ -144,11 +188,11 @@ describe('validateDocumentsUniquenessByIndices', () => {
|
|
|
144
188
|
|
|
145
189
|
stateRepositoryMock.fetchDocuments
|
|
146
190
|
.withArgs(
|
|
147
|
-
|
|
191
|
+
sinon.match.instanceOf(Identifier),
|
|
148
192
|
leon.getType(),
|
|
149
193
|
{
|
|
150
194
|
where: [
|
|
151
|
-
['$ownerId', '==', ownerId],
|
|
195
|
+
['$ownerId', '==', ownerId.toJSON()],
|
|
152
196
|
['lastName', '==', leon.get('lastName')],
|
|
153
197
|
],
|
|
154
198
|
},
|
|
@@ -156,25 +200,23 @@ describe('validateDocumentsUniquenessByIndices', () => {
|
|
|
156
200
|
.resolves([william]);
|
|
157
201
|
|
|
158
202
|
const result = await validateDocumentsUniquenessByIndices(
|
|
203
|
+
stateRepositoryMock,
|
|
159
204
|
ownerId,
|
|
160
205
|
documentTransitions,
|
|
161
206
|
dataContract,
|
|
162
207
|
executionContext,
|
|
163
208
|
);
|
|
164
209
|
|
|
165
|
-
expectValidationError(result, DuplicateUniqueIndexError, 4);
|
|
166
|
-
|
|
210
|
+
await expectValidationError(result, DuplicateUniqueIndexError, 4);
|
|
167
211
|
const errors = result.getErrors();
|
|
168
|
-
|
|
169
212
|
const [error] = result.getErrors();
|
|
170
|
-
|
|
171
213
|
expect(error.getCode()).to.equal(4009);
|
|
172
214
|
|
|
173
215
|
expect(errors.map((e) => e.getDocumentId())).to.have.deep.members([
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
216
|
+
documentTransitionsJs[3].getId().toBuffer(),
|
|
217
|
+
documentTransitionsJs[3].getId().toBuffer(),
|
|
218
|
+
documentTransitionsJs[4].getId().toBuffer(),
|
|
219
|
+
documentTransitionsJs[4].getId().toBuffer(),
|
|
178
220
|
]);
|
|
179
221
|
|
|
180
222
|
expect(errors.map((e) => e.getDuplicatingProperties())).to.have.deep.members([
|
|
@@ -185,38 +227,44 @@ describe('validateDocumentsUniquenessByIndices', () => {
|
|
|
185
227
|
]);
|
|
186
228
|
});
|
|
187
229
|
|
|
188
|
-
it('should return valid result if Document has undefined field from index', async () => {
|
|
189
|
-
const
|
|
230
|
+
it('should return valid result if Document has undefined field from index - Rust', async () => {
|
|
231
|
+
const indexedDocumentJs = documentsJs[7];
|
|
232
|
+
const indexedDocument = new Document(indexedDocumentJs.toObject(), dataContract.clone());
|
|
190
233
|
const indexedDocumentTransitions = getDocumentTransitionsFixture({
|
|
191
|
-
create: [
|
|
192
|
-
})
|
|
234
|
+
create: [indexedDocumentJs],
|
|
235
|
+
}).map(
|
|
236
|
+
(t) => DocumentTransition.fromTransitionCreate(
|
|
237
|
+
new DocumentCreateTransition(t.toObject(), dataContract.clone()),
|
|
238
|
+
),
|
|
239
|
+
);
|
|
193
240
|
|
|
194
|
-
|
|
241
|
+
stateRepositoryMockJs.fetchDocuments
|
|
195
242
|
.withArgs(
|
|
196
|
-
|
|
243
|
+
sinon.match.instanceOf(Identifier),
|
|
197
244
|
indexedDocument.getType(),
|
|
198
245
|
{
|
|
199
246
|
where: [
|
|
200
|
-
['$ownerId', '==', ownerId],
|
|
247
|
+
['$ownerId', '==', ownerId.toJSON()],
|
|
201
248
|
['firstName', '==', indexedDocument.get('firstName')],
|
|
202
249
|
],
|
|
203
250
|
},
|
|
204
251
|
)
|
|
205
252
|
.resolves([indexedDocument]);
|
|
206
253
|
|
|
207
|
-
|
|
254
|
+
stateRepositoryMockJs.fetchDocuments
|
|
208
255
|
.withArgs(
|
|
209
|
-
|
|
256
|
+
sinon.match.instanceOf(Identifier),
|
|
210
257
|
indexedDocument.getType(),
|
|
211
258
|
{
|
|
212
259
|
where: [
|
|
213
|
-
['$ownerId', '==', ownerId],
|
|
260
|
+
['$ownerId', '==', ownerId.toJSON()],
|
|
214
261
|
],
|
|
215
262
|
},
|
|
216
263
|
)
|
|
217
264
|
.resolves([indexedDocument]);
|
|
218
265
|
|
|
219
266
|
const result = await validateDocumentsUniquenessByIndices(
|
|
267
|
+
stateRepositoryMock,
|
|
220
268
|
ownerId,
|
|
221
269
|
indexedDocumentTransitions,
|
|
222
270
|
dataContract,
|
|
@@ -227,26 +275,34 @@ describe('validateDocumentsUniquenessByIndices', () => {
|
|
|
227
275
|
expect(result.isValid()).to.be.true();
|
|
228
276
|
});
|
|
229
277
|
|
|
230
|
-
it('should return valid result if Document being created and has createdAt and updatedAt indices', async () => {
|
|
231
|
-
const [, , , , , ,
|
|
232
|
-
|
|
278
|
+
it('should return valid result if Document being created and has createdAt and updatedAt indices - Rust', async () => {
|
|
279
|
+
const [, , , , , , uniqueDatesDocumentJs] = documentsJs;
|
|
280
|
+
const uniqueDatesDocument = new Document(
|
|
281
|
+
uniqueDatesDocumentJs.toObject(), dataContract.clone(),
|
|
282
|
+
);
|
|
233
283
|
const uniqueDatesDocumentTransitions = getDocumentTransitionsFixture({
|
|
234
|
-
create: [
|
|
235
|
-
})
|
|
284
|
+
create: [uniqueDatesDocumentJs],
|
|
285
|
+
}).map(
|
|
286
|
+
(t) => DocumentTransition.fromTransitionCreate(
|
|
287
|
+
new DocumentCreateTransition(t.toObject(), dataContract.clone()),
|
|
288
|
+
),
|
|
289
|
+
);
|
|
290
|
+
|
|
236
291
|
stateRepositoryMock.fetchDocuments
|
|
237
292
|
.withArgs(
|
|
238
|
-
|
|
239
|
-
|
|
293
|
+
sinon.match.instanceOf(Identifier),
|
|
294
|
+
uniqueDatesDocumentJs.getType(),
|
|
240
295
|
{
|
|
241
296
|
where: [
|
|
242
|
-
['$createdAt', '==', uniqueDatesDocument.getCreatedAt()
|
|
243
|
-
['$updatedAt', '==', uniqueDatesDocument.getUpdatedAt()
|
|
297
|
+
['$createdAt', '==', uniqueDatesDocument.getCreatedAt()],
|
|
298
|
+
['$updatedAt', '==', uniqueDatesDocument.getUpdatedAt()],
|
|
244
299
|
],
|
|
245
300
|
},
|
|
246
301
|
)
|
|
247
302
|
.resolves([uniqueDatesDocument]);
|
|
248
303
|
|
|
249
304
|
const result = await validateDocumentsUniquenessByIndices(
|
|
305
|
+
stateRepositoryMock,
|
|
250
306
|
ownerId,
|
|
251
307
|
uniqueDatesDocumentTransitions,
|
|
252
308
|
dataContract,
|
|
@@ -256,21 +312,26 @@ describe('validateDocumentsUniquenessByIndices', () => {
|
|
|
256
312
|
expect(result.isValid()).to.be.true();
|
|
257
313
|
});
|
|
258
314
|
|
|
259
|
-
it('should return invalid result on dry run', async () => {
|
|
260
|
-
const [niceDocument] =
|
|
315
|
+
it('should return invalid result on dry run - Rust', async () => {
|
|
316
|
+
const [niceDocument] = documentsJs;
|
|
261
317
|
const noIndexDocumentTransitions = getDocumentTransitionsFixture({
|
|
262
318
|
create: [niceDocument],
|
|
263
319
|
});
|
|
264
320
|
|
|
265
321
|
executionContext.enableDryRun();
|
|
322
|
+
const documentTransition = DocumentTransition.fromTransitionCreate(
|
|
323
|
+
new DocumentCreateTransition(
|
|
324
|
+
noIndexDocumentTransitions[0].toObject(), dataContract,
|
|
325
|
+
),
|
|
326
|
+
);
|
|
266
327
|
|
|
267
328
|
const result = await validateDocumentsUniquenessByIndices(
|
|
329
|
+
stateRepositoryMock,
|
|
268
330
|
ownerId,
|
|
269
|
-
|
|
331
|
+
[documentTransition],
|
|
270
332
|
dataContract,
|
|
271
333
|
executionContext,
|
|
272
334
|
);
|
|
273
|
-
executionContext.disableDryRun();
|
|
274
335
|
|
|
275
336
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
276
337
|
expect(result.isValid()).to.be.true();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const varint = require('varint');
|
|
1
2
|
const JSIdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
2
3
|
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
3
4
|
const JSIdentity = require('@dashevo/dpp/lib/identity/Identity');
|
|
@@ -36,7 +37,6 @@ describe('Identity', () => {
|
|
|
36
37
|
purpose: KeyPurpose.AUTHENTICATION,
|
|
37
38
|
securityLevel: KeySecurityLevel.MASTER,
|
|
38
39
|
readOnly: false,
|
|
39
|
-
signature: Buffer.alloc(36).fill('a'),
|
|
40
40
|
},
|
|
41
41
|
],
|
|
42
42
|
balance: 0,
|
|
@@ -45,11 +45,21 @@ describe('Identity', () => {
|
|
|
45
45
|
|
|
46
46
|
identity = new Identity(rawIdentity);
|
|
47
47
|
|
|
48
|
-
metadataFixture = new Metadata(
|
|
48
|
+
metadataFixture = new Metadata({
|
|
49
|
+
blockHeight: 42,
|
|
50
|
+
coreChainLockedHeight: 0,
|
|
51
|
+
timeMs: 100,
|
|
52
|
+
protocolVersion: 2,
|
|
53
|
+
});
|
|
49
54
|
|
|
50
55
|
identity.setMetadata(metadataFixture);
|
|
51
56
|
|
|
52
|
-
metadataFixture = new Metadata(
|
|
57
|
+
metadataFixture = new Metadata({
|
|
58
|
+
blockHeight: 42,
|
|
59
|
+
coreChainLockedHeight: 0,
|
|
60
|
+
timeMs: 100,
|
|
61
|
+
protocolVersion: 2,
|
|
62
|
+
});
|
|
53
63
|
});
|
|
54
64
|
|
|
55
65
|
afterEach(() => {
|
|
@@ -96,7 +106,6 @@ describe('Identity', () => {
|
|
|
96
106
|
data: Buffer.alloc(36).fill('a'),
|
|
97
107
|
purpose: KeyPurpose.AUTHENTICATION,
|
|
98
108
|
securityLevel: KeySecurityLevel.MASTER,
|
|
99
|
-
signature: Buffer.alloc(36).fill('a'),
|
|
100
109
|
readOnly: false,
|
|
101
110
|
};
|
|
102
111
|
|
|
@@ -145,8 +154,7 @@ describe('Identity', () => {
|
|
|
145
154
|
const identityDataToEncode = identity.toObject();
|
|
146
155
|
delete identityDataToEncode.protocolVersion;
|
|
147
156
|
|
|
148
|
-
|
|
149
|
-
protocolVersionUInt32.writeUInt32LE(identity.getProtocolVersion(), 0);
|
|
157
|
+
varint.encode(identity.getProtocolVersion());
|
|
150
158
|
|
|
151
159
|
expect(result).to.deep.equal(expectedHash);
|
|
152
160
|
});
|
|
@@ -177,7 +185,6 @@ describe('Identity', () => {
|
|
|
177
185
|
data: rawIdentity.publicKeys[0].data.toString('base64'),
|
|
178
186
|
purpose: KeyPurpose.AUTHENTICATION,
|
|
179
187
|
securityLevel: KeySecurityLevel.MASTER,
|
|
180
|
-
signature: rawIdentity.publicKeys[0].signature.toString('base64'),
|
|
181
188
|
readOnly: false,
|
|
182
189
|
},
|
|
183
190
|
],
|
|
@@ -223,8 +230,18 @@ describe('Identity', () => {
|
|
|
223
230
|
|
|
224
231
|
describe('#setMetadata', () => {
|
|
225
232
|
it('should set metadata', () => {
|
|
226
|
-
const otherMetadata = new Metadata(
|
|
227
|
-
|
|
233
|
+
const otherMetadata = new Metadata({
|
|
234
|
+
blockHeight: 43,
|
|
235
|
+
coreChainLockedHeight: 1,
|
|
236
|
+
timeMs: 100,
|
|
237
|
+
protocolVersion: 2,
|
|
238
|
+
});
|
|
239
|
+
const expectedMetadata = new Metadata({
|
|
240
|
+
blockHeight: 43,
|
|
241
|
+
coreChainLockedHeight: 1,
|
|
242
|
+
timeMs: 100,
|
|
243
|
+
protocolVersion: 2,
|
|
244
|
+
});
|
|
228
245
|
|
|
229
246
|
identity.setMetadata(otherMetadata);
|
|
230
247
|
|