@dashevo/wasm-dpp 0.25.0-dev.15 → 0.25.0-dev.17
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/Cargo.toml +27 -3
- package/dist/errors/patchConsensusErrors.js +94 -115
- package/dist/wasm/wasm_dpp.d.ts +2124 -4081
- package/dist/wasm/wasm_dpp.js +17746 -2656
- package/dist/wasm/wasm_dpp_bg.js +1 -1
- package/lib/dpp.ts +1 -1
- package/lib/errors/patchConsensusErrors.ts +94 -93
- package/lib/test/bootstrap.js +5 -0
- package/lib/test/fixtures/getDataContractFixture.js +11 -5
- package/lib/test/fixtures/getDocumentsFixture.js +4 -4
- package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +13 -19
- package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
- package/lib/test/fixtures/getIdentityFixture.js +21 -32
- package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
- package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
- package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
- package/lib/wasm/wasm_dpp.d.ts +2124 -4081
- package/package.json +5 -5
- package/scripts/build-wasm.sh +6 -9
- package/src/dash_platform_protocol.rs +172 -195
- package/src/data_contract/data_contract.rs +264 -200
- package/src/data_contract/data_contract_facade.rs +24 -46
- package/src/data_contract/errors/mod.rs +1 -0
- package/src/data_contract/mod.rs +2 -2
- package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +91 -79
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -73
- package/src/data_contract_factory/data_contract_factory.rs +39 -83
- package/src/document/document_facade.rs +74 -81
- package/src/document/errors/document_already_exists_error.rs +6 -6
- package/src/document/errors/document_no_revision_error.rs +1 -0
- package/src/document/errors/document_not_provided_error.rs +6 -6
- package/src/document/errors/invalid_document_action_error.rs +11 -7
- package/src/document/errors/invalid_initial_revision_error.rs +4 -4
- package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
- package/src/document/errors/mod.rs +5 -0
- package/src/document/errors/revision_absent_error.rs +6 -6
- package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
- package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
- package/src/document/extended_document.rs +76 -76
- package/src/document/factory.rs +127 -123
- package/src/document/generate_document_id.rs +2 -2
- package/src/document/mod.rs +162 -148
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +50 -48
- package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
- package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
- package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +165 -153
- package/src/document/state_transition/document_batch_transition/mod.rs +230 -217
- package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -10
- package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -11
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -10
- package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -8
- package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -10
- package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -10
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -10
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -10
- package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -10
- package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -10
- package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -10
- package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -10
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -10
- package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -10
- package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -10
- package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -10
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -10
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -10
- package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -10
- package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -10
- package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -10
- package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -10
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +1 -10
- package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -10
- package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -10
- package/src/errors/consensus/basic/json_schema_error.rs +1 -9
- package/src/errors/consensus/basic/mod.rs +2 -0
- package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -10
- package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
- package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -10
- package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -10
- package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -10
- package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -10
- package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
- package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -10
- package/src/errors/consensus/consensus_error.rs +39 -21
- package/src/errors/consensus/deserialize.rs +2 -2
- package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -3
- package/src/errors/consensus/signature/basic_bls_error.rs +1 -10
- package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -10
- package/src/errors/consensus/signature/identity_not_found_error.rs +4 -3
- package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -10
- package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -3
- package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
- package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -2
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -2
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -2
- package/src/errors/consensus/state/data_contract/mod.rs +7 -1
- package/src/errors/consensus/state/document/document_already_present_error.rs +1 -10
- package/src/errors/consensus/state/document/document_not_found_error.rs +1 -10
- package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -10
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -10
- package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +1 -10
- package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -10
- package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -10
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -13
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -10
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -10
- package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -10
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -10
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -10
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -10
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -10
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -10
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -10
- package/src/errors/consensus/value_error.rs +1 -10
- package/src/errors/from.rs +12 -8
- package/src/errors/mod.rs +7 -7
- package/src/identity/factory_utils.rs +10 -10
- package/src/identity/identity.rs +275 -0
- package/src/identity/identity_facade.rs +87 -70
- package/src/identity/identity_factory.rs +74 -54
- package/src/identity/identity_public_key/mod.rs +86 -62
- package/src/identity/mod.rs +25 -256
- package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
- package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
- package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
- package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
- package/src/identity/state_transition/asset_lock_proof/mod.rs +112 -116
- package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +66 -52
- package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
- package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
- package/src/identity/state_transition/identity_create_transition/to_object.rs +9 -11
- package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
- package/src/identity/state_transition/identity_public_key_transitions.rs +81 -66
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +64 -51
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
- package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
- package/src/identity/state_transition/identity_topup_transition/to_object.rs +8 -12
- package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +95 -92
- package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
- package/src/identity/state_transition/identity_update_transition/to_object.rs +14 -18
- package/src/identity/state_transition/mod.rs +4 -2
- package/src/identity/state_transition/transition_types.rs +4 -0
- package/src/lib.rs +9 -9
- package/src/metadata.rs +3 -3
- package/src/protocol_version.rs +2 -2
- package/src/state_transition/conversion.rs +11 -1
- package/src/state_transition/errors/invalid_state_transition_error.rs +9 -9
- package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
- package/src/state_transition/mod.rs +137 -139
- package/src/state_transition/state_transition_facade.rs +2 -3
- package/src/state_transition/state_transition_factory.rs +142 -153
- package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
- package/src/state_transition/validation/validate_state_transition_identity_signature.rs +8 -4
- package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
- package/src/utils.rs +4 -2
- package/src/validation/validation_result.rs +1 -1
- package/test/integration/dataContract/DataContractFacade.spec.js +11 -15
- package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +1 -1
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +1 -1
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +1 -1
- package/test/integration/document/Document.spec.js +3 -3
- package/test/integration/document/DocumentFacade.spec.js +34 -33
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +1 -1
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +1 -1
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +1 -1
- package/test/integration/document/validation/validateDocumentFactory.spec.js +1 -1
- package/test/integration/identity/IdentityFacade.spec.js +29 -58
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +2 -2
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +2 -2
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +2 -2
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +4 -3
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +1 -1
- package/test/integration/identity/validation/validateIdentityFactory.spec.js +2 -2
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +1 -1
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +39 -48
- package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
- package/test/unit/DashPlatformProtocol.spec.js +4 -18
- package/test/unit/dataContract/DataContract.spec.js +100 -121
- package/test/unit/dataContract/DataContractFactory.spec.js +21 -1
- package/test/unit/dataContract/createDataContract.spec.js +1 -1
- package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +23 -13
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +16 -7
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +1 -1
- package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +1 -1
- package/test/unit/document/Document.spec.js +18 -10
- package/test/unit/document/DocumentFactory.spec.js +10 -23
- package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +4 -4
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
- package/test/unit/identity/Identity.spec.js +34 -74
- package/test/unit/identity/IdentityFactory.spec.js +55 -68
- package/test/unit/identity/IdentityPublicKey.spec.js +30 -47
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +23 -55
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +7 -28
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +4 -4
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +19 -36
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +3 -3
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
- package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
- package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
- package/test/unit/stateTransition/StateTransitionFactory.spec.js +13 -18
- package/test/unit/stateTransition/createStateTransitionFactory.spec.js +1 -1
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +1 -1
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +1 -1
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +1 -1
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +2 -2
- package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
- package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
- package/test-d/index.test-d.ts +2 -2
- package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
- package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
- package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
|
@@ -1,47 +1,26 @@
|
|
|
1
|
-
const varint = require('varint');
|
|
2
|
-
|
|
3
1
|
const { hash: hashFunction } = require('@dashevo/dpp/lib/util/hash');
|
|
4
2
|
const { expect } = require('chai');
|
|
5
3
|
const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync');
|
|
6
|
-
const {
|
|
7
|
-
|
|
4
|
+
const {
|
|
5
|
+
Identity, Metadata, IdentityPublicKey, KeyPurpose, KeyType, KeySecurityLevel,
|
|
6
|
+
Identifier,
|
|
7
|
+
} = require('../../..');
|
|
8
8
|
|
|
9
9
|
describe('Identity', () => {
|
|
10
10
|
let rawIdentity;
|
|
11
11
|
let identity;
|
|
12
12
|
let metadataFixture;
|
|
13
|
-
let Identity;
|
|
14
|
-
let Metadata;
|
|
15
|
-
let IdentityPublicKey;
|
|
16
|
-
let KeyPurpose;
|
|
17
|
-
let KeyType;
|
|
18
|
-
let KeySecurityLevel;
|
|
19
|
-
|
|
20
|
-
before(async () => {
|
|
21
|
-
({
|
|
22
|
-
Identity, Metadata, IdentityPublicKey, KeyPurpose, KeyType, KeySecurityLevel,
|
|
23
|
-
} = await loadWasmDpp());
|
|
24
|
-
});
|
|
25
13
|
|
|
26
14
|
beforeEach(async () => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
securityLevel: KeySecurityLevel.MASTER,
|
|
37
|
-
readOnly: false,
|
|
38
|
-
},
|
|
39
|
-
],
|
|
40
|
-
balance: 0,
|
|
41
|
-
revision: 0,
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
identity = new Identity(rawIdentity);
|
|
15
|
+
identity = new Identity(1);
|
|
16
|
+
identity.setId(await generateRandomIdentifierAsync());
|
|
17
|
+
|
|
18
|
+
const publicKey = new IdentityPublicKey(1);
|
|
19
|
+
publicKey.setData(Buffer.alloc(36).fill('a'));
|
|
20
|
+
|
|
21
|
+
identity.setPublicKeys([publicKey]);
|
|
22
|
+
|
|
23
|
+
rawIdentity = identity.toObject();
|
|
45
24
|
|
|
46
25
|
metadataFixture = new Metadata({
|
|
47
26
|
blockHeight: 42,
|
|
@@ -60,14 +39,11 @@ describe('Identity', () => {
|
|
|
60
39
|
});
|
|
61
40
|
});
|
|
62
41
|
|
|
63
|
-
afterEach(() => {
|
|
64
|
-
});
|
|
65
|
-
|
|
66
42
|
describe('#constructor', () => {
|
|
67
43
|
it('should set variables from raw model', () => {
|
|
68
44
|
const instance = identity;
|
|
69
45
|
|
|
70
|
-
expect(instance.getId()
|
|
46
|
+
expect(instance.getId()).to.deep.equal(rawIdentity.id);
|
|
71
47
|
expect(
|
|
72
48
|
instance.getPublicKeys().map((pk) => pk.toObject()),
|
|
73
49
|
).to.deep.equal(
|
|
@@ -78,7 +54,7 @@ describe('Identity', () => {
|
|
|
78
54
|
|
|
79
55
|
describe('#getId', () => {
|
|
80
56
|
it('should return set id', () => {
|
|
81
|
-
expect(identity.getId()
|
|
57
|
+
expect(identity.getId()).to.deep.equal(rawIdentity.id);
|
|
82
58
|
});
|
|
83
59
|
});
|
|
84
60
|
|
|
@@ -99,15 +75,19 @@ describe('Identity', () => {
|
|
|
99
75
|
|
|
100
76
|
it('should set public keys', () => {
|
|
101
77
|
const rawKey = {
|
|
78
|
+
$version: '0',
|
|
102
79
|
id: 2,
|
|
103
80
|
type: KeyType.ECDSA_SECP256K1,
|
|
104
81
|
data: Buffer.alloc(36).fill('a'),
|
|
105
82
|
purpose: KeyPurpose.AUTHENTICATION,
|
|
106
83
|
securityLevel: KeySecurityLevel.MASTER,
|
|
107
84
|
readOnly: false,
|
|
85
|
+
disabledAt: null,
|
|
108
86
|
};
|
|
109
87
|
|
|
110
|
-
const ipk = new IdentityPublicKey(
|
|
88
|
+
const ipk = new IdentityPublicKey(1);
|
|
89
|
+
ipk.setData(Buffer.alloc(36).fill('a'));
|
|
90
|
+
ipk.setId(2);
|
|
111
91
|
|
|
112
92
|
identity.setPublicKeys([ipk]);
|
|
113
93
|
expect(identity.getPublicKeys()).length(1);
|
|
@@ -136,7 +116,7 @@ describe('Identity', () => {
|
|
|
136
116
|
it('should return buffer', () => {
|
|
137
117
|
const result = identity.toBuffer();
|
|
138
118
|
expect(result).to.be.instanceOf(Buffer);
|
|
139
|
-
expect(result).to.have.length(
|
|
119
|
+
expect(result).to.have.length(81);
|
|
140
120
|
});
|
|
141
121
|
});
|
|
142
122
|
|
|
@@ -153,12 +133,6 @@ describe('Identity', () => {
|
|
|
153
133
|
it('should return the same has as JS Identity', () => {
|
|
154
134
|
const expectedHash = hashFunction(identity.toBuffer());
|
|
155
135
|
const result = identity.hash();
|
|
156
|
-
|
|
157
|
-
const identityDataToEncode = identity.toObject();
|
|
158
|
-
delete identityDataToEncode.protocolVersion;
|
|
159
|
-
|
|
160
|
-
varint.encode(identity.getProtocolVersion());
|
|
161
|
-
|
|
162
136
|
expect(result).to.deep.equal(expectedHash);
|
|
163
137
|
});
|
|
164
138
|
});
|
|
@@ -166,10 +140,6 @@ describe('Identity', () => {
|
|
|
166
140
|
describe('#toObject', () => {
|
|
167
141
|
it('should return plain object representation', () => {
|
|
168
142
|
const identityObject = identity.toObject();
|
|
169
|
-
|
|
170
|
-
// We can't compare Identifier directly - it needs to be converted into a Buffer
|
|
171
|
-
rawIdentity.id = rawIdentity.id.toBuffer();
|
|
172
|
-
|
|
173
143
|
expect(identityObject).to.deep.equal(rawIdentity);
|
|
174
144
|
});
|
|
175
145
|
});
|
|
@@ -179,16 +149,18 @@ describe('Identity', () => {
|
|
|
179
149
|
const jsonIdentity = identity.toJSON();
|
|
180
150
|
|
|
181
151
|
expect(jsonIdentity).to.deep.equal({
|
|
182
|
-
|
|
183
|
-
id: rawIdentity.id.toString(),
|
|
152
|
+
$version: '0',
|
|
153
|
+
id: Identifier.from(rawIdentity.id).toString(),
|
|
184
154
|
publicKeys: [
|
|
185
155
|
{
|
|
156
|
+
$version: '0',
|
|
186
157
|
id: 0,
|
|
187
158
|
type: KeyType.ECDSA_SECP256K1,
|
|
188
159
|
data: rawIdentity.publicKeys[0].data.toString('base64'),
|
|
189
160
|
purpose: KeyPurpose.AUTHENTICATION,
|
|
190
161
|
securityLevel: KeySecurityLevel.MASTER,
|
|
191
162
|
readOnly: false,
|
|
163
|
+
disabledAt: null,
|
|
192
164
|
},
|
|
193
165
|
],
|
|
194
166
|
balance: 0,
|
|
@@ -260,27 +232,15 @@ describe('Identity', () => {
|
|
|
260
232
|
|
|
261
233
|
describe('#getPublicKeyMaxId', () => {
|
|
262
234
|
it('should get the biggest public key ID', () => {
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
identity.addPublicKeys(
|
|
273
|
-
key,
|
|
274
|
-
new IdentityPublicKey({
|
|
275
|
-
id: 50,
|
|
276
|
-
type: KeyType.ECDSA_SECP256K1,
|
|
277
|
-
data: Buffer.alloc(36).fill('a'),
|
|
278
|
-
purpose: KeyPurpose.AUTHENTICATION,
|
|
279
|
-
securityLevel: KeySecurityLevel.MASTER,
|
|
280
|
-
signature: Buffer.alloc(36).fill('a'),
|
|
281
|
-
readOnly: false,
|
|
282
|
-
}),
|
|
283
|
-
);
|
|
235
|
+
const key1 = new IdentityPublicKey(1);
|
|
236
|
+
key1.setId(99);
|
|
237
|
+
key1.setData(Buffer.alloc(36).fill('a'));
|
|
238
|
+
|
|
239
|
+
const key2 = new IdentityPublicKey(1);
|
|
240
|
+
key2.setId(50);
|
|
241
|
+
key2.setData(Buffer.alloc(36).fill('a'));
|
|
242
|
+
|
|
243
|
+
identity.addPublicKeys([key1, key2]);
|
|
284
244
|
|
|
285
245
|
const maxId = identity.getPublicKeyMaxId();
|
|
286
246
|
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
const getInstantAssetLockProofFixture = require('../../../lib/test/fixtures/getInstantAssetLockProofFixture');
|
|
2
2
|
const getIdentityFixture = require('../../../lib/test/fixtures/getIdentityFixture');
|
|
3
3
|
const getChainAssetLockProofFixture = require('../../../lib/test/fixtures/getChainAssetLockProofFixture');
|
|
4
|
-
const {
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const {
|
|
5
|
+
Identity, IdentityFactory,
|
|
6
|
+
InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
|
|
7
|
+
IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyWithWitness,
|
|
8
|
+
InvalidIdentityError, UnsupportedProtocolVersionError,
|
|
9
|
+
} = require('../../..');
|
|
10
|
+
const { SerializedObjectParsingError } = require('../../..');
|
|
7
11
|
|
|
8
12
|
describe('IdentityFactory', () => {
|
|
9
13
|
let factory;
|
|
@@ -12,47 +16,17 @@ describe('IdentityFactory', () => {
|
|
|
12
16
|
let chainAssetLockProof;
|
|
13
17
|
let fakeTime;
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
let IdentityFactory;
|
|
17
|
-
let IdentityValidator;
|
|
18
|
-
let InstantAssetLockProof;
|
|
19
|
-
let IdentityCreateTransition;
|
|
20
|
-
let IdentityTopUpTransition;
|
|
21
|
-
let IdentityUpdateTransition;
|
|
22
|
-
let IdentityPublicKeyWithWitness;
|
|
23
|
-
let InvalidIdentityError;
|
|
24
|
-
let UnsupportedProtocolVersionError;
|
|
25
|
-
let ChainAssetLockProof;
|
|
26
|
-
|
|
27
|
-
before(async () => {
|
|
28
|
-
({
|
|
29
|
-
Identity, IdentityFactory, IdentityValidator,
|
|
30
|
-
InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
|
|
31
|
-
IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyWithWitness,
|
|
32
|
-
InvalidIdentityError, UnsupportedProtocolVersionError,
|
|
33
|
-
} = await loadWasmDpp());
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
beforeEach(async function () {
|
|
37
|
-
// const instantAssetLockProofJS = ;
|
|
38
|
-
// const chainAssetLockProofJS = ;
|
|
19
|
+
beforeEach(async function beforeEach() {
|
|
39
20
|
instantAssetLockProof = await getInstantAssetLockProofFixture();
|
|
40
21
|
chainAssetLockProof = new ChainAssetLockProof(getChainAssetLockProofFixture().toObject());
|
|
41
22
|
|
|
42
|
-
const blsAdapter = await getBlsAdapterMock();
|
|
43
|
-
|
|
44
|
-
const identityValidator = new IdentityValidator(blsAdapter);
|
|
23
|
+
// const blsAdapter = await getBlsAdapterMock();
|
|
45
24
|
|
|
46
|
-
|
|
47
|
-
1,
|
|
48
|
-
identityValidator,
|
|
49
|
-
);
|
|
25
|
+
// const identityValidator = new IdentityValidator(blsAdapter);
|
|
50
26
|
|
|
51
|
-
|
|
52
|
-
identityObject.id = instantAssetLockProof.createIdentifier();
|
|
27
|
+
factory = new IdentityFactory(1);
|
|
53
28
|
|
|
54
|
-
identity =
|
|
55
|
-
identity.setAssetLockProof(instantAssetLockProof);
|
|
29
|
+
identity = await getIdentityFixture(instantAssetLockProof.createIdentifier());
|
|
56
30
|
identity.setBalance(0);
|
|
57
31
|
|
|
58
32
|
fakeTime = this.sinonSandbox.useFakeTimers(new Date());
|
|
@@ -64,15 +38,12 @@ describe('IdentityFactory', () => {
|
|
|
64
38
|
|
|
65
39
|
describe('#create', () => {
|
|
66
40
|
it('should create Identity from asset lock transaction, output index, proof and public keys', () => {
|
|
67
|
-
const publicKeys = identity
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
...identityPublicKey.toObject(),
|
|
71
|
-
readonly: true,
|
|
72
|
-
}));
|
|
41
|
+
const publicKeys = identity.getPublicKeys();
|
|
42
|
+
publicKeys.forEach((key) => key.setReadOnly(true));
|
|
43
|
+
identity.setPublicKeys(publicKeys);
|
|
73
44
|
|
|
74
45
|
const result = factory.create(
|
|
75
|
-
instantAssetLockProof,
|
|
46
|
+
instantAssetLockProof.createIdentifier(),
|
|
76
47
|
publicKeys,
|
|
77
48
|
);
|
|
78
49
|
|
|
@@ -81,7 +52,8 @@ describe('IdentityFactory', () => {
|
|
|
81
52
|
});
|
|
82
53
|
});
|
|
83
54
|
|
|
84
|
-
|
|
55
|
+
// TODO(versioning): re-check. Not used anymore
|
|
56
|
+
describe.skip('#createFromObject', () => {
|
|
85
57
|
it('should skip validation if options is set', () => {
|
|
86
58
|
const identityObject = identity.toObject();
|
|
87
59
|
identityObject.protocolVersion = 100;
|
|
@@ -89,7 +61,8 @@ describe('IdentityFactory', () => {
|
|
|
89
61
|
expect(result).to.exist();
|
|
90
62
|
});
|
|
91
63
|
|
|
92
|
-
|
|
64
|
+
// TODO(versioning): restore
|
|
65
|
+
it.skip('should throw an error if validation have failed', () => {
|
|
93
66
|
const identityObject = identity.toObject();
|
|
94
67
|
identityObject.protocolVersion = 3;
|
|
95
68
|
|
|
@@ -126,7 +99,8 @@ describe('IdentityFactory', () => {
|
|
|
126
99
|
expect(result.toObject()).to.deep.equal(rawIdentity);
|
|
127
100
|
});
|
|
128
101
|
|
|
129
|
-
|
|
102
|
+
// TODO(versioning): restore
|
|
103
|
+
it.skip('should throw InvalidIdentityError if the decoding fails with consensus error', () => {
|
|
130
104
|
try {
|
|
131
105
|
// Mess up protocol version
|
|
132
106
|
serializedIdentity[0] = 3;
|
|
@@ -141,7 +115,8 @@ describe('IdentityFactory', () => {
|
|
|
141
115
|
}
|
|
142
116
|
});
|
|
143
117
|
|
|
144
|
-
|
|
118
|
+
// TODO(versioning): restore
|
|
119
|
+
it.skip('should throw an error if decoding fails with any other error', () => {
|
|
145
120
|
try {
|
|
146
121
|
serializedIdentity = serializedIdentity.slice(4);
|
|
147
122
|
factory.createFromBuffer(serializedIdentity);
|
|
@@ -172,7 +147,11 @@ describe('IdentityFactory', () => {
|
|
|
172
147
|
|
|
173
148
|
describe('#createIdentityCreateTransition', () => {
|
|
174
149
|
it('should create IdentityCreateTransition from Identity model', () => {
|
|
175
|
-
const stateTransition = factory.createIdentityCreateTransition(
|
|
150
|
+
const stateTransition = factory.createIdentityCreateTransition(
|
|
151
|
+
identity,
|
|
152
|
+
instantAssetLockProof,
|
|
153
|
+
1,
|
|
154
|
+
);
|
|
176
155
|
|
|
177
156
|
expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
|
|
178
157
|
const keysToExpect = stateTransition.getPublicKeys()
|
|
@@ -182,8 +161,14 @@ describe('IdentityFactory', () => {
|
|
|
182
161
|
return keyObject;
|
|
183
162
|
});
|
|
184
163
|
|
|
164
|
+
const actualKeys = identity.getPublicKeys().map((key) => {
|
|
165
|
+
const keyObject = key.toObject();
|
|
166
|
+
delete keyObject.disabledAt;
|
|
167
|
+
return keyObject;
|
|
168
|
+
});
|
|
169
|
+
|
|
185
170
|
expect(keysToExpect)
|
|
186
|
-
.to.deep.equal(
|
|
171
|
+
.to.deep.equal(actualKeys);
|
|
187
172
|
expect(stateTransition.getAssetLockProof().toObject())
|
|
188
173
|
.to.deep.equal(instantAssetLockProof.toObject());
|
|
189
174
|
});
|
|
@@ -191,13 +176,14 @@ describe('IdentityFactory', () => {
|
|
|
191
176
|
|
|
192
177
|
describe('createChainAssetLockProof', () => {
|
|
193
178
|
it('should create IdentityCreateTransition from Identity model', async () => {
|
|
194
|
-
|
|
195
|
-
identityObject.id = chainAssetLockProof.createIdentifier();
|
|
196
|
-
identity = new Identity(identityObject);
|
|
197
|
-
identity.setAssetLockProof(chainAssetLockProof);
|
|
179
|
+
identity = await getIdentityFixture(chainAssetLockProof.createIdentifier());
|
|
198
180
|
identity.setBalance(0);
|
|
199
181
|
|
|
200
|
-
const stateTransition = factory.createIdentityCreateTransition(
|
|
182
|
+
const stateTransition = factory.createIdentityCreateTransition(
|
|
183
|
+
identity,
|
|
184
|
+
chainAssetLockProof,
|
|
185
|
+
1,
|
|
186
|
+
);
|
|
201
187
|
|
|
202
188
|
expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
|
|
203
189
|
const keysToExpect = stateTransition.getPublicKeys()
|
|
@@ -207,8 +193,14 @@ describe('IdentityFactory', () => {
|
|
|
207
193
|
return keyObject;
|
|
208
194
|
});
|
|
209
195
|
|
|
196
|
+
const actualKeys = identity.getPublicKeys().map((key) => {
|
|
197
|
+
const keyObject = key.toObject();
|
|
198
|
+
delete keyObject.disabledAt;
|
|
199
|
+
return keyObject;
|
|
200
|
+
});
|
|
201
|
+
|
|
210
202
|
expect(keysToExpect)
|
|
211
|
-
.to.deep.equal(
|
|
203
|
+
.to.deep.equal(actualKeys);
|
|
212
204
|
|
|
213
205
|
expect(stateTransition.getAssetLockProof().toObject())
|
|
214
206
|
.to.deep.equal(chainAssetLockProof.toObject());
|
|
@@ -234,15 +226,10 @@ describe('IdentityFactory', () => {
|
|
|
234
226
|
it('should create IdentityUpdateTransition', () => {
|
|
235
227
|
const revision = 1;
|
|
236
228
|
const disablePublicKeys = [identity.getPublicKeyById(0)];
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
242
|
-
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
243
|
-
readOnly: false,
|
|
244
|
-
signature: Buffer.alloc(0),
|
|
245
|
-
})];
|
|
229
|
+
const key = new IdentityPublicKeyWithWitness(1);
|
|
230
|
+
key.setData(Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'));
|
|
231
|
+
|
|
232
|
+
const addPublicKeys = [key];
|
|
246
233
|
|
|
247
234
|
const stateTransition = factory
|
|
248
235
|
.createIdentityUpdateTransition(
|
|
@@ -256,8 +243,8 @@ describe('IdentityFactory', () => {
|
|
|
256
243
|
expect(stateTransition).to.be.instanceOf(IdentityUpdateTransition);
|
|
257
244
|
expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(identity.getId().toBuffer());
|
|
258
245
|
expect(stateTransition.getRevision()).to.deep.equal(revision);
|
|
259
|
-
expect(stateTransition.getPublicKeysToAdd().map((
|
|
260
|
-
.to.deep.equal(addPublicKeys.map((
|
|
246
|
+
expect(stateTransition.getPublicKeysToAdd().map((k) => k.toObject()))
|
|
247
|
+
.to.deep.equal(addPublicKeys.map((k) => k.toObject()));
|
|
261
248
|
expect(stateTransition.getPublicKeyIdsToDisable()).to.deep.equal([0]);
|
|
262
249
|
expect(stateTransition.getPublicKeysDisabledAt()).to.deep.equal(new Date());
|
|
263
250
|
});
|
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const { IdentityPublicKey } = require('@dashevo/wasm-dpp');
|
|
2
2
|
|
|
3
3
|
describe('IdentityPublicKey', () => {
|
|
4
4
|
let rawPublicKey;
|
|
5
5
|
let publicKey;
|
|
6
|
-
let IdentityPublicKey;
|
|
7
6
|
|
|
8
|
-
beforeEach(
|
|
9
|
-
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
const keyData = Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64');
|
|
10
9
|
|
|
11
10
|
rawPublicKey = {
|
|
12
11
|
id: 0,
|
|
13
12
|
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
14
|
-
data:
|
|
13
|
+
data: keyData,
|
|
15
14
|
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
16
15
|
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
17
16
|
readOnly: false,
|
|
18
17
|
};
|
|
19
|
-
|
|
18
|
+
|
|
19
|
+
publicKey = new IdentityPublicKey(1);
|
|
20
|
+
publicKey.setData(keyData);
|
|
20
21
|
});
|
|
21
22
|
|
|
22
23
|
describe('#constructor', () => {
|
|
23
24
|
it('should set variables from raw model', () => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
expect(
|
|
27
|
-
expect(instance.getType()).to.equal(rawPublicKey.type);
|
|
28
|
-
expect(instance.getData()).to.deep.equal(rawPublicKey.data);
|
|
25
|
+
expect(publicKey.getId()).to.equal(rawPublicKey.id);
|
|
26
|
+
expect(publicKey.getType()).to.equal(rawPublicKey.type);
|
|
27
|
+
expect(publicKey.getData()).to.deep.equal(rawPublicKey.data);
|
|
29
28
|
});
|
|
30
29
|
});
|
|
31
30
|
|
|
@@ -145,17 +144,9 @@ describe('IdentityPublicKey', () => {
|
|
|
145
144
|
});
|
|
146
145
|
|
|
147
146
|
it('should return data in case ECDSA_HASH160', () => {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTdi', 'base64'),
|
|
152
|
-
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
153
|
-
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
154
|
-
readOnly: false,
|
|
155
|
-
disabledAt: 123,
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
publicKey = new IdentityPublicKey(rawPublicKey);
|
|
147
|
+
publicKey = new IdentityPublicKey(1);
|
|
148
|
+
publicKey.setType(IdentityPublicKey.TYPES.ECDSA_HASH160);
|
|
149
|
+
publicKey.setData(Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTdi', 'base64'));
|
|
159
150
|
|
|
160
151
|
const result = publicKey.hash();
|
|
161
152
|
|
|
@@ -165,17 +156,9 @@ describe('IdentityPublicKey', () => {
|
|
|
165
156
|
});
|
|
166
157
|
|
|
167
158
|
it('should return original public key hash in case BLS12_381', () => {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
data: Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'),
|
|
172
|
-
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
173
|
-
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
174
|
-
readOnly: false,
|
|
175
|
-
disabledAt: 123,
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
publicKey = new IdentityPublicKey(rawPublicKey);
|
|
159
|
+
publicKey = new IdentityPublicKey(1);
|
|
160
|
+
publicKey.setType(IdentityPublicKey.TYPES.BLS12_381);
|
|
161
|
+
publicKey.setData(Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'));
|
|
179
162
|
|
|
180
163
|
const result = publicKey.hash();
|
|
181
164
|
|
|
@@ -185,17 +168,9 @@ describe('IdentityPublicKey', () => {
|
|
|
185
168
|
});
|
|
186
169
|
|
|
187
170
|
it('should return data in case BIP13_SCRIPT_HASH', () => {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
data: Buffer.from('54c557e07dde5bb6cb791c7a540e0a4796f5e97e', 'hex'),
|
|
192
|
-
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
193
|
-
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
194
|
-
readOnly: false,
|
|
195
|
-
disabledAt: 123,
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
publicKey = new IdentityPublicKey(rawPublicKey);
|
|
171
|
+
publicKey = new IdentityPublicKey(1);
|
|
172
|
+
publicKey.setType(IdentityPublicKey.TYPES.BIP13_SCRIPT_HASH);
|
|
173
|
+
publicKey.setData(Buffer.from('54c557e07dde5bb6cb791c7a540e0a4796f5e97e', 'hex'));
|
|
199
174
|
|
|
200
175
|
const result = publicKey.hash();
|
|
201
176
|
|
|
@@ -207,28 +182,36 @@ describe('IdentityPublicKey', () => {
|
|
|
207
182
|
|
|
208
183
|
describe('#toJSON', () => {
|
|
209
184
|
it('should return JSON representation', () => {
|
|
185
|
+
const now = new Date();
|
|
186
|
+
publicKey.setDisabledAt(now);
|
|
187
|
+
|
|
210
188
|
const jsonPublicKey = publicKey.toJSON();
|
|
211
189
|
|
|
212
190
|
expect(jsonPublicKey).to.deep.equal({
|
|
191
|
+
$version: '0',
|
|
213
192
|
id: 0,
|
|
214
193
|
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
215
194
|
data: 'AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH',
|
|
216
195
|
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
217
196
|
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
218
197
|
readOnly: false,
|
|
198
|
+
disabledAt: now.getTime(),
|
|
219
199
|
});
|
|
220
200
|
});
|
|
201
|
+
});
|
|
221
202
|
|
|
222
|
-
|
|
203
|
+
describe('#toObject', () => {
|
|
204
|
+
it('should return object representation', () => {
|
|
223
205
|
const now = new Date();
|
|
224
206
|
publicKey.setDisabledAt(now);
|
|
225
207
|
|
|
226
|
-
const jsonPublicKey = publicKey.
|
|
208
|
+
const jsonPublicKey = publicKey.toObject();
|
|
227
209
|
|
|
228
210
|
expect(jsonPublicKey).to.deep.equal({
|
|
211
|
+
$version: '0',
|
|
229
212
|
id: 0,
|
|
230
213
|
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
231
|
-
data: 'AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH',
|
|
214
|
+
data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
|
|
232
215
|
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
233
216
|
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
234
217
|
readOnly: false,
|