@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,83 +1,94 @@
|
|
|
1
|
-
const {
|
|
2
|
-
|
|
3
|
-
const createAjv = require('@dashevo/dpp/lib/ajv/createAjv');
|
|
4
|
-
|
|
5
|
-
const JsonSchemaValidator = require('@dashevo/dpp/lib/validation/JsonSchemaValidator');
|
|
1
|
+
const { PrivateKey } = require('@dashevo/dashcore-lib');
|
|
6
2
|
|
|
7
3
|
const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
|
|
8
4
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
);
|
|
12
|
-
|
|
13
|
-
const {
|
|
14
|
-
expectJsonSchemaError,
|
|
15
|
-
expectValidationError,
|
|
16
|
-
} = require('@dashevo/dpp/lib/test/expect/expectError');
|
|
17
|
-
|
|
18
|
-
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
19
|
-
const InstantAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/instant/InstantAssetLockProof');
|
|
20
|
-
const ChainAssetLockProof = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/chain/ChainAssetLockProof');
|
|
21
|
-
const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
|
|
22
|
-
const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
23
|
-
const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
|
|
5
|
+
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
6
|
+
const { expectValidationError, expectJsonSchemaError } = require('../../../../../../../lib/test/expect/expectError');
|
|
7
|
+
const { default: loadWasmDpp } = require('../../../../../../../dist');
|
|
8
|
+
const getBlsAdapterMock = require('../../../../../../../lib/test/mocks/getBlsAdapterMock');
|
|
24
9
|
|
|
25
10
|
describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
26
|
-
let validateIdentityCreateTransitionBasic;
|
|
27
11
|
let rawStateTransition;
|
|
28
12
|
let stateTransition;
|
|
29
|
-
let validatePublicKeysMock;
|
|
30
|
-
let validatePublicKeysInIdentityCreateTransition;
|
|
31
|
-
let assetLockPublicKeyHash;
|
|
32
|
-
let proofValidationFunctionsByTypeMock;
|
|
33
|
-
let validateProtocolVersionMock;
|
|
34
|
-
let validatePublicKeySignaturesMock;
|
|
35
13
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
14
|
+
let stateRepositoryMock;
|
|
15
|
+
let mockIdentityPublicKeyCreateTransition;
|
|
16
|
+
let executionContext;
|
|
17
|
+
|
|
18
|
+
let validateIdentityCreateTransitionBasic;
|
|
39
19
|
|
|
40
|
-
|
|
41
|
-
|
|
20
|
+
let StateTransitionExecutionContext;
|
|
21
|
+
let IdentityCreateTransition;
|
|
22
|
+
let IdentityPublicKey;
|
|
23
|
+
let UnsupportedProtocolVersionError;
|
|
24
|
+
let InvalidInstantAssetLockProofSignatureError;
|
|
25
|
+
let InvalidIdentityPublicKeySecurityLevelError;
|
|
26
|
+
let InvalidIdentityPublicKeyDataError;
|
|
27
|
+
let InvalidIdentityKeySignatureError;
|
|
28
|
+
let IdentityCreateTransitionBasicValidator;
|
|
29
|
+
let IdentityPublicKeyCreateTransition;
|
|
30
|
+
|
|
31
|
+
before(async () => {
|
|
32
|
+
({
|
|
33
|
+
IdentityCreateTransition,
|
|
34
|
+
StateTransitionExecutionContext,
|
|
35
|
+
UnsupportedProtocolVersionError,
|
|
36
|
+
InvalidInstantAssetLockProofSignatureError,
|
|
37
|
+
InvalidIdentityPublicKeySecurityLevelError,
|
|
38
|
+
InvalidIdentityPublicKeyDataError,
|
|
39
|
+
InvalidIdentityKeySignatureError,
|
|
40
|
+
IdentityPublicKeyCreateTransition,
|
|
41
|
+
IdentityCreateTransitionBasicValidator,
|
|
42
|
+
IdentityPublicKey,
|
|
43
|
+
} = await loadWasmDpp());
|
|
44
|
+
|
|
45
|
+
mockIdentityPublicKeyCreateTransition = (publicKey, opts = {}) => (
|
|
46
|
+
new IdentityPublicKeyCreateTransition({
|
|
47
|
+
id: 0,
|
|
48
|
+
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
49
|
+
data: publicKey,
|
|
50
|
+
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
51
|
+
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
52
|
+
readOnly: false,
|
|
53
|
+
signature: Buffer.alloc(0),
|
|
54
|
+
...opts,
|
|
55
|
+
})
|
|
56
|
+
);
|
|
57
|
+
});
|
|
42
58
|
|
|
43
|
-
|
|
59
|
+
beforeEach(async function () {
|
|
60
|
+
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
61
|
+
stateRepositoryMock.verifyInstantLock.resolves(true);
|
|
62
|
+
stateRepositoryMock.isAssetLockTransactionOutPointAlreadyUsed.resolves(false);
|
|
44
63
|
|
|
45
|
-
|
|
64
|
+
executionContext = new StateTransitionExecutionContext();
|
|
46
65
|
|
|
47
|
-
|
|
66
|
+
const blsAdapter = await getBlsAdapterMock();
|
|
48
67
|
|
|
49
|
-
const
|
|
50
|
-
|
|
68
|
+
const validator = new IdentityCreateTransitionBasicValidator(stateRepositoryMock, blsAdapter);
|
|
69
|
+
validateIdentityCreateTransitionBasic = (st, context) => validator.validate(st, context);
|
|
51
70
|
|
|
52
|
-
const
|
|
71
|
+
const stateTransitionJS = getIdentityCreateTransitionFixture();
|
|
72
|
+
stateTransition = new IdentityCreateTransition(stateTransitionJS.toObject());
|
|
53
73
|
|
|
54
|
-
const
|
|
55
|
-
|
|
74
|
+
const privateKey = new PrivateKey('9b67f852093bc61cea0eeca38599dbfba0de28574d2ed9b99d10d33dc1bde7b2');
|
|
75
|
+
const publicKey = privateKey.toPublicKey();
|
|
56
76
|
|
|
57
|
-
|
|
58
|
-
[InstantAssetLockProof.type]: this.sinonSandbox.stub().resolves(proofValidationResult),
|
|
59
|
-
[ChainAssetLockProof.type]: this.sinonSandbox.stub().resolves(proofValidationResult),
|
|
60
|
-
};
|
|
77
|
+
const identityPublicKey = mockIdentityPublicKeyCreateTransition(publicKey.toBuffer());
|
|
61
78
|
|
|
62
|
-
|
|
79
|
+
stateTransition.setPublicKeys([identityPublicKey]);
|
|
63
80
|
|
|
64
|
-
|
|
65
|
-
.returns(new ValidationResult());
|
|
81
|
+
// Sign a new public key
|
|
66
82
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
validatePublicKeysInIdentityCreateTransition,
|
|
71
|
-
proofValidationFunctionsByTypeMock,
|
|
72
|
-
validateProtocolVersionMock,
|
|
73
|
-
validatePublicKeySignaturesMock,
|
|
83
|
+
await stateTransition.signByPrivateKey(
|
|
84
|
+
privateKey.toBuffer(),
|
|
85
|
+
identityPublicKey.type,
|
|
74
86
|
);
|
|
75
87
|
|
|
76
|
-
|
|
88
|
+
const publicKeySignature = stateTransition.getSignature();
|
|
89
|
+
identityPublicKey.setSignature(publicKeySignature);
|
|
77
90
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
await stateTransition.signByPrivateKey(privateKey, IdentityPublicKey.TYPES.ECDSA_SECP256K1);
|
|
91
|
+
stateTransition.setPublicKeys([identityPublicKey]);
|
|
81
92
|
|
|
82
93
|
rawStateTransition = stateTransition.toObject();
|
|
83
94
|
});
|
|
@@ -86,9 +97,12 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
86
97
|
it('should be present', async () => {
|
|
87
98
|
delete rawStateTransition.protocolVersion;
|
|
88
99
|
|
|
89
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
100
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
101
|
+
rawStateTransition,
|
|
102
|
+
executionContext,
|
|
103
|
+
);
|
|
90
104
|
|
|
91
|
-
expectJsonSchemaError(result);
|
|
105
|
+
await expectJsonSchemaError(result);
|
|
92
106
|
|
|
93
107
|
const [error] = result.getErrors();
|
|
94
108
|
|
|
@@ -100,9 +114,12 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
100
114
|
it('should be an integer', async () => {
|
|
101
115
|
rawStateTransition.protocolVersion = '1';
|
|
102
116
|
|
|
103
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
117
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
118
|
+
rawStateTransition,
|
|
119
|
+
executionContext,
|
|
120
|
+
);
|
|
104
121
|
|
|
105
|
-
expectJsonSchemaError(result);
|
|
122
|
+
await expectJsonSchemaError(result);
|
|
106
123
|
|
|
107
124
|
const [error] = result.getErrors();
|
|
108
125
|
|
|
@@ -111,26 +128,14 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
111
128
|
});
|
|
112
129
|
|
|
113
130
|
it('should be valid', async () => {
|
|
114
|
-
rawStateTransition.protocolVersion =
|
|
115
|
-
|
|
116
|
-
const protocolVersionError = new SomeConsensusError('test');
|
|
117
|
-
const protocolVersionResult = new ValidationResult([
|
|
118
|
-
protocolVersionError,
|
|
119
|
-
]);
|
|
120
|
-
|
|
121
|
-
validateProtocolVersionMock.returns(protocolVersionResult);
|
|
122
|
-
|
|
123
|
-
const result = await validateIdentityCreateTransitionBasic(rawStateTransition);
|
|
124
|
-
|
|
125
|
-
expectValidationError(result, SomeConsensusError);
|
|
126
|
-
|
|
127
|
-
const [error] = result.getErrors();
|
|
128
|
-
|
|
129
|
-
expect(error).to.equal(protocolVersionError);
|
|
131
|
+
rawStateTransition.protocolVersion = 1000;
|
|
130
132
|
|
|
131
|
-
|
|
132
|
-
rawStateTransition
|
|
133
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
134
|
+
rawStateTransition,
|
|
135
|
+
executionContext,
|
|
133
136
|
);
|
|
137
|
+
|
|
138
|
+
await expectValidationError(result, UnsupportedProtocolVersionError);
|
|
134
139
|
});
|
|
135
140
|
});
|
|
136
141
|
|
|
@@ -138,9 +143,12 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
138
143
|
it('should be present', async () => {
|
|
139
144
|
delete rawStateTransition.type;
|
|
140
145
|
|
|
141
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
146
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
147
|
+
rawStateTransition,
|
|
148
|
+
executionContext,
|
|
149
|
+
);
|
|
142
150
|
|
|
143
|
-
expectJsonSchemaError(result);
|
|
151
|
+
await expectJsonSchemaError(result);
|
|
144
152
|
|
|
145
153
|
const [error] = result.getErrors();
|
|
146
154
|
|
|
@@ -152,9 +160,12 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
152
160
|
it('should be equal to 2', async () => {
|
|
153
161
|
rawStateTransition.type = 666;
|
|
154
162
|
|
|
155
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
163
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
164
|
+
rawStateTransition,
|
|
165
|
+
executionContext,
|
|
166
|
+
);
|
|
156
167
|
|
|
157
|
-
expectJsonSchemaError(result);
|
|
168
|
+
await expectJsonSchemaError(result);
|
|
158
169
|
|
|
159
170
|
const [error] = result.getErrors();
|
|
160
171
|
|
|
@@ -170,9 +181,10 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
170
181
|
|
|
171
182
|
const result = await validateIdentityCreateTransitionBasic(
|
|
172
183
|
rawStateTransition,
|
|
184
|
+
executionContext,
|
|
173
185
|
);
|
|
174
186
|
|
|
175
|
-
expectJsonSchemaError(result);
|
|
187
|
+
await expectJsonSchemaError(result);
|
|
176
188
|
|
|
177
189
|
const [error] = result.getErrors();
|
|
178
190
|
|
|
@@ -184,9 +196,12 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
184
196
|
it('should be an object', async () => {
|
|
185
197
|
rawStateTransition.assetLockProof = 1;
|
|
186
198
|
|
|
187
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
199
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
200
|
+
rawStateTransition,
|
|
201
|
+
executionContext,
|
|
202
|
+
);
|
|
188
203
|
|
|
189
|
-
expectJsonSchemaError(result, 1);
|
|
204
|
+
await expectJsonSchemaError(result, 1);
|
|
190
205
|
|
|
191
206
|
const [error] = result.getErrors();
|
|
192
207
|
|
|
@@ -195,31 +210,18 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
195
210
|
});
|
|
196
211
|
|
|
197
212
|
it('should be valid', async () => {
|
|
198
|
-
|
|
199
|
-
const assetLockResult = new ValidationResult([
|
|
200
|
-
assetLockError,
|
|
201
|
-
]);
|
|
202
|
-
|
|
203
|
-
const executionContext = new StateTransitionExecutionContext();
|
|
204
|
-
|
|
205
|
-
proofValidationFunctionsByTypeMock[InstantAssetLockProof.type].resolves(assetLockResult);
|
|
213
|
+
stateRepositoryMock.verifyInstantLock.resolves(false);
|
|
206
214
|
|
|
207
215
|
const result = await validateIdentityCreateTransitionBasic(
|
|
208
216
|
rawStateTransition,
|
|
209
217
|
executionContext,
|
|
210
218
|
);
|
|
211
219
|
|
|
212
|
-
expectValidationError(result);
|
|
220
|
+
await expectValidationError(result);
|
|
213
221
|
|
|
214
222
|
const [error] = result.getErrors();
|
|
215
223
|
|
|
216
|
-
expect(error).to.
|
|
217
|
-
|
|
218
|
-
expect(proofValidationFunctionsByTypeMock[InstantAssetLockProof.type])
|
|
219
|
-
.to.be.calledOnceWithExactly(
|
|
220
|
-
rawStateTransition.assetLockProof,
|
|
221
|
-
executionContext,
|
|
222
|
-
);
|
|
224
|
+
expect(error).to.be.instanceOf(InvalidInstantAssetLockProofSignatureError);
|
|
223
225
|
});
|
|
224
226
|
});
|
|
225
227
|
|
|
@@ -229,9 +231,10 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
229
231
|
|
|
230
232
|
const result = await validateIdentityCreateTransitionBasic(
|
|
231
233
|
rawStateTransition,
|
|
234
|
+
executionContext,
|
|
232
235
|
);
|
|
233
236
|
|
|
234
|
-
expectJsonSchemaError(result);
|
|
237
|
+
await expectJsonSchemaError(result);
|
|
235
238
|
|
|
236
239
|
const [error] = result.getErrors();
|
|
237
240
|
|
|
@@ -245,9 +248,10 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
245
248
|
|
|
246
249
|
const result = await validateIdentityCreateTransitionBasic(
|
|
247
250
|
rawStateTransition,
|
|
251
|
+
executionContext,
|
|
248
252
|
);
|
|
249
253
|
|
|
250
|
-
expectJsonSchemaError(result);
|
|
254
|
+
await expectJsonSchemaError(result);
|
|
251
255
|
|
|
252
256
|
const [error] = result.getErrors();
|
|
253
257
|
|
|
@@ -259,14 +263,15 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
259
263
|
const [key] = rawStateTransition.publicKeys;
|
|
260
264
|
|
|
261
265
|
for (let i = 0; i < 10; i++) {
|
|
262
|
-
rawStateTransition.publicKeys.push(key);
|
|
266
|
+
rawStateTransition.publicKeys.push({ ...key, id: i + 1 });
|
|
263
267
|
}
|
|
264
268
|
|
|
265
269
|
const result = await validateIdentityCreateTransitionBasic(
|
|
266
270
|
rawStateTransition,
|
|
271
|
+
executionContext,
|
|
267
272
|
);
|
|
268
273
|
|
|
269
|
-
expectJsonSchemaError(result);
|
|
274
|
+
await expectJsonSchemaError(result);
|
|
270
275
|
|
|
271
276
|
const [error] = result.getErrors();
|
|
272
277
|
|
|
@@ -279,9 +284,10 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
279
284
|
|
|
280
285
|
const result = await validateIdentityCreateTransitionBasic(
|
|
281
286
|
rawStateTransition,
|
|
287
|
+
executionContext,
|
|
282
288
|
);
|
|
283
289
|
|
|
284
|
-
expectJsonSchemaError(result);
|
|
290
|
+
await expectJsonSchemaError(result);
|
|
285
291
|
|
|
286
292
|
const [error] = result.getErrors();
|
|
287
293
|
|
|
@@ -290,66 +296,68 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
290
296
|
});
|
|
291
297
|
|
|
292
298
|
it('should be valid', async () => {
|
|
293
|
-
const
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
299
|
+
const privateKey = new PrivateKey();
|
|
300
|
+
|
|
301
|
+
// Mess up public key
|
|
302
|
+
const identityPublicKey = mockIdentityPublicKeyCreateTransition(Buffer.alloc(33));
|
|
303
|
+
|
|
304
|
+
stateTransition.setPublicKeys([identityPublicKey]);
|
|
305
|
+
await stateTransition.signByPrivateKey(
|
|
306
|
+
privateKey.toBuffer(),
|
|
307
|
+
identityPublicKey.type,
|
|
308
|
+
);
|
|
309
|
+
identityPublicKey.setSignature(stateTransition.getSignature());
|
|
310
|
+
stateTransition.setPublicKeys([identityPublicKey]);
|
|
297
311
|
|
|
298
|
-
|
|
312
|
+
rawStateTransition = stateTransition.toObject();
|
|
299
313
|
|
|
300
314
|
const result = await validateIdentityCreateTransitionBasic(
|
|
301
315
|
rawStateTransition,
|
|
316
|
+
executionContext,
|
|
302
317
|
);
|
|
303
318
|
|
|
304
|
-
expectValidationError(result);
|
|
319
|
+
await expectValidationError(result, InvalidIdentityPublicKeyDataError);
|
|
320
|
+
});
|
|
305
321
|
|
|
306
|
-
|
|
322
|
+
it('should have at least 1 master key', async () => {
|
|
323
|
+
const privateKey = new PrivateKey();
|
|
307
324
|
|
|
308
|
-
|
|
325
|
+
// Mess up public key's purpose
|
|
326
|
+
const identityPublicKey = mockIdentityPublicKeyCreateTransition(
|
|
327
|
+
privateKey.toPublicKey().toBuffer(),
|
|
328
|
+
);
|
|
309
329
|
|
|
310
|
-
|
|
311
|
-
.to.be.calledOnceWithExactly(rawStateTransition.publicKeys);
|
|
312
|
-
});
|
|
330
|
+
identityPublicKey.setPurpose(2);
|
|
313
331
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
332
|
+
stateTransition.setPublicKeys([identityPublicKey]);
|
|
333
|
+
await stateTransition.signByPrivateKey(
|
|
334
|
+
privateKey.toBuffer(),
|
|
335
|
+
identityPublicKey.type,
|
|
336
|
+
);
|
|
337
|
+
identityPublicKey.setSignature(stateTransition.getSignature());
|
|
338
|
+
stateTransition.setPublicKeys([identityPublicKey]);
|
|
319
339
|
|
|
320
|
-
|
|
340
|
+
rawStateTransition = stateTransition.toObject();
|
|
321
341
|
|
|
322
342
|
const result = await validateIdentityCreateTransitionBasic(
|
|
323
343
|
rawStateTransition,
|
|
344
|
+
executionContext,
|
|
324
345
|
);
|
|
325
346
|
|
|
326
|
-
expectValidationError(result);
|
|
327
|
-
|
|
328
|
-
const [error] = result.getErrors();
|
|
329
|
-
|
|
330
|
-
expect(error).to.equal(publicKeysError);
|
|
331
|
-
|
|
332
|
-
expect(validatePublicKeysInIdentityCreateTransition)
|
|
333
|
-
.to.be.calledOnceWithExactly(rawStateTransition.publicKeys);
|
|
347
|
+
await expectValidationError(result, InvalidIdentityPublicKeySecurityLevelError);
|
|
334
348
|
});
|
|
335
349
|
|
|
336
350
|
it('should have valid signatures', async () => {
|
|
337
|
-
const
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
]);
|
|
341
|
-
|
|
342
|
-
validatePublicKeySignaturesMock.resolves(publicKeysResult);
|
|
351
|
+
const invalidSignature = Buffer.alloc(65);
|
|
352
|
+
rawStateTransition.signature = invalidSignature;
|
|
353
|
+
rawStateTransition.publicKeys[0].signature = invalidSignature;
|
|
343
354
|
|
|
344
355
|
const result = await validateIdentityCreateTransitionBasic(
|
|
345
356
|
rawStateTransition,
|
|
357
|
+
executionContext,
|
|
346
358
|
);
|
|
347
359
|
|
|
348
|
-
expectValidationError(result);
|
|
349
|
-
|
|
350
|
-
const [error] = result.getErrors();
|
|
351
|
-
|
|
352
|
-
expect(error).to.equal(publicKeysError);
|
|
360
|
+
await expectValidationError(result, InvalidIdentityKeySignatureError);
|
|
353
361
|
});
|
|
354
362
|
});
|
|
355
363
|
|
|
@@ -357,13 +365,16 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
357
365
|
it('should be present', async () => {
|
|
358
366
|
delete rawStateTransition.signature;
|
|
359
367
|
|
|
360
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
368
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
369
|
+
rawStateTransition,
|
|
370
|
+
executionContext,
|
|
371
|
+
);
|
|
361
372
|
|
|
362
|
-
expectJsonSchemaError(result);
|
|
373
|
+
await expectJsonSchemaError(result);
|
|
363
374
|
|
|
364
375
|
const [error] = result.getErrors();
|
|
365
376
|
|
|
366
|
-
expect(error.
|
|
377
|
+
expect(error.getInstancePath()).to.equal('');
|
|
367
378
|
expect(error.getKeyword()).to.equal('required');
|
|
368
379
|
expect(error.getParams().missingProperty).to.equal('signature');
|
|
369
380
|
});
|
|
@@ -371,52 +382,62 @@ describe('validateIdentityCreateTransitionBasicFactory', () => {
|
|
|
371
382
|
it('should be a byte array', async () => {
|
|
372
383
|
rawStateTransition.signature = new Array(65).fill('string');
|
|
373
384
|
|
|
374
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
385
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
386
|
+
rawStateTransition,
|
|
387
|
+
executionContext,
|
|
388
|
+
);
|
|
375
389
|
|
|
376
|
-
expectJsonSchemaError(result,
|
|
390
|
+
await expectJsonSchemaError(result, 65);
|
|
377
391
|
|
|
378
|
-
const
|
|
392
|
+
const firstError = result.getErrors()[0];
|
|
393
|
+
const lastError = result.getErrors()[64];
|
|
379
394
|
|
|
380
|
-
expect(
|
|
381
|
-
expect(
|
|
395
|
+
expect(firstError.getInstancePath()).to.equal('/signature/0');
|
|
396
|
+
expect(firstError.getKeyword()).to.equal('type');
|
|
382
397
|
|
|
383
|
-
expect(
|
|
398
|
+
expect(lastError.getInstancePath()).to.equal('/signature/64');
|
|
399
|
+
expect(lastError.getKeyword()).to.equal('type');
|
|
384
400
|
});
|
|
385
401
|
|
|
386
402
|
it('should be not shorter than 65 bytes', async () => {
|
|
387
403
|
rawStateTransition.signature = Buffer.alloc(64);
|
|
388
404
|
|
|
389
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
405
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
406
|
+
rawStateTransition,
|
|
407
|
+
executionContext,
|
|
408
|
+
);
|
|
390
409
|
|
|
391
|
-
expectJsonSchemaError(result);
|
|
410
|
+
await expectJsonSchemaError(result);
|
|
392
411
|
|
|
393
412
|
const [error] = result.getErrors();
|
|
394
413
|
|
|
395
|
-
expect(error.
|
|
414
|
+
expect(error.getInstancePath()).to.equal('/signature');
|
|
396
415
|
expect(error.getKeyword()).to.equal('minItems');
|
|
397
416
|
});
|
|
398
417
|
|
|
399
418
|
it('should be not longer than 65 bytes', async () => {
|
|
400
419
|
rawStateTransition.signature = Buffer.alloc(66);
|
|
401
420
|
|
|
402
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
421
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
422
|
+
rawStateTransition,
|
|
423
|
+
executionContext,
|
|
424
|
+
);
|
|
403
425
|
|
|
404
|
-
expectJsonSchemaError(result);
|
|
426
|
+
await expectJsonSchemaError(result);
|
|
405
427
|
|
|
406
428
|
const [error] = result.getErrors();
|
|
407
429
|
|
|
408
|
-
expect(error.
|
|
430
|
+
expect(error.getInstancePath()).to.equal('/signature');
|
|
409
431
|
expect(error.getKeyword()).to.equal('maxItems');
|
|
410
432
|
});
|
|
411
433
|
});
|
|
412
434
|
|
|
413
435
|
it('should return valid result', async () => {
|
|
414
|
-
const result = await validateIdentityCreateTransitionBasic(
|
|
436
|
+
const result = await validateIdentityCreateTransitionBasic(
|
|
437
|
+
rawStateTransition,
|
|
438
|
+
executionContext,
|
|
439
|
+
);
|
|
415
440
|
|
|
416
441
|
expect(result.isValid()).to.be.true();
|
|
417
|
-
|
|
418
|
-
expect(validatePublicKeysMock).to.be.calledOnceWithExactly(
|
|
419
|
-
rawStateTransition.publicKeys,
|
|
420
|
-
);
|
|
421
442
|
});
|
|
422
443
|
});
|