@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,36 +1,48 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
1
|
+
const JsDataContractFactory = require('@dashevo/dpp/lib/dataContract/DataContractFactory');
|
|
2
|
+
const JsIdentifier = require('@dashevo/dpp/lib/identifier/Identifier');
|
|
3
|
+
const JsDocument = require('@dashevo/dpp/lib/document/Document');
|
|
5
4
|
const DocumentCreateTransition = require(
|
|
6
5
|
'@dashevo/dpp/lib/document/stateTransition/DocumentsBatchTransition/documentTransition/DocumentCreateTransition',
|
|
7
6
|
);
|
|
8
|
-
|
|
9
|
-
const Identifier = require('@dashevo/dpp/lib/identifier/Identifier');
|
|
10
|
-
|
|
11
7
|
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
12
8
|
const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock');
|
|
9
|
+
const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
|
|
10
|
+
const lodash = require('lodash');
|
|
13
11
|
|
|
14
|
-
const
|
|
12
|
+
const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync');
|
|
13
|
+
const { default: loadWasmDpp } = require('../../../dist');
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
let DataContractFactory;
|
|
16
|
+
let DataContractValidator;
|
|
17
|
+
let Identifier;
|
|
18
|
+
let Document;
|
|
18
19
|
|
|
19
20
|
describe('Document', () => {
|
|
20
|
-
let hashMock;
|
|
21
|
-
let encodeMock;
|
|
22
21
|
let rawDocument;
|
|
23
22
|
let document;
|
|
24
23
|
let dataContract;
|
|
24
|
+
let documentJs;
|
|
25
|
+
let dataContractJs;
|
|
26
|
+
let rawDocumentJs;
|
|
27
|
+
let rawDocumentWithBuffers;
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
// eslint-disable-next-line prefer-arrow-callback
|
|
30
|
+
beforeEach(async function beforeEach() {
|
|
31
|
+
({
|
|
32
|
+
Identifier, Document, DataContractFactory, DataContractValidator,
|
|
33
|
+
} = await loadWasmDpp());
|
|
28
34
|
|
|
29
|
-
const
|
|
35
|
+
const now = new Date().getTime();
|
|
36
|
+
const id = await generateRandomIdentifierAsync();
|
|
37
|
+
const jsId = new JsIdentifier(Buffer.from(id.toBuffer()));
|
|
30
38
|
|
|
31
|
-
const
|
|
39
|
+
const ownerId = await generateRandomIdentifierAsync();
|
|
40
|
+
const jsOwnerId = new JsIdentifier(Buffer.from(ownerId.toBuffer()));
|
|
41
|
+
const jsDataContractFactory = new JsDataContractFactory(createDPPMock(), () => { });
|
|
42
|
+
const dataContractValidator = new DataContractValidator();
|
|
43
|
+
const dataContractFactory = new DataContractFactory(1, dataContractValidator);
|
|
32
44
|
|
|
33
|
-
|
|
45
|
+
const rawDataContract = {
|
|
34
46
|
test: {
|
|
35
47
|
properties: {
|
|
36
48
|
name: {
|
|
@@ -45,7 +57,13 @@ describe('Document', () => {
|
|
|
45
57
|
identifier: {
|
|
46
58
|
type: 'array',
|
|
47
59
|
byteArray: true,
|
|
48
|
-
contentMediaType:
|
|
60
|
+
contentMediaType: JsIdentifier.MEDIA_TYPE,
|
|
61
|
+
minItems: 32,
|
|
62
|
+
maxItems: 32,
|
|
63
|
+
},
|
|
64
|
+
binaryData: {
|
|
65
|
+
type: 'array',
|
|
66
|
+
byteArray: true,
|
|
49
67
|
minItems: 32,
|
|
50
68
|
maxItems: 32,
|
|
51
69
|
},
|
|
@@ -55,11 +73,14 @@ describe('Document', () => {
|
|
|
55
73
|
},
|
|
56
74
|
},
|
|
57
75
|
},
|
|
58
|
-
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
dataContract = dataContractFactory.create(ownerId.clone(), rawDataContract);
|
|
79
|
+
dataContractJs = jsDataContractFactory.create(jsOwnerId, rawDataContract);
|
|
59
80
|
|
|
60
81
|
rawDocument = {
|
|
61
82
|
$protocolVersion: protocolVersion.latestVersion,
|
|
62
|
-
$id:
|
|
83
|
+
$id: id,
|
|
63
84
|
$type: 'test',
|
|
64
85
|
$dataContractId: dataContract.getId(),
|
|
65
86
|
$ownerId: ownerId,
|
|
@@ -68,32 +89,41 @@ describe('Document', () => {
|
|
|
68
89
|
$updatedAt: now,
|
|
69
90
|
};
|
|
70
91
|
|
|
71
|
-
|
|
92
|
+
rawDocumentWithBuffers = {
|
|
93
|
+
$protocolVersion: protocolVersion.latestVersion,
|
|
94
|
+
$id: id.toBuffer(),
|
|
95
|
+
$type: 'test',
|
|
96
|
+
$dataContractId: dataContract.getId().toBuffer(),
|
|
97
|
+
$ownerId: ownerId.toBuffer(),
|
|
98
|
+
$revision: DocumentCreateTransition.INITIAL_REVISION,
|
|
99
|
+
$createdAt: now,
|
|
100
|
+
$updatedAt: now,
|
|
101
|
+
};
|
|
72
102
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
103
|
+
document = new Document(rawDocument, dataContract);
|
|
104
|
+
rawDocumentJs = lodash.cloneDeepWith(rawDocument);
|
|
105
|
+
rawDocumentJs.$id = jsId;
|
|
106
|
+
rawDocumentJs.$ownerId = jsOwnerId;
|
|
76
107
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
108
|
+
rawDocumentJs.$dataContractId = dataContractJs.id;
|
|
109
|
+
documentJs = new JsDocument(rawDocumentJs, dataContractJs);
|
|
110
|
+
documentJs.dataContractId = JsIdentifier.from(Buffer.from(dataContract.getId().toBuffer()));
|
|
80
111
|
});
|
|
81
112
|
|
|
82
113
|
describe('constructor', () => {
|
|
83
|
-
it('should create Document with $id and data if present', () => {
|
|
114
|
+
it('should create Document with $id and data if present', async () => {
|
|
84
115
|
const data = {
|
|
85
116
|
test: 1,
|
|
86
117
|
};
|
|
87
118
|
|
|
88
119
|
rawDocument = {
|
|
89
|
-
$id:
|
|
120
|
+
$id: await generateRandomIdentifierAsync(),
|
|
90
121
|
$type: 'test',
|
|
91
122
|
...data,
|
|
92
123
|
};
|
|
93
124
|
|
|
94
125
|
document = new Document(rawDocument, dataContract);
|
|
95
|
-
|
|
96
|
-
expect(document.id).to.deep.equal(rawDocument.$id);
|
|
126
|
+
expect(document.getId().toBuffer()).to.deep.equal(rawDocument.$id.toBuffer());
|
|
97
127
|
});
|
|
98
128
|
|
|
99
129
|
it('should create Document with $type and data if present', () => {
|
|
@@ -108,39 +138,40 @@ describe('Document', () => {
|
|
|
108
138
|
|
|
109
139
|
document = new Document(rawDocument, dataContract);
|
|
110
140
|
|
|
111
|
-
expect(document.
|
|
141
|
+
expect(document.getType()).to.equal(rawDocument.$type);
|
|
112
142
|
});
|
|
113
143
|
|
|
114
|
-
it('should create Document with $dataContractId and data if present', () => {
|
|
144
|
+
it('should create Document with $dataContractId and data if present', async () => {
|
|
115
145
|
const data = {
|
|
116
146
|
test: 1,
|
|
117
147
|
};
|
|
118
148
|
|
|
119
149
|
rawDocument = {
|
|
120
|
-
$dataContractId:
|
|
150
|
+
$dataContractId: await generateRandomIdentifierAsync(),
|
|
121
151
|
$type: 'test',
|
|
122
152
|
...data,
|
|
123
153
|
};
|
|
124
154
|
|
|
125
155
|
document = new Document(rawDocument, dataContract);
|
|
126
156
|
|
|
127
|
-
expect(document.
|
|
157
|
+
expect(document.getDataContractId().toBuffer())
|
|
158
|
+
.to.deep.equal(rawDocument.$dataContractId.toBuffer());
|
|
128
159
|
});
|
|
129
160
|
|
|
130
|
-
it('should create Document with $ownerId and data if present', () => {
|
|
161
|
+
it('should create Document with $ownerId and data if present', async () => {
|
|
131
162
|
const data = {
|
|
132
163
|
test: 1,
|
|
133
164
|
};
|
|
134
165
|
|
|
135
166
|
rawDocument = {
|
|
136
|
-
$ownerId:
|
|
167
|
+
$ownerId: await generateRandomIdentifierAsync(),
|
|
137
168
|
$type: 'test',
|
|
138
169
|
...data,
|
|
139
170
|
};
|
|
140
171
|
|
|
141
172
|
document = new Document(rawDocument, dataContract);
|
|
142
173
|
|
|
143
|
-
expect(document.
|
|
174
|
+
expect(document.getOwnerId().toBuffer()).to.deep.equal(rawDocument.$ownerId.toBuffer());
|
|
144
175
|
});
|
|
145
176
|
|
|
146
177
|
it('should create Document with undefined action and data if present', () => {
|
|
@@ -154,8 +185,7 @@ describe('Document', () => {
|
|
|
154
185
|
};
|
|
155
186
|
|
|
156
187
|
document = new Document(rawDocument, dataContract);
|
|
157
|
-
|
|
158
|
-
expect(document.action).to.equal(undefined);
|
|
188
|
+
expect(document.get('action')).to.equal(undefined);
|
|
159
189
|
});
|
|
160
190
|
|
|
161
191
|
it('should create Document with $revision and data if present', () => {
|
|
@@ -164,14 +194,14 @@ describe('Document', () => {
|
|
|
164
194
|
};
|
|
165
195
|
|
|
166
196
|
rawDocument = {
|
|
167
|
-
$revision:
|
|
197
|
+
$revision: 123,
|
|
168
198
|
$type: 'test',
|
|
169
199
|
...data,
|
|
170
200
|
};
|
|
171
201
|
|
|
172
202
|
document = new Document(rawDocument, dataContract);
|
|
173
203
|
|
|
174
|
-
expect(document.
|
|
204
|
+
expect(document.getRevision()).to.equal(rawDocument.$revision);
|
|
175
205
|
});
|
|
176
206
|
|
|
177
207
|
it('should create Document with $createdAt and data if present', async () => {
|
|
@@ -189,7 +219,7 @@ describe('Document', () => {
|
|
|
189
219
|
|
|
190
220
|
document = new Document(rawDocument, dataContract);
|
|
191
221
|
|
|
192
|
-
expect(document.getCreatedAt()
|
|
222
|
+
expect(document.getCreatedAt()).to.equal(rawDocument.$createdAt);
|
|
193
223
|
});
|
|
194
224
|
|
|
195
225
|
it('should create Document with $updatedAt and data if present', async () => {
|
|
@@ -207,21 +237,19 @@ describe('Document', () => {
|
|
|
207
237
|
|
|
208
238
|
document = new Document(rawDocument, dataContract);
|
|
209
239
|
|
|
210
|
-
expect(document.getUpdatedAt()
|
|
240
|
+
expect(document.getUpdatedAt()).to.equal(rawDocument.$updatedAt);
|
|
211
241
|
});
|
|
212
242
|
});
|
|
213
243
|
|
|
214
244
|
describe('#getId', () => {
|
|
215
|
-
it('should return ID', () => {
|
|
216
|
-
const id =
|
|
245
|
+
it('should return ID', async () => {
|
|
246
|
+
const id = await generateRandomIdentifierAsync();
|
|
217
247
|
|
|
218
|
-
document.id
|
|
248
|
+
document.setId(id.clone());
|
|
219
249
|
|
|
220
250
|
const actualId = document.getId();
|
|
221
251
|
|
|
222
|
-
expect(
|
|
223
|
-
|
|
224
|
-
expect(id).to.equal(actualId);
|
|
252
|
+
expect(id.toBuffer()).to.deep.equal(actualId.toBuffer());
|
|
225
253
|
});
|
|
226
254
|
});
|
|
227
255
|
|
|
@@ -233,61 +261,36 @@ describe('Document', () => {
|
|
|
233
261
|
|
|
234
262
|
describe('#getOwnerId', () => {
|
|
235
263
|
it('should return $ownerId', () => {
|
|
236
|
-
expect(document.getOwnerId()).to.deep.equal(rawDocument.$ownerId);
|
|
264
|
+
expect(document.getOwnerId().toBuffer()).to.deep.equal(rawDocument.$ownerId.toBuffer());
|
|
237
265
|
});
|
|
238
266
|
});
|
|
239
267
|
|
|
240
268
|
describe('#getDataContractId', () => {
|
|
241
269
|
it('should return $dataContractId', () => {
|
|
242
|
-
expect(document.getOwnerId()).to.deep.equal(rawDocument.$ownerId);
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
describe('#setRevision', () => {
|
|
247
|
-
it('should set $revision', () => {
|
|
248
|
-
const revision = 5;
|
|
249
|
-
|
|
250
|
-
const result = document.setRevision(revision);
|
|
251
|
-
|
|
252
|
-
expect(result).to.equal(document);
|
|
253
|
-
|
|
254
|
-
expect(document.revision).to.equal(revision);
|
|
270
|
+
expect(document.getOwnerId().toBuffer()).to.deep.equal(rawDocument.$ownerId.toBuffer());
|
|
255
271
|
});
|
|
256
272
|
});
|
|
257
273
|
|
|
258
|
-
describe('#getRevision', () => {
|
|
259
|
-
it('should
|
|
274
|
+
describe('#setRevision/#getRevision', () => {
|
|
275
|
+
it('should set $revision and get $revision', () => {
|
|
260
276
|
const revision = 5;
|
|
261
277
|
|
|
262
|
-
document.revision
|
|
278
|
+
document.setRevision(revision);
|
|
263
279
|
|
|
264
280
|
expect(document.getRevision()).to.equal(revision);
|
|
265
281
|
});
|
|
266
282
|
});
|
|
267
283
|
|
|
268
|
-
describe('#setData', () => {
|
|
269
|
-
it('should call set for each document property', () => {
|
|
284
|
+
describe('#setData/#getDAta', () => {
|
|
285
|
+
it('should call set and get for each document property', () => {
|
|
270
286
|
const data = {
|
|
271
287
|
test1: 1,
|
|
272
288
|
test2: 2,
|
|
273
289
|
};
|
|
274
290
|
|
|
275
|
-
|
|
291
|
+
document.setData(data);
|
|
276
292
|
|
|
277
|
-
expect(
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
describe('#getData', () => {
|
|
282
|
-
it('should return all data', () => {
|
|
283
|
-
const data = {
|
|
284
|
-
test1: 1,
|
|
285
|
-
test2: 2,
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
document.data = data;
|
|
289
|
-
|
|
290
|
-
expect(document.getData()).to.equal(data);
|
|
293
|
+
expect(document.getData()).to.deep.equal(data);
|
|
291
294
|
});
|
|
292
295
|
});
|
|
293
296
|
|
|
@@ -296,41 +299,31 @@ describe('Document', () => {
|
|
|
296
299
|
const path = 'test[0].$my';
|
|
297
300
|
const value = 2;
|
|
298
301
|
|
|
299
|
-
|
|
302
|
+
document.set(path, value);
|
|
300
303
|
|
|
301
|
-
expect(
|
|
304
|
+
expect(document.get(path)).to.deep.equal(2);
|
|
302
305
|
});
|
|
303
306
|
|
|
304
307
|
it('should set identifier', () => {
|
|
305
308
|
const path = 'dataObject.binaryObject.identifier';
|
|
306
309
|
const buffer = Buffer.alloc(32);
|
|
310
|
+
const identifier = new Identifier(buffer);
|
|
307
311
|
|
|
308
|
-
|
|
312
|
+
document.set(path, identifier);
|
|
309
313
|
|
|
310
|
-
expect(
|
|
314
|
+
expect(document.get(path).toBuffer()).to.deep.equal(buffer);
|
|
311
315
|
});
|
|
312
316
|
|
|
313
317
|
it('should set identifier as part of object', () => {
|
|
314
318
|
const buffer = Buffer.alloc(32, 'a');
|
|
315
319
|
const path = 'dataObject.binaryObject';
|
|
316
|
-
const
|
|
320
|
+
const identifierPath = 'dataObject.binaryObject.identifier';
|
|
321
|
+
const identifier = new Identifier(buffer);
|
|
322
|
+
const value = { identifier };
|
|
317
323
|
|
|
318
|
-
|
|
324
|
+
document.set(path, value);
|
|
319
325
|
|
|
320
|
-
expect(
|
|
321
|
-
});
|
|
322
|
-
});
|
|
323
|
-
|
|
324
|
-
describe('#get', () => {
|
|
325
|
-
it('should return value for specified property name', () => {
|
|
326
|
-
const path = 'dataObject.binaryObject.identifier';
|
|
327
|
-
const buffer = Buffer.alloc(32);
|
|
328
|
-
|
|
329
|
-
document.set(path, buffer);
|
|
330
|
-
|
|
331
|
-
const result = document.get(path);
|
|
332
|
-
|
|
333
|
-
expect(result).to.deep.equal(buffer);
|
|
326
|
+
expect(document.get(identifierPath).toBuffer()).to.deep.equal(buffer);
|
|
334
327
|
});
|
|
335
328
|
});
|
|
336
329
|
|
|
@@ -338,83 +331,84 @@ describe('Document', () => {
|
|
|
338
331
|
it('should return Document as plain JS object', () => {
|
|
339
332
|
const jsonDocument = {
|
|
340
333
|
...rawDocument,
|
|
341
|
-
$dataContractId: document.
|
|
342
|
-
$id: document.
|
|
343
|
-
$ownerId: document.
|
|
334
|
+
$dataContractId: document.getDataContractId().toString(),
|
|
335
|
+
$id: document.getId().toString(),
|
|
336
|
+
$ownerId: document.getOwnerId().toString(),
|
|
344
337
|
};
|
|
345
338
|
|
|
346
339
|
expect(document.toJSON()).to.deep.equal(jsonDocument);
|
|
347
340
|
});
|
|
348
341
|
});
|
|
349
342
|
|
|
350
|
-
describe('#
|
|
351
|
-
it('should return
|
|
352
|
-
const
|
|
353
|
-
|
|
354
|
-
encodeMock.returns(serializedDocument);
|
|
355
|
-
|
|
356
|
-
const result = document.toBuffer();
|
|
357
|
-
|
|
358
|
-
const protocolVersionUInt32 = Buffer.alloc(4);
|
|
359
|
-
protocolVersionUInt32.writeUInt32LE(rawDocument.$protocolVersion, 0);
|
|
360
|
-
|
|
361
|
-
expect(result).to.deep.equal(Buffer.concat([protocolVersionUInt32, serializedDocument]));
|
|
362
|
-
|
|
363
|
-
const documentToEncode = { ...rawDocument };
|
|
364
|
-
delete documentToEncode.$protocolVersion;
|
|
343
|
+
describe('#toObject', () => {
|
|
344
|
+
it('should return Document as object', () => {
|
|
345
|
+
const result = document.toObject();
|
|
365
346
|
|
|
366
|
-
expect(
|
|
367
|
-
documentToEncode,
|
|
368
|
-
]);
|
|
347
|
+
expect(rawDocumentWithBuffers).to.deep.equal(result);
|
|
369
348
|
});
|
|
370
349
|
});
|
|
371
350
|
|
|
372
|
-
describe('#
|
|
373
|
-
|
|
351
|
+
describe('#toBuffer', () => {
|
|
352
|
+
it('returned bytes should be the same as JS version', () => {
|
|
353
|
+
const jsBuffer = documentJs.toBuffer();
|
|
354
|
+
const buffer = document.toBuffer();
|
|
374
355
|
|
|
375
|
-
|
|
376
|
-
|
|
356
|
+
expect(jsBuffer.length).to.equal(buffer.length);
|
|
357
|
+
expect(jsBuffer).to.deep.equal(buffer);
|
|
377
358
|
});
|
|
378
359
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
360
|
+
it('should return the same bytes as JS version when dynamic identifier is in Document', () => {
|
|
361
|
+
const jsId = generateRandomIdentifier();
|
|
362
|
+
const id = new Identifier(jsId.toBuffer());
|
|
363
|
+
const path = 'dataObject.binaryObject.identifier';
|
|
382
364
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
const hashedDocument = '456';
|
|
365
|
+
documentJs.set(path, jsId);
|
|
366
|
+
document.set(path, id);
|
|
386
367
|
|
|
387
|
-
|
|
368
|
+
expect(documentJs.get(path).toBuffer()).to.deep.equal(jsId);
|
|
369
|
+
expect(document.get(path).toBuffer()).to.deep.equal(jsId.toBuffer());
|
|
388
370
|
|
|
389
|
-
|
|
371
|
+
const jsBuffer = documentJs.toBuffer();
|
|
372
|
+
const buffer = document.toBuffer();
|
|
373
|
+
expect(jsBuffer).to.deep.equal(buffer);
|
|
374
|
+
});
|
|
390
375
|
|
|
391
|
-
|
|
376
|
+
it('should return the same bytes as JS version when dynamic binaryData is in Document', () => {
|
|
377
|
+
const data = Buffer.alloc(32);
|
|
378
|
+
const path = 'dataObject.binaryObject.binaryData';
|
|
392
379
|
|
|
393
|
-
|
|
380
|
+
documentJs.set(path, data);
|
|
381
|
+
document.set(path, data);
|
|
394
382
|
|
|
395
|
-
|
|
383
|
+
const jsBuffer = documentJs.toBuffer();
|
|
384
|
+
const buffer = document.toBuffer();
|
|
396
385
|
|
|
397
|
-
expect(
|
|
386
|
+
expect(jsBuffer.length).to.equal(buffer.length);
|
|
387
|
+
expect(jsBuffer).to.deep.equal(buffer);
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
describe('#hash', () => {
|
|
392
|
+
it('returned hash should be the same as JS version', () => {
|
|
393
|
+
expect(documentJs.hash()).to.deep.equal(document.hash());
|
|
398
394
|
});
|
|
399
395
|
});
|
|
400
396
|
|
|
401
397
|
describe('#setCreatedAt', () => {
|
|
402
398
|
it('should set $createdAt', () => {
|
|
403
|
-
const time = new Date();
|
|
399
|
+
const time = new Date().getTime();
|
|
404
400
|
|
|
405
|
-
|
|
401
|
+
document.setCreatedAt(time);
|
|
406
402
|
|
|
407
|
-
expect(
|
|
408
|
-
|
|
409
|
-
expect(document.createdAt).to.equal(time);
|
|
403
|
+
expect(document.getCreatedAt()).to.equal(time);
|
|
410
404
|
});
|
|
411
405
|
});
|
|
412
406
|
|
|
413
407
|
describe('#getCreatedAt', () => {
|
|
414
408
|
it('should return $createdAt', () => {
|
|
415
|
-
const time = new Date();
|
|
409
|
+
const time = new Date().getTime();
|
|
416
410
|
|
|
417
|
-
document.
|
|
411
|
+
document.setCreatedAt(time);
|
|
418
412
|
|
|
419
413
|
expect(document.getCreatedAt()).to.equal(time);
|
|
420
414
|
});
|
|
@@ -422,21 +416,19 @@ describe('Document', () => {
|
|
|
422
416
|
|
|
423
417
|
describe('#setUpdatedAt', () => {
|
|
424
418
|
it('should set $updatedAt', () => {
|
|
425
|
-
const time = new Date();
|
|
419
|
+
const time = new Date().getTime();
|
|
426
420
|
|
|
427
|
-
|
|
421
|
+
document.setUpdatedAt(time);
|
|
428
422
|
|
|
429
|
-
expect(
|
|
430
|
-
|
|
431
|
-
expect(document.updatedAt).to.equal(time);
|
|
423
|
+
expect(document.getUpdatedAt()).to.equal(time);
|
|
432
424
|
});
|
|
433
425
|
});
|
|
434
426
|
|
|
435
427
|
describe('#getUpdatedAt', () => {
|
|
436
428
|
it('should return $updatedAt', () => {
|
|
437
|
-
const time = new Date();
|
|
429
|
+
const time = new Date().getTime();
|
|
438
430
|
|
|
439
|
-
document.
|
|
431
|
+
document.setUpdatedAt(time);
|
|
440
432
|
|
|
441
433
|
expect(document.getUpdatedAt()).to.equal(time);
|
|
442
434
|
});
|