@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,30 +1,54 @@
|
|
|
1
|
-
const
|
|
2
|
-
const Metadata = require('@dashevo/dpp/lib/Metadata');
|
|
1
|
+
const MetadataJs = require('@dashevo/dpp/lib/Metadata');
|
|
3
2
|
|
|
4
3
|
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
5
4
|
const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
|
|
6
5
|
|
|
6
|
+
const { default: loadWasmDpp } = require('../../../dist');
|
|
7
|
+
|
|
8
|
+
let Document;
|
|
9
|
+
let DataContract;
|
|
10
|
+
let Metadata;
|
|
11
|
+
let Identifier;
|
|
12
|
+
|
|
7
13
|
describe('Document', () => {
|
|
8
14
|
let document;
|
|
9
15
|
let dataContract;
|
|
10
16
|
let metadataFixture;
|
|
11
17
|
|
|
12
|
-
beforeEach(() => {
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
beforeEach(async () => {
|
|
19
|
+
({
|
|
20
|
+
Document,
|
|
21
|
+
DataContract,
|
|
22
|
+
Metadata,
|
|
23
|
+
Identifier,
|
|
24
|
+
} = await loadWasmDpp());
|
|
25
|
+
|
|
26
|
+
const dataContractJs = getDataContractFixture();
|
|
27
|
+
dataContract = new DataContract(dataContractJs.toObject());
|
|
15
28
|
|
|
16
|
-
|
|
29
|
+
const [documentJs] = getDocumentsFixture(dataContractJs).slice(8);
|
|
30
|
+
document = new Document(documentJs.toObject(), dataContract);
|
|
31
|
+
|
|
32
|
+
const metadataFixtureJs = new MetadataJs({
|
|
17
33
|
blockHeight: 42,
|
|
18
34
|
coreChainLockedHeight: 0,
|
|
19
35
|
timeMs: new Date().getTime(),
|
|
20
36
|
protocolVersion: 1,
|
|
21
37
|
});
|
|
22
38
|
|
|
39
|
+
metadataFixture = Metadata.from({
|
|
40
|
+
blockHeight: 42,
|
|
41
|
+
coreChainLockedHeight: 0,
|
|
42
|
+
timeMs: new Date().getTime(),
|
|
43
|
+
protocolVersion: 1,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
documentJs.setMetadata(metadataFixtureJs);
|
|
23
47
|
document.setMetadata(metadataFixture);
|
|
24
48
|
});
|
|
25
49
|
|
|
26
50
|
describe('#toJSON', () => {
|
|
27
|
-
it('should return json document', () => {
|
|
51
|
+
it('should return json document - Rust', () => {
|
|
28
52
|
const result = document.toJSON();
|
|
29
53
|
|
|
30
54
|
expect(result).to.deep.equal({
|
|
@@ -41,55 +65,57 @@ describe('Document', () => {
|
|
|
41
65
|
});
|
|
42
66
|
|
|
43
67
|
describe('#toObject', () => {
|
|
44
|
-
it('should return raw document', () => {
|
|
68
|
+
it('should return raw document - Rust', () => {
|
|
45
69
|
const result = document.toObject();
|
|
46
70
|
|
|
47
71
|
expect(result).to.deep.equal({
|
|
48
72
|
$protocolVersion: document.getProtocolVersion(),
|
|
49
|
-
$dataContractId: dataContract.getId(),
|
|
50
|
-
$id: document.getId(),
|
|
73
|
+
$dataContractId: dataContract.getId().toBuffer(),
|
|
74
|
+
$id: document.getId().toBuffer(),
|
|
51
75
|
$ownerId: getDocumentsFixture.ownerId,
|
|
52
76
|
$revision: 1,
|
|
53
77
|
$type: 'withByteArrays',
|
|
54
78
|
byteArrayField: document.get('byteArrayField'),
|
|
55
|
-
identifierField: document.get('identifierField'),
|
|
79
|
+
identifierField: document.get('identifierField').toBuffer(),
|
|
56
80
|
});
|
|
57
81
|
});
|
|
58
82
|
|
|
59
|
-
it('should return raw document with Identifiers', () => {
|
|
83
|
+
it('should return raw document with Identifiers - Rust', () => {
|
|
60
84
|
const result = document.toObject({ skipIdentifiersConversion: true });
|
|
61
85
|
|
|
62
|
-
expect(result).to.deep.equal({
|
|
63
|
-
$protocolVersion: document.getProtocolVersion(),
|
|
64
|
-
$dataContractId: dataContract.getId(),
|
|
65
|
-
$id: document.getId(),
|
|
66
|
-
$ownerId: getDocumentsFixture.ownerId,
|
|
67
|
-
$revision: 1,
|
|
68
|
-
$type: 'withByteArrays',
|
|
69
|
-
byteArrayField: document.get('byteArrayField'),
|
|
70
|
-
identifierField: document.get('identifierField'),
|
|
71
|
-
});
|
|
72
|
-
|
|
73
86
|
expect(result.$dataContractId).to.be.an.instanceOf(Identifier);
|
|
74
87
|
expect(result.$id).to.be.an.instanceOf(Identifier);
|
|
75
88
|
expect(result.$ownerId).to.be.an.instanceOf(Identifier);
|
|
76
89
|
expect(result.identifierField).to.be.an.instanceOf(Identifier);
|
|
90
|
+
|
|
91
|
+
expect(result.$dataContractId.toBuffer()).to.deep.equal(dataContract.getId().toBuffer());
|
|
92
|
+
expect(result.$id.toBuffer()).to.deep.equal(document.getId().toBuffer());
|
|
93
|
+
expect(result.$ownerId.toBuffer()).to.deep.equal(getDocumentsFixture.ownerId.toBuffer());
|
|
94
|
+
expect(result.identifierField.toBuffer()).to.deep.equal(document.get('identifierField').toBuffer());
|
|
95
|
+
expect(result.$protocolVersion).to.deep.equal(document.getProtocolVersion());
|
|
96
|
+
expect(result.$revision).to.deep.equal(document.getRevision());
|
|
97
|
+
expect(result.$type).to.deep.equal(document.getType());
|
|
98
|
+
expect(result.byteArrayField).to.deep.equal(document.get('byteArrayField'));
|
|
77
99
|
});
|
|
78
100
|
});
|
|
79
101
|
|
|
80
102
|
describe('#setMetadata', () => {
|
|
81
|
-
it('should set metadata', () => {
|
|
82
|
-
const otherMetadata = new Metadata(
|
|
83
|
-
|
|
103
|
+
it('should set metadata - Rust', () => {
|
|
104
|
+
const otherMetadata = new Metadata({
|
|
105
|
+
blockHeight: 43,
|
|
106
|
+
coreChainLockedHeight: 1,
|
|
107
|
+
timeMs: 100,
|
|
108
|
+
protocolVersion: 2,
|
|
109
|
+
});
|
|
84
110
|
document.setMetadata(otherMetadata);
|
|
85
111
|
|
|
86
|
-
expect(document.
|
|
112
|
+
expect(document.getMetadata().toObject()).to.deep.equal(otherMetadata.toObject());
|
|
87
113
|
});
|
|
88
114
|
});
|
|
89
115
|
|
|
90
116
|
describe('#getMetadata', () => {
|
|
91
|
-
it('should get metadata', () => {
|
|
92
|
-
expect(document.getMetadata()).to.deep.equal(metadataFixture);
|
|
117
|
+
it('should get metadata - Rust', () => {
|
|
118
|
+
expect(document.getMetadata().toObject()).to.deep.equal(metadataFixture.toObject());
|
|
93
119
|
});
|
|
94
120
|
});
|
|
95
121
|
});
|
|
@@ -1,47 +1,63 @@
|
|
|
1
1
|
const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
|
|
2
|
-
const DashPlatformProtocol = require('@dashevo/dpp/lib/DashPlatformProtocol');
|
|
3
|
-
|
|
4
|
-
const Document = require('@dashevo/dpp/lib/document/Document');
|
|
5
|
-
const DocumentsBatchTransition = require('@dashevo/dpp/lib/document/stateTransition/DocumentsBatchTransition/DocumentsBatchTransition');
|
|
6
|
-
|
|
7
|
-
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
8
|
-
|
|
9
2
|
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
10
|
-
|
|
11
3
|
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
12
4
|
const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
|
|
13
5
|
const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture');
|
|
14
6
|
|
|
15
|
-
const
|
|
16
|
-
const
|
|
7
|
+
const { default: loadWasmDpp } = require('../../../dist');
|
|
8
|
+
const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
|
|
9
|
+
|
|
10
|
+
let Document;
|
|
11
|
+
let DataContract;
|
|
12
|
+
let Identifier;
|
|
13
|
+
let ValidationResult;
|
|
14
|
+
let DocumentsBatchTransition;
|
|
15
|
+
let DashPlatformProtocol;
|
|
16
|
+
let DataContractNotPresentError;
|
|
17
17
|
|
|
18
18
|
describe('DocumentFacade', () => {
|
|
19
19
|
let dpp;
|
|
20
20
|
let document;
|
|
21
21
|
let documents;
|
|
22
|
+
let documentsJs;
|
|
22
23
|
let dataContract;
|
|
23
24
|
let ownerId;
|
|
24
25
|
let stateRepositoryMock;
|
|
26
|
+
let blsAdapter;
|
|
25
27
|
|
|
26
28
|
beforeEach(async function beforeEach() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
({
|
|
30
|
+
Document,
|
|
31
|
+
DataContract,
|
|
32
|
+
Identifier,
|
|
33
|
+
ValidationResult,
|
|
34
|
+
DocumentsBatchTransition,
|
|
35
|
+
DashPlatformProtocol,
|
|
36
|
+
DataContractNotPresentError,
|
|
37
|
+
} = await loadWasmDpp());
|
|
38
|
+
|
|
39
|
+
const ownerIdJs = generateRandomIdentifier();
|
|
40
|
+
ownerId = new Identifier(ownerIdJs.toBuffer());
|
|
41
|
+
const dataContractJs = getDataContractFixture(ownerIdJs);
|
|
42
|
+
dataContract = new DataContract(dataContractJs.toObject());
|
|
29
43
|
|
|
30
44
|
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
31
|
-
|
|
32
45
|
stateRepositoryMock.fetchDataContract.resolves(dataContract);
|
|
33
46
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
});
|
|
37
|
-
await dpp.initialize();
|
|
47
|
+
blsAdapter = await getBlsAdapterMock();
|
|
48
|
+
dpp = new DashPlatformProtocol({}, blsAdapter, stateRepositoryMock);
|
|
38
49
|
|
|
39
|
-
|
|
50
|
+
documentsJs = getDocumentsFixture(dataContractJs);
|
|
51
|
+
documents = documentsJs.map((d) => {
|
|
52
|
+
const currentDocument = new Document(d.toObject(), dataContract.clone());
|
|
53
|
+
currentDocument.setEntropy(d.entropy);
|
|
54
|
+
return currentDocument;
|
|
55
|
+
});
|
|
40
56
|
([document] = documents);
|
|
41
57
|
});
|
|
42
58
|
|
|
43
59
|
describe('create', () => {
|
|
44
|
-
it('should create Document', () => {
|
|
60
|
+
it('should create Document - Rust', async () => {
|
|
45
61
|
const result = dpp.document.create(
|
|
46
62
|
dataContract,
|
|
47
63
|
ownerId,
|
|
@@ -57,21 +73,11 @@ describe('DocumentFacade', () => {
|
|
|
57
73
|
});
|
|
58
74
|
|
|
59
75
|
describe('createFromObject', () => {
|
|
60
|
-
it('should throw MissingOption if stateRepository is not set', async () => {
|
|
61
|
-
|
|
62
|
-
await dpp.initialize();
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
await dpp.document.createFromObject(document.toObject());
|
|
66
|
-
|
|
67
|
-
expect.fail('MissingOption should be thrown');
|
|
68
|
-
} catch (e) {
|
|
69
|
-
expect(e).to.be.an.instanceOf(MissingOptionError);
|
|
70
|
-
expect(e.getOptionName()).to.equal('stateRepository');
|
|
71
|
-
}
|
|
76
|
+
it('should throw MissingOption if stateRepository is not set - Rust', async () => {
|
|
77
|
+
// not applicable
|
|
72
78
|
});
|
|
73
79
|
|
|
74
|
-
it('should create Document from plain object', async () => {
|
|
80
|
+
it('should create Document from plain object - Rust', async () => {
|
|
75
81
|
const result = await dpp.document.createFromObject(document.toObject());
|
|
76
82
|
|
|
77
83
|
expect(result).to.be.an.instanceOf(Document);
|
|
@@ -81,21 +87,11 @@ describe('DocumentFacade', () => {
|
|
|
81
87
|
});
|
|
82
88
|
|
|
83
89
|
describe('createFromBuffer', () => {
|
|
84
|
-
it('should throw MissingOption if stateRepository is not set', async () => {
|
|
85
|
-
|
|
86
|
-
await dpp.initialize();
|
|
87
|
-
|
|
88
|
-
try {
|
|
89
|
-
await dpp.document.createFromBuffer(document.toObject());
|
|
90
|
-
|
|
91
|
-
expect.fail('MissingOption should be thrown');
|
|
92
|
-
} catch (e) {
|
|
93
|
-
expect(e).to.be.an.instanceOf(MissingOptionError);
|
|
94
|
-
expect(e.getOptionName()).to.equal('stateRepository');
|
|
95
|
-
}
|
|
90
|
+
it('should throw MissingOption if stateRepository is not set - Rust', async () => {
|
|
91
|
+
// not applicable
|
|
96
92
|
});
|
|
97
93
|
|
|
98
|
-
it('should create Document from serialized', async () => {
|
|
94
|
+
it('should create Document from serialized - Rust', async () => {
|
|
99
95
|
const result = await dpp.document.createFromBuffer(document.toBuffer());
|
|
100
96
|
|
|
101
97
|
expect(result).to.be.an.instanceOf(Document);
|
|
@@ -105,42 +101,33 @@ describe('DocumentFacade', () => {
|
|
|
105
101
|
});
|
|
106
102
|
|
|
107
103
|
describe('createStateTransition', () => {
|
|
108
|
-
it('should create DocumentsBatchTransition with passed documents', () => {
|
|
104
|
+
it('should create DocumentsBatchTransition with passed documents - Rust', () => {
|
|
109
105
|
const result = dpp.document.createStateTransition({
|
|
110
106
|
create: documents,
|
|
111
107
|
});
|
|
112
108
|
|
|
113
109
|
expect(result).to.be.instanceOf(DocumentsBatchTransition);
|
|
114
|
-
expect(result.getTransitions()).
|
|
115
|
-
|
|
116
|
-
|
|
110
|
+
expect(result.getTransitions().map((t) => t.toObject()))
|
|
111
|
+
.has.deep.members(getDocumentTransitionsFixture({
|
|
112
|
+
create: documentsJs,
|
|
113
|
+
}).map((t) => t.toObject()));
|
|
117
114
|
});
|
|
118
115
|
});
|
|
119
116
|
|
|
120
117
|
describe('validate', () => {
|
|
121
|
-
it('should throw MissingOption if stateRepository is not set', async () => {
|
|
122
|
-
|
|
123
|
-
await dpp.initialize();
|
|
124
|
-
|
|
125
|
-
try {
|
|
126
|
-
await dpp.document.validate(document);
|
|
127
|
-
|
|
128
|
-
expect.fail('MissingOption should be thrown');
|
|
129
|
-
} catch (e) {
|
|
130
|
-
expect(e).to.be.an.instanceOf(MissingOptionError);
|
|
131
|
-
expect(e.getOptionName()).to.equal('stateRepository');
|
|
132
|
-
}
|
|
118
|
+
it('should throw MissingOption if stateRepository is not set - Rust', async () => {
|
|
119
|
+
// not applicable
|
|
133
120
|
});
|
|
134
121
|
|
|
135
|
-
it('should validate Document', async () => {
|
|
122
|
+
it('should validate Document - Rust', async () => {
|
|
136
123
|
const result = await dpp.document.validate(document);
|
|
137
124
|
|
|
138
125
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
139
126
|
expect(result.isValid()).to.be.true();
|
|
140
127
|
});
|
|
141
128
|
|
|
142
|
-
it('should return invalid result if Data Contract is invalid', async () => {
|
|
143
|
-
stateRepositoryMock.fetchDataContract.
|
|
129
|
+
it('should return invalid result if Data Contract is invalid - Rust', async () => {
|
|
130
|
+
stateRepositoryMock.fetchDataContract.resolves(null);
|
|
144
131
|
|
|
145
132
|
const result = await dpp.document.validate(document);
|
|
146
133
|
|
|
@@ -1,42 +1,64 @@
|
|
|
1
1
|
const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
2
2
|
|
|
3
|
+
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
3
4
|
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
4
5
|
const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
|
|
5
|
-
|
|
6
|
-
const
|
|
6
|
+
|
|
7
|
+
const { default: loadWasmDpp } = require('../../../../../dist');
|
|
8
|
+
|
|
9
|
+
let Document;
|
|
10
|
+
let DataContract;
|
|
11
|
+
let ProtocolVersionValidator;
|
|
12
|
+
let DocumentValidator;
|
|
13
|
+
let DocumentFactory;
|
|
7
14
|
|
|
8
15
|
describe('DocumentBatchTransition', () => {
|
|
9
16
|
let stateTransitionFixture;
|
|
10
17
|
let dataContractFixture;
|
|
11
18
|
let documentsFixture;
|
|
12
19
|
let documentFactory;
|
|
20
|
+
|
|
13
21
|
let mediumSecurityDocumentFixture;
|
|
14
22
|
let masterSecurityDocumentFixture;
|
|
15
23
|
let noSecurityLevelSpecifiedDocumentFixture;
|
|
16
24
|
|
|
17
|
-
beforeEach(()
|
|
18
|
-
|
|
25
|
+
beforeEach(async function beforeEach() {
|
|
26
|
+
({
|
|
27
|
+
Document,
|
|
28
|
+
DataContract,
|
|
29
|
+
ProtocolVersionValidator,
|
|
30
|
+
DocumentFactory,
|
|
31
|
+
DocumentValidator,
|
|
32
|
+
} = await loadWasmDpp());
|
|
33
|
+
const dataContractFixtureJs = getDataContractFixture();
|
|
19
34
|
|
|
20
|
-
|
|
35
|
+
dataContractFixtureJs.documents.niceDocument
|
|
21
36
|
.signatureSecurityLevelRequirement = IdentityPublicKey.SECURITY_LEVELS.MEDIUM;
|
|
22
|
-
|
|
37
|
+
dataContractFixtureJs.documents.prettyDocument
|
|
23
38
|
.signatureSecurityLevelRequirement = IdentityPublicKey.SECURITY_LEVELS.MASTER;
|
|
24
39
|
|
|
40
|
+
dataContractFixture = new DataContract(dataContractFixtureJs.toObject());
|
|
41
|
+
|
|
25
42
|
// 0 is niceDocument,
|
|
26
43
|
// 1 and 2 are pretty documents,
|
|
27
44
|
// 3 and 4 are indexed documents that do not have security level specified
|
|
28
|
-
documentsFixture = getDocumentsFixture(
|
|
45
|
+
documentsFixture = getDocumentsFixture(dataContractFixtureJs).map((doc) => {
|
|
46
|
+
const document = new Document(doc.toObject(), dataContractFixture.clone());
|
|
47
|
+
document.setEntropy(doc.entropy);
|
|
48
|
+
return document;
|
|
49
|
+
});
|
|
50
|
+
|
|
29
51
|
[
|
|
30
|
-
mediumSecurityDocumentFixture
|
|
31
|
-
masterSecurityDocumentFixture
|
|
52
|
+
mediumSecurityDocumentFixture, ,
|
|
53
|
+
masterSecurityDocumentFixture, ,
|
|
32
54
|
noSecurityLevelSpecifiedDocumentFixture,
|
|
33
55
|
] = documentsFixture;
|
|
34
56
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
);
|
|
57
|
+
const protocolValidator = new ProtocolVersionValidator();
|
|
58
|
+
const documentValidator = new DocumentValidator(protocolValidator);
|
|
59
|
+
const stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
60
|
+
|
|
61
|
+
documentFactory = new DocumentFactory(1, documentValidator, stateRepositoryMock);
|
|
40
62
|
|
|
41
63
|
stateTransitionFixture = documentFactory.createStateTransition({
|
|
42
64
|
create: documentsFixture,
|
|
@@ -46,7 +68,7 @@ describe('DocumentBatchTransition', () => {
|
|
|
46
68
|
});
|
|
47
69
|
|
|
48
70
|
describe('#getRequiredKeySecurityLevel', () => {
|
|
49
|
-
it('should return the highest security level of all transitions', () => {
|
|
71
|
+
it('should return the highest security level of all transitions - Rust', () => {
|
|
50
72
|
stateTransitionFixture = documentFactory.createStateTransition({
|
|
51
73
|
create: [mediumSecurityDocumentFixture],
|
|
52
74
|
replace: [],
|
|
@@ -68,7 +90,7 @@ describe('DocumentBatchTransition', () => {
|
|
|
68
90
|
.to.be.equal(IdentityPublicKey.SECURITY_LEVELS.MASTER);
|
|
69
91
|
});
|
|
70
92
|
|
|
71
|
-
it('should return default security level if no document has a security level defined', () => {
|
|
93
|
+
it('should return default security level if no document has a security level defined - Rust', () => {
|
|
72
94
|
stateTransitionFixture = documentFactory.createStateTransition({
|
|
73
95
|
create: [noSecurityLevelSpecifiedDocumentFixture],
|
|
74
96
|
replace: [],
|