@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,15 +1,25 @@
|
|
|
1
|
-
const
|
|
1
|
+
const { default: loadWasmDpp } = require('../..');
|
|
2
|
+
|
|
3
|
+
let Metadata;
|
|
2
4
|
|
|
3
5
|
describe('Metadata', () => {
|
|
6
|
+
beforeEach(async () => {
|
|
7
|
+
({ Metadata } = await loadWasmDpp());
|
|
8
|
+
});
|
|
9
|
+
|
|
4
10
|
describe('#constructor', () => {
|
|
5
11
|
it('should set height and core chain-locked height', () => {
|
|
6
12
|
const result = new Metadata({
|
|
7
13
|
blockHeight: 42,
|
|
8
14
|
coreChainLockedHeight: 1,
|
|
15
|
+
timeMs: 100,
|
|
16
|
+
protocolVersion: 2,
|
|
9
17
|
});
|
|
10
18
|
|
|
11
|
-
expect(result.
|
|
12
|
-
expect(result.
|
|
19
|
+
expect(result.getBlockHeight()).to.equal(42);
|
|
20
|
+
expect(result.getCoreChainLockedHeight()).to.equal(1);
|
|
21
|
+
expect(result.getTimeMs()).to.equal(100);
|
|
22
|
+
expect(result.getProtocolVersion()).to.equal(2);
|
|
13
23
|
});
|
|
14
24
|
});
|
|
15
25
|
|
|
@@ -18,6 +28,8 @@ describe('Metadata', () => {
|
|
|
18
28
|
const result = new Metadata({
|
|
19
29
|
blockHeight: 42,
|
|
20
30
|
coreChainLockedHeight: 1,
|
|
31
|
+
timeMs: 100,
|
|
32
|
+
protocolVersion: 2,
|
|
21
33
|
});
|
|
22
34
|
|
|
23
35
|
expect(result.getBlockHeight()).to.equal(42);
|
|
@@ -29,6 +41,8 @@ describe('Metadata', () => {
|
|
|
29
41
|
const result = new Metadata({
|
|
30
42
|
blockHeight: 1,
|
|
31
43
|
coreChainLockedHeight: 42,
|
|
44
|
+
timeMs: 100,
|
|
45
|
+
protocolVersion: 2,
|
|
32
46
|
});
|
|
33
47
|
|
|
34
48
|
expect(result.getCoreChainLockedHeight()).to.equal(42);
|
|
@@ -198,7 +198,7 @@ describe('DataContract', () => {
|
|
|
198
198
|
dataContract.getDocumentSchema('undefinedObject');
|
|
199
199
|
expect.fail('Error was not thrown');
|
|
200
200
|
} catch (e) {
|
|
201
|
-
expect(e.
|
|
201
|
+
expect(e.getType()).to.equal('undefinedObject');
|
|
202
202
|
}
|
|
203
203
|
});
|
|
204
204
|
|
|
@@ -215,7 +215,7 @@ describe('DataContract', () => {
|
|
|
215
215
|
dataContract.getDocumentSchemaRef('undefinedObject');
|
|
216
216
|
expect.fail('Error was not thrown');
|
|
217
217
|
} catch (e) {
|
|
218
|
-
expect(e.
|
|
218
|
+
expect(e.getType()).to.equal('undefinedObject');
|
|
219
219
|
}
|
|
220
220
|
});
|
|
221
221
|
|
|
@@ -326,14 +326,19 @@ describe('DataContract', () => {
|
|
|
326
326
|
dataContract.getBinaryProperties('unknown');
|
|
327
327
|
expect.fail('Error was not thrown');
|
|
328
328
|
} catch (e) {
|
|
329
|
-
expect(e.
|
|
329
|
+
expect(e.getType()).to.equal('unknown');
|
|
330
330
|
}
|
|
331
331
|
});
|
|
332
332
|
});
|
|
333
333
|
|
|
334
334
|
describe('#setMetadata', () => {
|
|
335
335
|
it('should set metadata', () => {
|
|
336
|
-
const otherMetadata = new Metadata(
|
|
336
|
+
const otherMetadata = new Metadata({
|
|
337
|
+
blockHeight: 43,
|
|
338
|
+
coreChainLockedHeight: 1,
|
|
339
|
+
timeMs: 100,
|
|
340
|
+
protocolVersion: 2,
|
|
341
|
+
});
|
|
337
342
|
const otherMetadataToObject = otherMetadata.toObject();
|
|
338
343
|
|
|
339
344
|
dataContract.setMetadata(otherMetadata);
|
|
@@ -16,7 +16,6 @@ describe('createDataContract', () => {
|
|
|
16
16
|
rawDataContract = {
|
|
17
17
|
$id: generateRandomIdentifier().toBuffer(),
|
|
18
18
|
ownerId: generateRandomIdentifier().toBuffer(),
|
|
19
|
-
contractId: generateRandomIdentifier().toBuffer(),
|
|
20
19
|
protocolVersion: 4,
|
|
21
20
|
version: 20,
|
|
22
21
|
$schema: 'http://test.com/schema',
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const varint = require('varint');
|
|
1
2
|
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
2
3
|
const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
|
|
3
4
|
|
|
@@ -64,11 +65,10 @@ describe('DataContractCreateTransition', () => {
|
|
|
64
65
|
|
|
65
66
|
describe('#toBuffer', () => {
|
|
66
67
|
it('should return serialized State Transition', () => {
|
|
67
|
-
const
|
|
68
|
-
protocolVersionUInt32.writeUInt32LE(stateTransition.getProtocolVersion(), 0);
|
|
68
|
+
const protocolVersionBytes = Buffer.from(varint.encode(stateTransition.getProtocolVersion()));
|
|
69
69
|
|
|
70
70
|
const result = stateTransition.toBuffer();
|
|
71
|
-
expect(result.compare(
|
|
71
|
+
expect(result.compare(protocolVersionBytes, 0, 1, 0, 1)).equals(0);
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
74
|
|
|
@@ -37,7 +37,7 @@ describe('applyDataContractCreateTransitionFactory', () => {
|
|
|
37
37
|
stateTransition.setExecutionContext(executionContext);
|
|
38
38
|
|
|
39
39
|
const stateRepositoryLike = {
|
|
40
|
-
storeDataContract: () => {
|
|
40
|
+
storeDataContract: async () => {
|
|
41
41
|
dataContractStored = true;
|
|
42
42
|
},
|
|
43
43
|
};
|
|
@@ -42,7 +42,7 @@ describe('validateDataContractCreateTransitionStateFactory', () => {
|
|
|
42
42
|
dataContractFetched = false;
|
|
43
43
|
|
|
44
44
|
const stateRepositoryLike = {
|
|
45
|
-
fetchDataContract: () => {
|
|
45
|
+
fetchDataContract: async () => {
|
|
46
46
|
dataContractFetched = true;
|
|
47
47
|
},
|
|
48
48
|
};
|
|
@@ -57,7 +57,7 @@ describe('validateDataContractCreateTransitionStateFactory', () => {
|
|
|
57
57
|
const wasmDataContract = await dataContractFactory.createFromBuffer(dataContract.toBuffer());
|
|
58
58
|
|
|
59
59
|
const stateRepositoryLikeWithContract = {
|
|
60
|
-
fetchDataContract: () => wasmDataContract,
|
|
60
|
+
fetchDataContract: async () => wasmDataContract,
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
const result = await validateDataContractCreateTransitionState(
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const varint = require('varint');
|
|
1
2
|
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
2
3
|
const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
|
|
3
4
|
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
@@ -62,11 +63,10 @@ describe('DataContractUpdateTransition', () => {
|
|
|
62
63
|
|
|
63
64
|
describe('#toBuffer', () => {
|
|
64
65
|
it('should return serialized State Transition that starts with protocol version', () => {
|
|
65
|
-
const
|
|
66
|
-
protocolVersionUInt32.writeUInt32LE(stateTransition.getProtocolVersion(), 0);
|
|
66
|
+
const protocolVersionBytes = Buffer.from(varint.encode(stateTransition.getProtocolVersion()));
|
|
67
67
|
|
|
68
68
|
const result = stateTransition.toBuffer();
|
|
69
|
-
expect(result.compare(
|
|
69
|
+
expect(result.compare(protocolVersionBytes, 0, 1, 0, 1)).equals(0);
|
|
70
70
|
});
|
|
71
71
|
});
|
|
72
72
|
|
|
@@ -34,7 +34,7 @@ describe('applyDataContractUpdateTransitionFactory', () => {
|
|
|
34
34
|
stateTransition.setExecutionContext(executionContext);
|
|
35
35
|
|
|
36
36
|
const stateRepositoryLike = {
|
|
37
|
-
storeDataContract: () => {
|
|
37
|
+
storeDataContract: async () => {
|
|
38
38
|
dataContractStored = true;
|
|
39
39
|
},
|
|
40
40
|
};
|
|
@@ -23,31 +23,13 @@ describe('validateIndicesAreBackwardCompatible', () => {
|
|
|
23
23
|
const oldDataContract = getDataContractFixture();
|
|
24
24
|
const newDataContract = getDataContractFixture();
|
|
25
25
|
|
|
26
|
-
newDataContract.getDocumentSchema('indexedDocument').properties.otherName = {
|
|
27
|
-
type: 'string',
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
newDataContract.getDocumentSchema('indexedDocument').indices.push({
|
|
31
|
-
name: 'index42',
|
|
32
|
-
unique: false,
|
|
33
|
-
properties: [
|
|
34
|
-
{ otherName: 'asc' },
|
|
35
|
-
],
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
newDataContract.getDocumentSchema('indexedDocument').indices.push({
|
|
39
|
-
name: 'index42',
|
|
40
|
-
properties: [
|
|
41
|
-
{ otherName: 'asc' },
|
|
42
|
-
],
|
|
43
|
-
});
|
|
44
|
-
|
|
45
26
|
oldDocumentsSchema = oldDataContract.getDocuments();
|
|
46
27
|
newDocumentsSchema = newDataContract.getDocuments();
|
|
47
28
|
});
|
|
48
29
|
|
|
49
30
|
it('should return invalid result if some of unique indices have changed', async () => {
|
|
50
31
|
newDocumentsSchema.indexedDocument.indices[0].properties[1].firstName = 'desc';
|
|
32
|
+
|
|
51
33
|
const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
|
|
52
34
|
|
|
53
35
|
expect(result.isValid()).to.be.false();
|
|
@@ -58,7 +40,7 @@ describe('validateIndicesAreBackwardCompatible', () => {
|
|
|
58
40
|
expect(error.getIndexName()).to.equal(newDocumentsSchema.indexedDocument.indices[0].name);
|
|
59
41
|
});
|
|
60
42
|
|
|
61
|
-
it('should return invalid result if
|
|
43
|
+
it('should return invalid result if already defined properties are changed in existing index', async () => {
|
|
62
44
|
newDocumentsSchema.indexedDocument.indices[2].properties[0].lastName = 'desc';
|
|
63
45
|
|
|
64
46
|
const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
|
|
@@ -71,24 +53,17 @@ describe('validateIndicesAreBackwardCompatible', () => {
|
|
|
71
53
|
expect(error.getIndexName()).to.equal(newDocumentsSchema.indexedDocument.indices[2].name);
|
|
72
54
|
});
|
|
73
55
|
|
|
74
|
-
it('should return invalid result if
|
|
75
|
-
newDocumentsSchema.indexedDocument.indices.push({
|
|
76
|
-
name: 'oldFieldIndex',
|
|
77
|
-
properties: [
|
|
78
|
-
{
|
|
79
|
-
otherProperty: 'asc',
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
});
|
|
56
|
+
it('should return invalid result if already indexed properties are added to existing index', async () => {
|
|
57
|
+
newDocumentsSchema.indexedDocument.indices[2].properties.push({ firstName: 'asc' });
|
|
83
58
|
|
|
84
59
|
const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
|
|
85
60
|
|
|
86
61
|
expect(result.isValid()).to.be.false();
|
|
87
62
|
|
|
88
|
-
const error = result.getErrors()
|
|
63
|
+
const [error] = result.getErrors();
|
|
89
64
|
|
|
90
65
|
expect(error).to.be.an.instanceOf(DataContractInvalidIndexDefinitionUpdateError);
|
|
91
|
-
expect(error.getIndexName()).to.equal(
|
|
66
|
+
expect(error.getIndexName()).to.equal(newDocumentsSchema.indexedDocument.indices[2].name);
|
|
92
67
|
});
|
|
93
68
|
|
|
94
69
|
it('should return invalid result if one of new indices contains old properties in the wrong order', async () => {
|
|
@@ -130,6 +105,25 @@ describe('validateIndicesAreBackwardCompatible', () => {
|
|
|
130
105
|
expect(error.getIndexName()).to.equal('index_other');
|
|
131
106
|
});
|
|
132
107
|
|
|
108
|
+
it('should return invalid result if existing property was used in a new index', async () => {
|
|
109
|
+
newDocumentsSchema.indexedDocument.indices.push({
|
|
110
|
+
name: 'oldFieldIndex',
|
|
111
|
+
properties: [
|
|
112
|
+
{
|
|
113
|
+
otherProperty: 'asc',
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
|
|
119
|
+
|
|
120
|
+
expect(result.isValid()).to.be.false();
|
|
121
|
+
|
|
122
|
+
const [error] = result.getErrors();
|
|
123
|
+
expect(error).to.be.an.instanceOf(DataContractInvalidIndexDefinitionUpdateError);
|
|
124
|
+
expect(error.getIndexName()).to.equal('oldFieldIndex');
|
|
125
|
+
});
|
|
126
|
+
|
|
133
127
|
it('should return valid result if indices are not changed', async () => {
|
|
134
128
|
const result = validateIndicesAreBackwardCompatible(oldDocumentsSchema, newDocumentsSchema);
|
|
135
129
|
|
|
@@ -51,7 +51,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
51
51
|
const wasmDataContract = await dataContractFactory.createFromBuffer(dataContract.toBuffer());
|
|
52
52
|
|
|
53
53
|
const stateRepositoryLike = {
|
|
54
|
-
fetchDataContract: () => wasmDataContract,
|
|
54
|
+
fetchDataContract: async () => wasmDataContract,
|
|
55
55
|
};
|
|
56
56
|
|
|
57
57
|
validateTransitionWithExistingContract = (t) => validateDataContractUpdateTransitionState(
|
|
@@ -62,7 +62,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
62
62
|
|
|
63
63
|
it('should return invalid result if Data Contract with specified contractId was not found', async () => {
|
|
64
64
|
const stateRepositoryLikeNoDataContract = {
|
|
65
|
-
fetchDataContract: () => undefined,
|
|
65
|
+
fetchDataContract: async () => undefined,
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState(
|
|
@@ -108,7 +108,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
108
108
|
|
|
109
109
|
it('should return valid result on dry run', async () => {
|
|
110
110
|
const stateRepositoryLikeNoDataContract = {
|
|
111
|
-
fetchDataContract: () => undefined,
|
|
111
|
+
fetchDataContract: async () => undefined,
|
|
112
112
|
};
|
|
113
113
|
|
|
114
114
|
const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState(
|
|
@@ -33,6 +33,7 @@ describe('createMasternodeRewardSharesDataTrigger', () => {
|
|
|
33
33
|
service: '192.168.65.2:20101',
|
|
34
34
|
pubKeyOperator: '809519c5f6f3be1c08782ac42ae9a83b6c7205eba43f9a96a4f032ec7a73f1a7c25fa78cce0d6d9c135f7e2c28527179',
|
|
35
35
|
votingAddress: 'yXmprXYP51uzfMyndtWwxz96MnkCKkFc9x',
|
|
36
|
+
nType: 0,
|
|
36
37
|
isValid: true,
|
|
37
38
|
}),
|
|
38
39
|
new SimplifiedMNListEntry({
|
|
@@ -41,6 +42,7 @@ describe('createMasternodeRewardSharesDataTrigger', () => {
|
|
|
41
42
|
service: '192.168.65.2:20201',
|
|
42
43
|
pubKeyOperator: '987a4873caba62cd45a2f7d4aa6d94519ee6753e9bef777c927cb94ade768a542b0ff34a93231d3a92b4e75ffdaa366e',
|
|
43
44
|
votingAddress: 'ycL7L4mhYoaZdm9TH85svvpfeKtdfo249u',
|
|
45
|
+
nType: 0,
|
|
44
46
|
isValid: true,
|
|
45
47
|
}),
|
|
46
48
|
]),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const varint = require('varint');
|
|
1
2
|
const decodeProtocolEntityFactory = require('@dashevo/dpp/lib/decodeProtocolEntityFactory');
|
|
2
3
|
const ProtocolVersionParsingError = require('@dashevo/dpp/lib/errors/consensus/basic/decode/ProtocolVersionParsingError');
|
|
3
4
|
const SerializedObjectParsingError = require('@dashevo/dpp/lib/errors/consensus/basic/decode/SerializedObjectParsingError');
|
|
@@ -16,8 +17,7 @@ describe('decodeProtocolEntityFactory', () => {
|
|
|
16
17
|
beforeEach(() => {
|
|
17
18
|
parsedProtocolVersion = 0;
|
|
18
19
|
|
|
19
|
-
protocolVersionBuffer = Buffer.
|
|
20
|
-
protocolVersionBuffer.writeUInt32LE(parsedProtocolVersion, 0);
|
|
20
|
+
protocolVersionBuffer = Buffer.from(varint.encode(parsedProtocolVersion));
|
|
21
21
|
|
|
22
22
|
rawEntity = { test: 'successful' };
|
|
23
23
|
entityBuffer = encode(rawEntity);
|