@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,52 +1,58 @@
|
|
|
1
|
-
const { PublicKey } = require('@dashevo/dashcore-lib');
|
|
2
|
-
const Identity = require('@dashevo/dpp/lib/identity/Identity');
|
|
3
|
-
const IdentityCreateTransition = require('@dashevo/dpp/lib/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition');
|
|
4
|
-
const IdentityTopUpTransition = require('@dashevo/dpp/lib/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition');
|
|
5
|
-
|
|
6
1
|
const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
|
|
7
|
-
|
|
8
|
-
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
9
|
-
const SerializedObjectParsingError = require('@dashevo/dpp/lib/errors/consensus/basic/decode/SerializedObjectParsingError');
|
|
10
|
-
|
|
11
|
-
const InvalidIdentityError = require(
|
|
12
|
-
'@dashevo/dpp/lib/identity/errors/InvalidIdentityError',
|
|
13
|
-
);
|
|
14
2
|
const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture');
|
|
15
|
-
const InstantAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/instant/InstantAssetLockProof');
|
|
16
3
|
const getChainAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
|
|
17
|
-
const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock');
|
|
18
|
-
const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
|
|
19
|
-
const IdentityFactory = require('@dashevo/dpp/lib/identity/IdentityFactory');
|
|
20
|
-
const IdentityUpdateTransition = require('@dashevo/dpp/lib/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition');
|
|
21
4
|
const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
5
|
+
const { default: loadWasmDpp } = require('../../../dist');
|
|
6
|
+
const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
|
|
22
7
|
|
|
23
8
|
describe('IdentityFactory', () => {
|
|
24
9
|
let factory;
|
|
25
|
-
let validateIdentityMock;
|
|
26
|
-
let decodeProtocolEntityMock;
|
|
27
10
|
let identity;
|
|
28
11
|
let instantAssetLockProof;
|
|
29
12
|
let chainAssetLockProof;
|
|
30
|
-
let dppMock;
|
|
31
13
|
let fakeTime;
|
|
32
14
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
15
|
+
let Identity;
|
|
16
|
+
let IdentityFactory;
|
|
17
|
+
let IdentityValidator;
|
|
18
|
+
let InstantAssetLockProof;
|
|
19
|
+
let IdentityCreateTransition;
|
|
20
|
+
let IdentityTopUpTransition;
|
|
21
|
+
let IdentityUpdateTransition;
|
|
22
|
+
let IdentityPublicKeyCreateTransition;
|
|
23
|
+
let InvalidIdentityError;
|
|
24
|
+
let SerializedObjectParsingError;
|
|
25
|
+
let UnsupportedProtocolVersionError;
|
|
26
|
+
let ChainAssetLockProof;
|
|
27
|
+
|
|
28
|
+
before(async () => {
|
|
29
|
+
({
|
|
30
|
+
Identity, IdentityFactory, IdentityValidator,
|
|
31
|
+
InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
|
|
32
|
+
IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyCreateTransition,
|
|
33
|
+
InvalidIdentityError, UnsupportedProtocolVersionError, SerializedObjectParsingError,
|
|
34
|
+
} = await loadWasmDpp());
|
|
35
|
+
});
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
beforeEach(async function () {
|
|
38
|
+
const instantAssetLockProofJS = getInstantAssetLockProofFixture();
|
|
39
|
+
const chainAssetLockProofJS = getChainAssetLockProofFixture();
|
|
40
|
+
instantAssetLockProof = new InstantAssetLockProof(instantAssetLockProofJS.toObject());
|
|
41
|
+
chainAssetLockProof = new ChainAssetLockProof(chainAssetLockProofJS.toObject());
|
|
39
42
|
|
|
40
|
-
|
|
43
|
+
const blsAdapter = await getBlsAdapterMock();
|
|
44
|
+
|
|
45
|
+
const identityValidator = new IdentityValidator(blsAdapter);
|
|
41
46
|
|
|
42
47
|
factory = new IdentityFactory(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
decodeProtocolEntityMock,
|
|
48
|
+
1,
|
|
49
|
+
identityValidator,
|
|
46
50
|
);
|
|
47
51
|
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
const identityObject = getIdentityFixture().toObject();
|
|
53
|
+
identityObject.id = instantAssetLockProof.createIdentifier();
|
|
54
|
+
|
|
55
|
+
identity = new Identity(identityObject);
|
|
50
56
|
identity.setAssetLockProof(instantAssetLockProof);
|
|
51
57
|
identity.setBalance(0);
|
|
52
58
|
|
|
@@ -57,19 +63,12 @@ describe('IdentityFactory', () => {
|
|
|
57
63
|
fakeTime.reset();
|
|
58
64
|
});
|
|
59
65
|
|
|
60
|
-
describe('#constructor', () => {
|
|
61
|
-
it('should set validator', () => {
|
|
62
|
-
expect(factory.validateIdentity).to.equal(validateIdentityMock);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
|
|
66
66
|
describe('#create', () => {
|
|
67
67
|
it('should create Identity from asset lock transaction, output index, proof and public keys', () => {
|
|
68
68
|
const publicKeys = identity
|
|
69
69
|
.getPublicKeys()
|
|
70
70
|
.map((identityPublicKey) => ({
|
|
71
71
|
...identityPublicKey.toObject(),
|
|
72
|
-
key: new PublicKey(identityPublicKey.getData()),
|
|
73
72
|
readonly: true,
|
|
74
73
|
}));
|
|
75
74
|
|
|
@@ -85,30 +84,28 @@ describe('IdentityFactory', () => {
|
|
|
85
84
|
|
|
86
85
|
describe('#createFromObject', () => {
|
|
87
86
|
it('should skip validation if options is set', () => {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
const identityObject = identity.toObject();
|
|
88
|
+
identityObject.protocolVersion = 100;
|
|
89
|
+
const result = factory.createFromObject(identityObject, { skipValidation: true });
|
|
90
|
+
expect(result).to.exist();
|
|
91
91
|
});
|
|
92
92
|
|
|
93
93
|
it('should throw an error if validation have failed', () => {
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
validateIdentityMock.returns(new ValidationResult(errors));
|
|
94
|
+
const identityObject = identity.toObject();
|
|
95
|
+
identityObject.protocolVersion = 3;
|
|
97
96
|
|
|
98
97
|
try {
|
|
99
|
-
factory.createFromObject(
|
|
98
|
+
factory.createFromObject(identityObject);
|
|
100
99
|
|
|
101
100
|
expect.fail('error was not thrown');
|
|
102
101
|
} catch (e) {
|
|
103
102
|
expect(e).to.be.an.instanceOf(InvalidIdentityError);
|
|
104
|
-
expect(e.getErrors()).to.
|
|
105
|
-
expect(e.getRawIdentity()).to.deep.equal(
|
|
103
|
+
expect(e.getErrors()[0]).to.be.instanceOf(UnsupportedProtocolVersionError);
|
|
104
|
+
expect(e.getRawIdentity()).to.deep.equal(identityObject);
|
|
106
105
|
}
|
|
107
106
|
});
|
|
108
107
|
|
|
109
108
|
it('should create an identity if validation passed', () => {
|
|
110
|
-
validateIdentityMock.returns(new ValidationResult());
|
|
111
|
-
|
|
112
109
|
const result = factory.createFromObject(identity.toObject());
|
|
113
110
|
|
|
114
111
|
expect(result).to.be.an.instanceOf(Identity);
|
|
@@ -120,42 +117,20 @@ describe('IdentityFactory', () => {
|
|
|
120
117
|
let serializedIdentity;
|
|
121
118
|
let rawIdentity;
|
|
122
119
|
|
|
123
|
-
beforeEach(
|
|
124
|
-
this.sinonSandbox.stub(factory, 'createFromObject');
|
|
125
|
-
|
|
120
|
+
beforeEach(() => {
|
|
126
121
|
serializedIdentity = identity.toBuffer();
|
|
127
122
|
rawIdentity = identity.toObject();
|
|
128
123
|
});
|
|
129
124
|
|
|
130
|
-
afterEach(() => {
|
|
131
|
-
factory.createFromObject.restore();
|
|
132
|
-
});
|
|
133
|
-
|
|
134
125
|
it('should return new Identity from serialized one', () => {
|
|
135
|
-
decodeProtocolEntityMock.returns([rawIdentity.protocolVersion, rawIdentity]);
|
|
136
|
-
|
|
137
|
-
factory.createFromObject.returns(identity);
|
|
138
|
-
|
|
139
126
|
const result = factory.createFromBuffer(serializedIdentity);
|
|
140
|
-
|
|
141
|
-
expect(result).to.equal(identity);
|
|
142
|
-
|
|
143
|
-
expect(factory.createFromObject).to.have.been.calledOnceWith(rawIdentity);
|
|
144
|
-
|
|
145
|
-
expect(decodeProtocolEntityMock).to.have.been.calledOnceWithExactly(
|
|
146
|
-
serializedIdentity,
|
|
147
|
-
);
|
|
127
|
+
expect(result.toObject()).to.deep.equal(rawIdentity);
|
|
148
128
|
});
|
|
149
129
|
|
|
150
130
|
it('should throw InvalidIdentityError if the decoding fails with consensus error', () => {
|
|
151
|
-
const parsingError = new SerializedObjectParsingError(
|
|
152
|
-
serializedIdentity,
|
|
153
|
-
new Error(),
|
|
154
|
-
);
|
|
155
|
-
|
|
156
|
-
decodeProtocolEntityMock.throws(parsingError);
|
|
157
|
-
|
|
158
131
|
try {
|
|
132
|
+
// Mess up protocol version
|
|
133
|
+
serializedIdentity[0] = 3;
|
|
159
134
|
factory.createFromBuffer(serializedIdentity);
|
|
160
135
|
|
|
161
136
|
expect.fail('should throw InvalidIdentityError');
|
|
@@ -163,21 +138,18 @@ describe('IdentityFactory', () => {
|
|
|
163
138
|
expect(e).to.be.an.instanceOf(InvalidIdentityError);
|
|
164
139
|
|
|
165
140
|
const [innerError] = e.getErrors();
|
|
166
|
-
expect(innerError).to.
|
|
141
|
+
expect(innerError).to.be.instanceOf(UnsupportedProtocolVersionError);
|
|
167
142
|
}
|
|
168
143
|
});
|
|
169
144
|
|
|
170
145
|
it('should throw an error if decoding fails with any other error', () => {
|
|
171
|
-
const parsingError = new Error('Something failed during parsing');
|
|
172
|
-
|
|
173
|
-
decodeProtocolEntityMock.throws(parsingError);
|
|
174
|
-
|
|
175
146
|
try {
|
|
147
|
+
serializedIdentity = serializedIdentity.slice(4);
|
|
176
148
|
factory.createFromBuffer(serializedIdentity);
|
|
177
149
|
|
|
178
150
|
expect.fail('should throw an error');
|
|
179
151
|
} catch (e) {
|
|
180
|
-
expect(e).to.
|
|
152
|
+
expect(e).to.be.instanceOf(SerializedObjectParsingError);
|
|
181
153
|
}
|
|
182
154
|
});
|
|
183
155
|
});
|
|
@@ -204,7 +176,15 @@ describe('IdentityFactory', () => {
|
|
|
204
176
|
const stateTransition = factory.createIdentityCreateTransition(identity);
|
|
205
177
|
|
|
206
178
|
expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
|
|
207
|
-
|
|
179
|
+
const keysToExpect = stateTransition.getPublicKeys()
|
|
180
|
+
.map((key) => {
|
|
181
|
+
const keyObject = key.toObject();
|
|
182
|
+
delete keyObject.signature;
|
|
183
|
+
return keyObject;
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
expect(keysToExpect)
|
|
187
|
+
.to.deep.equal(identity.getPublicKeys().map((key) => key.toObject()));
|
|
208
188
|
expect(stateTransition.getAssetLockProof().toObject())
|
|
209
189
|
.to.deep.equal(instantAssetLockProof.toObject());
|
|
210
190
|
});
|
|
@@ -212,15 +192,25 @@ describe('IdentityFactory', () => {
|
|
|
212
192
|
|
|
213
193
|
describe('createChainAssetLockProof', () => {
|
|
214
194
|
it('should create IdentityCreateTransition from Identity model', () => {
|
|
215
|
-
|
|
216
|
-
|
|
195
|
+
const identityObject = getIdentityFixture().toObject();
|
|
196
|
+
identityObject.id = chainAssetLockProof.createIdentifier();
|
|
197
|
+
identity = new Identity(identityObject);
|
|
217
198
|
identity.setAssetLockProof(chainAssetLockProof);
|
|
218
199
|
identity.setBalance(0);
|
|
219
200
|
|
|
220
201
|
const stateTransition = factory.createIdentityCreateTransition(identity);
|
|
221
202
|
|
|
222
203
|
expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
|
|
223
|
-
|
|
204
|
+
const keysToExpect = stateTransition.getPublicKeys()
|
|
205
|
+
.map((key) => {
|
|
206
|
+
const keyObject = key.toObject();
|
|
207
|
+
delete keyObject.signature;
|
|
208
|
+
return keyObject;
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
expect(keysToExpect)
|
|
212
|
+
.to.deep.equal(identity.getPublicKeys().map((key) => key.toObject()));
|
|
213
|
+
|
|
224
214
|
expect(stateTransition.getAssetLockProof().toObject())
|
|
225
215
|
.to.deep.equal(chainAssetLockProof.toObject());
|
|
226
216
|
});
|
|
@@ -235,7 +225,7 @@ describe('IdentityFactory', () => {
|
|
|
235
225
|
);
|
|
236
226
|
|
|
237
227
|
expect(stateTransition).to.be.instanceOf(IdentityTopUpTransition);
|
|
238
|
-
expect(stateTransition.getIdentityId()).to.deep.equal(identity.getId());
|
|
228
|
+
expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(identity.getId().toBuffer());
|
|
239
229
|
expect(stateTransition.getAssetLockProof().toObject())
|
|
240
230
|
.to.deep.equal(instantAssetLockProof.toObject());
|
|
241
231
|
});
|
|
@@ -245,13 +235,14 @@ describe('IdentityFactory', () => {
|
|
|
245
235
|
it('should create IdentityUpdateTransition', () => {
|
|
246
236
|
const revision = 1;
|
|
247
237
|
const disablePublicKeys = [identity.getPublicKeyById(0)];
|
|
248
|
-
const addPublicKeys = [new
|
|
238
|
+
const addPublicKeys = [new IdentityPublicKeyCreateTransition({
|
|
249
239
|
id: 0,
|
|
250
240
|
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
251
241
|
data: Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'),
|
|
252
242
|
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
253
243
|
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
254
244
|
readOnly: false,
|
|
245
|
+
signature: Buffer.alloc(0),
|
|
255
246
|
})];
|
|
256
247
|
|
|
257
248
|
const stateTransition = factory
|
|
@@ -264,9 +255,10 @@ describe('IdentityFactory', () => {
|
|
|
264
255
|
);
|
|
265
256
|
|
|
266
257
|
expect(stateTransition).to.be.instanceOf(IdentityUpdateTransition);
|
|
267
|
-
expect(stateTransition.getIdentityId()).to.deep.equal(identity.getId());
|
|
258
|
+
expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(identity.getId().toBuffer());
|
|
268
259
|
expect(stateTransition.getRevision()).to.deep.equal(revision);
|
|
269
|
-
expect(stateTransition.getPublicKeysToAdd()).
|
|
260
|
+
expect(stateTransition.getPublicKeysToAdd().map((key) => key.toObject()))
|
|
261
|
+
.to.deep.equal(addPublicKeys.map((key) => key.toObject()));
|
|
270
262
|
expect(stateTransition.getPublicKeyIdsToDisable()).to.deep.equal([0]);
|
|
271
263
|
expect(stateTransition.getPublicKeysDisabledAt()).to.deep.equal(new Date());
|
|
272
264
|
});
|
package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js
CHANGED
|
@@ -1,35 +1,69 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
const stateTransitionTypes = require(
|
|
4
|
-
'@dashevo/dpp/lib/stateTransition/stateTransitionTypes',
|
|
5
|
-
);
|
|
1
|
+
const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
|
|
2
|
+
const getChainAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
|
|
6
3
|
|
|
4
|
+
const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
|
|
7
5
|
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
8
|
-
const
|
|
9
|
-
const Identifier = require('@dashevo/dpp/lib/identifier/Identifier');
|
|
10
|
-
|
|
11
|
-
const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
|
|
12
|
-
const InstantAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/instant/InstantAssetLockProof');
|
|
6
|
+
const { default: loadWasmDpp } = require('../../../../../dist');
|
|
13
7
|
|
|
14
8
|
describe('IdentityCreateTransition', () => {
|
|
15
9
|
let rawStateTransition;
|
|
16
10
|
let stateTransition;
|
|
17
11
|
|
|
12
|
+
let IdentityCreateTransition;
|
|
13
|
+
let InstantAssetLockProof;
|
|
14
|
+
let KeyType;
|
|
15
|
+
let KeyPurpose;
|
|
16
|
+
let KeySecurityLevel;
|
|
17
|
+
let Identifier;
|
|
18
|
+
let IdentityPublicKeyCreateTransition;
|
|
19
|
+
|
|
20
|
+
const mockRawPublicKey = (params = {}) => ({
|
|
21
|
+
id: 0,
|
|
22
|
+
type: KeyType.ECDSA_SECP256K1,
|
|
23
|
+
data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
|
|
24
|
+
purpose: KeyPurpose.AUTHENTICATION,
|
|
25
|
+
securityLevel: KeySecurityLevel.MASTER,
|
|
26
|
+
signature: Buffer.alloc(32).fill(1),
|
|
27
|
+
readOnly: false,
|
|
28
|
+
...params,
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
before(async () => {
|
|
32
|
+
({
|
|
33
|
+
IdentityCreateTransition,
|
|
34
|
+
IdentityPublicKeyCreateTransition,
|
|
35
|
+
KeyType,
|
|
36
|
+
KeyPurpose,
|
|
37
|
+
KeySecurityLevel,
|
|
38
|
+
InstantAssetLockProof, Identifier,
|
|
39
|
+
} = await loadWasmDpp());
|
|
40
|
+
});
|
|
41
|
+
|
|
18
42
|
beforeEach(() => {
|
|
19
|
-
|
|
20
|
-
|
|
43
|
+
rawStateTransition = getIdentityCreateTransitionFixture().toObject();
|
|
44
|
+
stateTransition = new IdentityCreateTransition(
|
|
45
|
+
rawStateTransition,
|
|
46
|
+
);
|
|
21
47
|
});
|
|
22
48
|
|
|
23
49
|
describe('#constructor', () => {
|
|
24
|
-
it('should create
|
|
50
|
+
it('should create instance with specified data', () => {
|
|
25
51
|
expect(stateTransition.getAssetLockProof().toObject()).to.deep.equal(
|
|
26
52
|
rawStateTransition.assetLockProof,
|
|
27
53
|
);
|
|
28
54
|
|
|
29
|
-
expect(stateTransition.publicKeys).to.deep.equal([
|
|
30
|
-
new
|
|
55
|
+
expect(stateTransition.publicKeys.map((key) => key.toObject())).to.deep.equal([
|
|
56
|
+
new IdentityPublicKeyCreateTransition(rawStateTransition.publicKeys[0]).toObject(),
|
|
31
57
|
]);
|
|
32
58
|
});
|
|
59
|
+
|
|
60
|
+
it('should create instance with chain asset lock proof', () => {
|
|
61
|
+
const stObject = stateTransition.toObject();
|
|
62
|
+
stObject.assetLockProof = getChainAssetLockProofFixture().toObject();
|
|
63
|
+
stateTransition = new IdentityCreateTransition(stObject);
|
|
64
|
+
expect(stateTransition.getAssetLockProof().toObject())
|
|
65
|
+
.to.deep.equal(stObject.assetLockProof);
|
|
66
|
+
});
|
|
33
67
|
});
|
|
34
68
|
|
|
35
69
|
describe('#getType', () => {
|
|
@@ -53,8 +87,8 @@ describe('IdentityCreateTransition', () => {
|
|
|
53
87
|
new InstantAssetLockProof(rawStateTransition.assetLockProof),
|
|
54
88
|
);
|
|
55
89
|
|
|
56
|
-
expect(stateTransition.identityId).to.deep.equal(
|
|
57
|
-
stateTransition.getAssetLockProof().createIdentifier(),
|
|
90
|
+
expect(stateTransition.identityId.toBuffer()).to.deep.equal(
|
|
91
|
+
stateTransition.getAssetLockProof().createIdentifier().toBuffer(),
|
|
58
92
|
);
|
|
59
93
|
});
|
|
60
94
|
});
|
|
@@ -69,44 +103,53 @@ describe('IdentityCreateTransition', () => {
|
|
|
69
103
|
|
|
70
104
|
describe('#setPublicKeys', () => {
|
|
71
105
|
it('should set public keys', () => {
|
|
72
|
-
const publicKeys = [
|
|
106
|
+
const publicKeys = [
|
|
107
|
+
new IdentityPublicKeyCreateTransition(mockRawPublicKey({ id: 0 })),
|
|
108
|
+
new IdentityPublicKeyCreateTransition(mockRawPublicKey({ id: 1 })),
|
|
109
|
+
];
|
|
73
110
|
|
|
74
111
|
stateTransition.setPublicKeys(publicKeys);
|
|
75
112
|
|
|
76
|
-
expect(stateTransition.publicKeys).
|
|
113
|
+
expect(stateTransition.publicKeys.map((key) => key.toObject()))
|
|
114
|
+
.to.have.deep.members(publicKeys.map((key) => key.toObject()));
|
|
77
115
|
});
|
|
78
116
|
});
|
|
79
117
|
|
|
80
118
|
describe('#getPublicKeys', () => {
|
|
81
119
|
it('should return set public keys', () => {
|
|
82
|
-
expect(stateTransition.getPublicKeys()).to.deep.equal(
|
|
83
|
-
rawStateTransition.publicKeys
|
|
120
|
+
expect(stateTransition.getPublicKeys().map((key) => key.toObject())).to.deep.equal(
|
|
121
|
+
rawStateTransition.publicKeys
|
|
122
|
+
.map((rawPublicKey) => new IdentityPublicKeyCreateTransition(rawPublicKey).toObject()),
|
|
84
123
|
);
|
|
85
124
|
});
|
|
86
125
|
});
|
|
87
126
|
|
|
88
127
|
describe('#addPublicKeys', () => {
|
|
89
128
|
it('should add more public keys', () => {
|
|
90
|
-
const publicKeys = [
|
|
129
|
+
const publicKeys = [
|
|
130
|
+
new IdentityPublicKeyCreateTransition(mockRawPublicKey({ id: 0 })),
|
|
131
|
+
new IdentityPublicKeyCreateTransition(mockRawPublicKey({ id: 1 })),
|
|
132
|
+
];
|
|
91
133
|
|
|
92
|
-
stateTransition.
|
|
134
|
+
stateTransition.setPublicKeys([]);
|
|
93
135
|
stateTransition.addPublicKeys(publicKeys);
|
|
94
|
-
expect(stateTransition.getPublicKeys()).
|
|
136
|
+
expect(stateTransition.getPublicKeys().map((key) => key.toObject()))
|
|
137
|
+
.to.have.deep.members(publicKeys.map((key) => key.toObject()));
|
|
95
138
|
});
|
|
96
139
|
});
|
|
97
140
|
|
|
98
141
|
describe('#getIdentityId', () => {
|
|
99
142
|
it('should return identity id', () => {
|
|
100
|
-
expect(stateTransition.getIdentityId()).to.deep.equal(
|
|
101
|
-
stateTransition.getAssetLockProof().createIdentifier(),
|
|
143
|
+
expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(
|
|
144
|
+
stateTransition.getAssetLockProof().createIdentifier().toBuffer(),
|
|
102
145
|
);
|
|
103
146
|
});
|
|
104
147
|
});
|
|
105
148
|
|
|
106
149
|
describe('#getOwnerId', () => {
|
|
107
150
|
it('should return owner id', () => {
|
|
108
|
-
expect(stateTransition.getOwnerId()).to.equal(
|
|
109
|
-
stateTransition.getIdentityId(),
|
|
151
|
+
expect(stateTransition.getOwnerId().toBuffer()).to.deep.equal(
|
|
152
|
+
stateTransition.getIdentityId().toBuffer(),
|
|
110
153
|
);
|
|
111
154
|
});
|
|
112
155
|
});
|
|
@@ -158,8 +201,8 @@ describe('IdentityCreateTransition', () => {
|
|
|
158
201
|
const identityId = result[0];
|
|
159
202
|
|
|
160
203
|
expect(identityId).to.be.an.instanceOf(Identifier);
|
|
161
|
-
expect(identityId).to.be.deep.equal(
|
|
162
|
-
new IdentityCreateTransition(rawStateTransition).getIdentityId(),
|
|
204
|
+
expect(identityId.toBuffer()).to.be.deep.equal(
|
|
205
|
+
new IdentityCreateTransition(rawStateTransition).getIdentityId().toBuffer(),
|
|
163
206
|
);
|
|
164
207
|
});
|
|
165
208
|
});
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
const Identity = require('@dashevo/dpp/lib/identity/Identity');
|
|
2
|
-
|
|
3
|
-
const applyIdentityCreateTransitionFactory = require(
|
|
4
|
-
'@dashevo/dpp/lib/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory',
|
|
5
|
-
);
|
|
6
|
-
|
|
7
1
|
const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
|
|
8
2
|
|
|
9
3
|
const { convertSatoshiToCredits } = require('@dashevo/dpp/lib/identity/creditsConverter');
|
|
@@ -11,21 +5,40 @@ const { convertSatoshiToCredits } = require('@dashevo/dpp/lib/identity/creditsCo
|
|
|
11
5
|
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
12
6
|
|
|
13
7
|
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
14
|
-
|
|
15
|
-
const
|
|
8
|
+
|
|
9
|
+
const { default: loadWasmDpp } = require('../../../../../dist');
|
|
16
10
|
|
|
17
11
|
describe('applyIdentityCreateTransitionFactory', () => {
|
|
18
12
|
let stateTransition;
|
|
19
13
|
let applyIdentityCreateTransition;
|
|
20
14
|
let stateRepositoryMock;
|
|
21
|
-
let fetchAssetLockTransactionOutputMock;
|
|
22
15
|
let output;
|
|
23
16
|
let executionContext;
|
|
24
17
|
|
|
18
|
+
let StateTransitionExecutionContext;
|
|
19
|
+
let IdentityCreateTransition;
|
|
20
|
+
let Identity;
|
|
21
|
+
|
|
22
|
+
let applyIdentityCreateTransitionDPP;
|
|
23
|
+
|
|
24
|
+
before(async () => {
|
|
25
|
+
({
|
|
26
|
+
StateTransitionExecutionContext,
|
|
27
|
+
IdentityCreateTransition,
|
|
28
|
+
applyIdentityCreateTransition: applyIdentityCreateTransitionDPP,
|
|
29
|
+
Identity,
|
|
30
|
+
} = await loadWasmDpp());
|
|
31
|
+
});
|
|
32
|
+
|
|
25
33
|
beforeEach(function beforeEach() {
|
|
26
34
|
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
35
|
+
stateRepositoryMock.createIdentity.resolves();
|
|
36
|
+
stateRepositoryMock.addToSystemCredits.resolves();
|
|
37
|
+
stateRepositoryMock.markAssetLockTransactionOutPointAsUsed.resolves();
|
|
27
38
|
|
|
28
|
-
stateTransition =
|
|
39
|
+
stateTransition = new IdentityCreateTransition(
|
|
40
|
+
getIdentityCreateTransitionFixture().toObject(),
|
|
41
|
+
);
|
|
29
42
|
|
|
30
43
|
executionContext = new StateTransitionExecutionContext();
|
|
31
44
|
|
|
@@ -33,19 +46,13 @@ describe('applyIdentityCreateTransitionFactory', () => {
|
|
|
33
46
|
|
|
34
47
|
output = stateTransition.getAssetLockProof().getOutput();
|
|
35
48
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
applyIdentityCreateTransition = applyIdentityCreateTransitionFactory(
|
|
49
|
+
applyIdentityCreateTransition = (st) => applyIdentityCreateTransitionDPP(
|
|
39
50
|
stateRepositoryMock,
|
|
40
|
-
|
|
51
|
+
st,
|
|
41
52
|
);
|
|
42
53
|
});
|
|
43
54
|
|
|
44
|
-
it('should store identity created from state transition', async ()
|
|
45
|
-
executionContext.addOperation(
|
|
46
|
-
new ReadOperation(1),
|
|
47
|
-
);
|
|
48
|
-
|
|
55
|
+
it('should store identity created from state transition', async function () {
|
|
49
56
|
await applyIdentityCreateTransition(stateTransition);
|
|
50
57
|
|
|
51
58
|
const balance = convertSatoshiToCredits(
|
|
@@ -55,36 +62,29 @@ describe('applyIdentityCreateTransitionFactory', () => {
|
|
|
55
62
|
const identity = new Identity({
|
|
56
63
|
protocolVersion: protocolVersion.latestVersion,
|
|
57
64
|
id: stateTransition.getIdentityId(),
|
|
58
|
-
publicKeys: stateTransition.getPublicKeys()
|
|
65
|
+
publicKeys: stateTransition.getPublicKeys()
|
|
66
|
+
.map((key) => key.toObject({ skipSignature: true })),
|
|
59
67
|
balance,
|
|
60
68
|
revision: 0,
|
|
61
69
|
});
|
|
62
70
|
|
|
71
|
+
const { match } = this.sinonSandbox;
|
|
72
|
+
|
|
63
73
|
expect(stateRepositoryMock.createIdentity).to.have.been.calledOnceWithExactly(
|
|
64
|
-
identity,
|
|
65
|
-
|
|
74
|
+
match((arg) => expect(arg.toObject()).to.deep.equal(identity.toObject())),
|
|
75
|
+
match.instanceOf(StateTransitionExecutionContext),
|
|
66
76
|
);
|
|
67
77
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
.
|
|
71
|
-
|
|
72
|
-
expect(stateRepositoryMock.storeIdentityPublicKeyHashes).to.have.been.calledOnceWithExactly(
|
|
73
|
-
identity.getId(),
|
|
74
|
-
publicKeyHashes,
|
|
75
|
-
executionContext,
|
|
78
|
+
expect(stateRepositoryMock.addToSystemCredits).to.have.been.calledOnceWithExactly(
|
|
79
|
+
balance,
|
|
80
|
+
match.instanceOf(StateTransitionExecutionContext),
|
|
76
81
|
);
|
|
77
82
|
|
|
83
|
+
const outPoint = stateTransition.getAssetLockProof().getOutPoint();
|
|
78
84
|
expect(stateRepositoryMock.markAssetLockTransactionOutPointAsUsed).to.have.been
|
|
79
85
|
.calledOnceWithExactly(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
expect(fetchAssetLockTransactionOutputMock)
|
|
85
|
-
.to.be.calledOnceWithExactly(
|
|
86
|
-
stateTransition.getAssetLockProof(),
|
|
87
|
-
executionContext,
|
|
86
|
+
match((arg) => Buffer.from(arg).equals(outPoint)),
|
|
87
|
+
match.instanceOf(StateTransitionExecutionContext),
|
|
88
88
|
);
|
|
89
89
|
});
|
|
90
90
|
});
|