@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,68 +1,61 @@
|
|
|
1
|
-
const { getRE2Class } = require('@dashevo/wasm-re2');
|
|
2
|
-
|
|
3
|
-
const createAjv = require('@dashevo/dpp/lib/ajv/createAjv');
|
|
4
|
-
|
|
5
|
-
const JsonSchemaValidator = require('@dashevo/dpp/lib/validation/JsonSchemaValidator');
|
|
6
|
-
|
|
7
1
|
const getIdentityTopUpTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture');
|
|
8
2
|
|
|
9
|
-
const
|
|
10
|
-
'@dashevo/dpp/lib/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory',
|
|
11
|
-
);
|
|
12
|
-
|
|
3
|
+
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
13
4
|
const {
|
|
14
5
|
expectJsonSchemaError,
|
|
15
6
|
expectValidationError,
|
|
16
|
-
} = require('
|
|
17
|
-
|
|
18
|
-
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
19
|
-
|
|
20
|
-
const ChainAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/chain/ChainAssetLockProof');
|
|
21
|
-
const InstantAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/instant/InstantAssetLockProof');
|
|
22
|
-
const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
|
|
23
|
-
const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
24
|
-
const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
|
|
7
|
+
} = require('../../../../../../../lib/test/expect/expectError');
|
|
8
|
+
const { default: loadWasmDpp } = require('../../../../../../../dist');
|
|
25
9
|
|
|
26
10
|
describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
27
11
|
let rawStateTransition;
|
|
28
12
|
let stateTransition;
|
|
29
|
-
let assetLockPublicKeyHash;
|
|
30
|
-
let validateIdentityTopUpTransitionBasic;
|
|
31
|
-
let proofValidationFunctionsByTypeMock;
|
|
32
|
-
let validateProtocolVersionMock;
|
|
33
|
-
let executionContext;
|
|
34
|
-
|
|
35
|
-
beforeEach(async function beforeEach() {
|
|
36
|
-
assetLockPublicKeyHash = Buffer.alloc(20, 1);
|
|
37
13
|
|
|
38
|
-
|
|
39
|
-
|
|
14
|
+
let stateRepositoryMock;
|
|
15
|
+
let executionContext;
|
|
40
16
|
|
|
41
|
-
|
|
42
|
-
[InstantAssetLockProof.type]: this.sinonSandbox.stub().resolves(assetLockValidationResult),
|
|
43
|
-
[ChainAssetLockProof.type]: this.sinonSandbox.stub().resolves(assetLockValidationResult),
|
|
44
|
-
};
|
|
17
|
+
let validateIdentityTopUpTransitionBasic;
|
|
45
18
|
|
|
46
|
-
|
|
47
|
-
|
|
19
|
+
let StateTransitionExecutionContext;
|
|
20
|
+
let IdentityTopUpTransition;
|
|
21
|
+
let IdentityPublicKey;
|
|
22
|
+
let UnsupportedProtocolVersionError;
|
|
23
|
+
let InvalidInstantAssetLockProofSignatureError;
|
|
24
|
+
let IdentityTopUpTransitionBasicValidator;
|
|
25
|
+
|
|
26
|
+
before(async () => {
|
|
27
|
+
({
|
|
28
|
+
IdentityTopUpTransitionBasicValidator,
|
|
29
|
+
IdentityTopUpTransition,
|
|
30
|
+
StateTransitionExecutionContext,
|
|
31
|
+
IdentityPublicKey,
|
|
32
|
+
UnsupportedProtocolVersionError,
|
|
33
|
+
InvalidInstantAssetLockProofSignatureError,
|
|
34
|
+
} = await loadWasmDpp());
|
|
35
|
+
});
|
|
48
36
|
|
|
49
|
-
|
|
37
|
+
beforeEach(async function beforeEach() {
|
|
38
|
+
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
39
|
+
stateRepositoryMock.verifyInstantLock.resolves(true);
|
|
40
|
+
stateRepositoryMock.isAssetLockTransactionOutPointAlreadyUsed.resolves(false);
|
|
50
41
|
|
|
51
|
-
|
|
42
|
+
executionContext = new StateTransitionExecutionContext();
|
|
52
43
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
const validator = new IdentityTopUpTransitionBasicValidator(stateRepositoryMock);
|
|
45
|
+
validateIdentityTopUpTransitionBasic = (st, context) => validator.validate(
|
|
46
|
+
st,
|
|
47
|
+
context,
|
|
57
48
|
);
|
|
58
49
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
stateTransition = getIdentityTopUpTransitionFixture();
|
|
50
|
+
const stateTransitionJS = getIdentityTopUpTransitionFixture();
|
|
51
|
+
stateTransition = new IdentityTopUpTransition(stateTransitionJS.toObject());
|
|
62
52
|
|
|
63
53
|
const privateKey = '9b67f852093bc61cea0eeca38599dbfba0de28574d2ed9b99d10d33dc1bde7b2';
|
|
64
54
|
|
|
65
|
-
await stateTransition.signByPrivateKey(
|
|
55
|
+
await stateTransition.signByPrivateKey(
|
|
56
|
+
Buffer.from(privateKey, 'hex'),
|
|
57
|
+
IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
58
|
+
);
|
|
66
59
|
|
|
67
60
|
rawStateTransition = stateTransition.toObject();
|
|
68
61
|
});
|
|
@@ -71,9 +64,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
71
64
|
it('should be present', async () => {
|
|
72
65
|
delete rawStateTransition.protocolVersion;
|
|
73
66
|
|
|
74
|
-
const result = await validateIdentityTopUpTransitionBasic(
|
|
67
|
+
const result = await validateIdentityTopUpTransitionBasic(
|
|
68
|
+
rawStateTransition, executionContext,
|
|
69
|
+
);
|
|
75
70
|
|
|
76
|
-
expectJsonSchemaError(result);
|
|
71
|
+
await expectJsonSchemaError(result);
|
|
77
72
|
|
|
78
73
|
const [error] = result.getErrors();
|
|
79
74
|
|
|
@@ -85,9 +80,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
85
80
|
it('should be an integer', async () => {
|
|
86
81
|
rawStateTransition.protocolVersion = '1';
|
|
87
82
|
|
|
88
|
-
const result = await validateIdentityTopUpTransitionBasic(
|
|
83
|
+
const result = await validateIdentityTopUpTransitionBasic(
|
|
84
|
+
rawStateTransition, executionContext,
|
|
85
|
+
);
|
|
89
86
|
|
|
90
|
-
expectJsonSchemaError(result);
|
|
87
|
+
await expectJsonSchemaError(result);
|
|
91
88
|
|
|
92
89
|
const [error] = result.getErrors();
|
|
93
90
|
|
|
@@ -96,26 +93,13 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
96
93
|
});
|
|
97
94
|
|
|
98
95
|
it('should be valid', async () => {
|
|
99
|
-
rawStateTransition.protocolVersion =
|
|
100
|
-
|
|
101
|
-
const protocolVersionError = new SomeConsensusError('test');
|
|
102
|
-
const protocolVersionResult = new ValidationResult([
|
|
103
|
-
protocolVersionError,
|
|
104
|
-
]);
|
|
105
|
-
|
|
106
|
-
validateProtocolVersionMock.returns(protocolVersionResult);
|
|
96
|
+
rawStateTransition.protocolVersion = 1000;
|
|
107
97
|
|
|
108
|
-
const result = await validateIdentityTopUpTransitionBasic(
|
|
109
|
-
|
|
110
|
-
expectValidationError(result, SomeConsensusError);
|
|
111
|
-
|
|
112
|
-
const [error] = result.getErrors();
|
|
113
|
-
|
|
114
|
-
expect(error).to.equal(protocolVersionError);
|
|
115
|
-
|
|
116
|
-
expect(validateProtocolVersionMock).to.be.calledOnceWith(
|
|
117
|
-
rawStateTransition.protocolVersion,
|
|
98
|
+
const result = await validateIdentityTopUpTransitionBasic(
|
|
99
|
+
rawStateTransition, executionContext,
|
|
118
100
|
);
|
|
101
|
+
|
|
102
|
+
await expectValidationError(result, UnsupportedProtocolVersionError);
|
|
119
103
|
});
|
|
120
104
|
});
|
|
121
105
|
|
|
@@ -123,9 +107,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
123
107
|
it('should be present', async () => {
|
|
124
108
|
delete rawStateTransition.type;
|
|
125
109
|
|
|
126
|
-
const result = await validateIdentityTopUpTransitionBasic(
|
|
110
|
+
const result = await validateIdentityTopUpTransitionBasic(
|
|
111
|
+
rawStateTransition, executionContext,
|
|
112
|
+
);
|
|
127
113
|
|
|
128
|
-
expectJsonSchemaError(result);
|
|
114
|
+
await expectJsonSchemaError(result);
|
|
129
115
|
|
|
130
116
|
const [error] = result.getErrors();
|
|
131
117
|
|
|
@@ -137,9 +123,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
137
123
|
it('should be equal to 3', async () => {
|
|
138
124
|
rawStateTransition.type = 666;
|
|
139
125
|
|
|
140
|
-
const result = await validateIdentityTopUpTransitionBasic(
|
|
126
|
+
const result = await validateIdentityTopUpTransitionBasic(
|
|
127
|
+
rawStateTransition, executionContext,
|
|
128
|
+
);
|
|
141
129
|
|
|
142
|
-
expectJsonSchemaError(result);
|
|
130
|
+
await expectJsonSchemaError(result);
|
|
143
131
|
|
|
144
132
|
const [error] = result.getErrors();
|
|
145
133
|
|
|
@@ -155,9 +143,10 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
155
143
|
|
|
156
144
|
const result = await validateIdentityTopUpTransitionBasic(
|
|
157
145
|
rawStateTransition,
|
|
146
|
+
executionContext,
|
|
158
147
|
);
|
|
159
148
|
|
|
160
|
-
expectJsonSchemaError(result);
|
|
149
|
+
await expectJsonSchemaError(result);
|
|
161
150
|
|
|
162
151
|
const [error] = result.getErrors();
|
|
163
152
|
|
|
@@ -169,9 +158,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
169
158
|
it('should be an object', async () => {
|
|
170
159
|
rawStateTransition.assetLockProof = 1;
|
|
171
160
|
|
|
172
|
-
const result = await validateIdentityTopUpTransitionBasic(
|
|
161
|
+
const result = await validateIdentityTopUpTransitionBasic(
|
|
162
|
+
rawStateTransition, executionContext,
|
|
163
|
+
);
|
|
173
164
|
|
|
174
|
-
expectJsonSchemaError(result, 1);
|
|
165
|
+
await expectJsonSchemaError(result, 1);
|
|
175
166
|
|
|
176
167
|
const [error] = result.getErrors();
|
|
177
168
|
|
|
@@ -180,29 +171,18 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
180
171
|
});
|
|
181
172
|
|
|
182
173
|
it('should be valid', async () => {
|
|
183
|
-
|
|
184
|
-
const assetLockResult = new ValidationResult([
|
|
185
|
-
assetLockError,
|
|
186
|
-
]);
|
|
187
|
-
|
|
188
|
-
proofValidationFunctionsByTypeMock[InstantAssetLockProof.type].resolves(assetLockResult);
|
|
174
|
+
stateRepositoryMock.verifyInstantLock.resolves(false);
|
|
189
175
|
|
|
190
176
|
const result = await validateIdentityTopUpTransitionBasic(
|
|
191
177
|
rawStateTransition,
|
|
192
178
|
executionContext,
|
|
193
179
|
);
|
|
194
180
|
|
|
195
|
-
expectValidationError(result);
|
|
181
|
+
await expectValidationError(result);
|
|
196
182
|
|
|
197
183
|
const [error] = result.getErrors();
|
|
198
184
|
|
|
199
|
-
expect(error).to.
|
|
200
|
-
|
|
201
|
-
expect(proofValidationFunctionsByTypeMock[InstantAssetLockProof.type])
|
|
202
|
-
.to.be.calledOnceWithExactly(
|
|
203
|
-
rawStateTransition.assetLockProof,
|
|
204
|
-
executionContext,
|
|
205
|
-
);
|
|
185
|
+
expect(error).to.be.instanceOf(InvalidInstantAssetLockProofSignatureError);
|
|
206
186
|
});
|
|
207
187
|
});
|
|
208
188
|
|
|
@@ -215,7 +195,7 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
215
195
|
executionContext,
|
|
216
196
|
);
|
|
217
197
|
|
|
218
|
-
expectJsonSchemaError(result);
|
|
198
|
+
await expectJsonSchemaError(result);
|
|
219
199
|
|
|
220
200
|
const [error] = result.getErrors();
|
|
221
201
|
|
|
@@ -232,14 +212,12 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
232
212
|
executionContext,
|
|
233
213
|
);
|
|
234
214
|
|
|
235
|
-
expectJsonSchemaError(result,
|
|
215
|
+
await expectJsonSchemaError(result, 32);
|
|
236
216
|
|
|
237
|
-
const [error
|
|
217
|
+
const [error] = result.getErrors();
|
|
238
218
|
|
|
239
219
|
expect(error.getInstancePath()).to.equal('/identityId/0');
|
|
240
220
|
expect(error.getKeyword()).to.equal('type');
|
|
241
|
-
|
|
242
|
-
expect(byteArrayError.getKeyword()).to.equal('byteArray');
|
|
243
221
|
});
|
|
244
222
|
|
|
245
223
|
it('should be no less than 32 bytes', async () => {
|
|
@@ -250,11 +228,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
250
228
|
executionContext,
|
|
251
229
|
);
|
|
252
230
|
|
|
253
|
-
expectJsonSchemaError(result);
|
|
231
|
+
await expectJsonSchemaError(result);
|
|
254
232
|
|
|
255
233
|
const [error] = result.getErrors();
|
|
256
234
|
|
|
257
|
-
expect(error.
|
|
235
|
+
expect(error.getInstancePath()).to.equal('/identityId');
|
|
258
236
|
expect(error.getKeyword()).to.equal('minItems');
|
|
259
237
|
});
|
|
260
238
|
|
|
@@ -266,11 +244,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
266
244
|
executionContext,
|
|
267
245
|
);
|
|
268
246
|
|
|
269
|
-
expectJsonSchemaError(result);
|
|
247
|
+
await expectJsonSchemaError(result);
|
|
270
248
|
|
|
271
249
|
const [error] = result.getErrors();
|
|
272
250
|
|
|
273
|
-
expect(error.
|
|
251
|
+
expect(error.getInstancePath()).to.equal('/identityId');
|
|
274
252
|
expect(error.getKeyword()).to.equal('maxItems');
|
|
275
253
|
});
|
|
276
254
|
});
|
|
@@ -284,11 +262,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
284
262
|
executionContext,
|
|
285
263
|
);
|
|
286
264
|
|
|
287
|
-
expectJsonSchemaError(result);
|
|
265
|
+
await expectJsonSchemaError(result);
|
|
288
266
|
|
|
289
267
|
const [error] = result.getErrors();
|
|
290
268
|
|
|
291
|
-
expect(error.
|
|
269
|
+
expect(error.getInstancePath()).to.equal('');
|
|
292
270
|
expect(error.getKeyword()).to.equal('required');
|
|
293
271
|
expect(error.getParams().missingProperty).to.equal('signature');
|
|
294
272
|
});
|
|
@@ -301,14 +279,12 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
301
279
|
executionContext,
|
|
302
280
|
);
|
|
303
281
|
|
|
304
|
-
expectJsonSchemaError(result,
|
|
282
|
+
await expectJsonSchemaError(result, 65);
|
|
305
283
|
|
|
306
|
-
const [error
|
|
284
|
+
const [error] = result.getErrors();
|
|
307
285
|
|
|
308
|
-
expect(error.
|
|
286
|
+
expect(error.getInstancePath()).to.equal('/signature/0');
|
|
309
287
|
expect(error.getKeyword()).to.equal('type');
|
|
310
|
-
|
|
311
|
-
expect(byteArrayError.getKeyword()).to.equal('byteArray');
|
|
312
288
|
});
|
|
313
289
|
|
|
314
290
|
it('should be not shorter than 65 bytes', async () => {
|
|
@@ -319,11 +295,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
319
295
|
executionContext,
|
|
320
296
|
);
|
|
321
297
|
|
|
322
|
-
expectJsonSchemaError(result);
|
|
298
|
+
await expectJsonSchemaError(result);
|
|
323
299
|
|
|
324
300
|
const [error] = result.getErrors();
|
|
325
301
|
|
|
326
|
-
expect(error.
|
|
302
|
+
expect(error.getInstancePath()).to.equal('/signature');
|
|
327
303
|
expect(error.getKeyword()).to.equal('minItems');
|
|
328
304
|
});
|
|
329
305
|
|
|
@@ -335,11 +311,11 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
335
311
|
executionContext,
|
|
336
312
|
);
|
|
337
313
|
|
|
338
|
-
expectJsonSchemaError(result);
|
|
314
|
+
await expectJsonSchemaError(result);
|
|
339
315
|
|
|
340
316
|
const [error] = result.getErrors();
|
|
341
317
|
|
|
342
|
-
expect(error.
|
|
318
|
+
expect(error.getInstancePath()).to.equal('/signature');
|
|
343
319
|
expect(error.getKeyword()).to.equal('maxItems');
|
|
344
320
|
});
|
|
345
321
|
});
|
|
@@ -351,11 +327,5 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => {
|
|
|
351
327
|
);
|
|
352
328
|
|
|
353
329
|
expect(result.isValid()).to.be.true();
|
|
354
|
-
|
|
355
|
-
expect(proofValidationFunctionsByTypeMock[InstantAssetLockProof.type])
|
|
356
|
-
.to.be.calledOnceWithExactly(
|
|
357
|
-
rawStateTransition.assetLockProof,
|
|
358
|
-
executionContext,
|
|
359
|
-
);
|
|
360
330
|
});
|
|
361
331
|
});
|