@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,15 +1,12 @@
|
|
|
1
1
|
const { PrivateKey } = require('@dashevo/dashcore-lib');
|
|
2
2
|
const crypto = require('crypto');
|
|
3
3
|
|
|
4
|
-
const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock');
|
|
5
|
-
|
|
6
4
|
const getIdentityFixture = require('../../../lib/test/fixtures/getIdentityFixture');
|
|
7
5
|
const getIdentityCreateTransitionFixture = require('../../../lib/test/fixtures/getIdentityCreateTransitionFixture');
|
|
8
6
|
const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture');
|
|
9
7
|
const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
|
|
10
8
|
|
|
11
9
|
const { default: loadWasmDpp } = require('../../../dist');
|
|
12
|
-
const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
|
|
13
10
|
const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync');
|
|
14
11
|
|
|
15
12
|
describe('StateTransitionFacade', () => {
|
|
@@ -24,37 +21,35 @@ describe('StateTransitionFacade', () => {
|
|
|
24
21
|
|
|
25
22
|
let DashPlatformProtocol;
|
|
26
23
|
let DataContractFactory;
|
|
27
|
-
let DataContractValidator;
|
|
24
|
+
// let DataContractValidator;
|
|
28
25
|
let DataContractCreateTransition;
|
|
29
|
-
let Identity;
|
|
26
|
+
// let Identity;
|
|
30
27
|
let ValidationResult;
|
|
31
28
|
let IdentityPublicKey;
|
|
32
29
|
let DocumentFactory;
|
|
33
|
-
let DocumentValidator;
|
|
34
|
-
let ProtocolVersionValidator;
|
|
30
|
+
// let DocumentValidator;
|
|
31
|
+
// let ProtocolVersionValidator;
|
|
35
32
|
let UnsupportedProtocolVersionError;
|
|
36
33
|
let InvalidStateTransitionSignatureError;
|
|
37
34
|
let DataContractAlreadyPresentError;
|
|
38
35
|
let BalanceIsNotEnoughError;
|
|
39
|
-
let StateTransitionExecutionContext;
|
|
36
|
+
// let StateTransitionExecutionContext;
|
|
40
37
|
|
|
41
38
|
before(async () => {
|
|
42
39
|
({
|
|
43
40
|
DashPlatformProtocol,
|
|
44
41
|
ValidationResult,
|
|
45
42
|
DataContractCreateTransition,
|
|
46
|
-
Identity,
|
|
47
|
-
DataContractValidator,
|
|
43
|
+
// Identity,
|
|
48
44
|
DataContractFactory,
|
|
49
45
|
IdentityPublicKey,
|
|
50
46
|
DocumentFactory,
|
|
51
|
-
DocumentValidator,
|
|
52
|
-
ProtocolVersionValidator,
|
|
47
|
+
// DocumentValidator,
|
|
48
|
+
// ProtocolVersionValidator,
|
|
53
49
|
UnsupportedProtocolVersionError,
|
|
54
50
|
InvalidStateTransitionSignatureError,
|
|
55
51
|
DataContractAlreadyPresentError,
|
|
56
52
|
BalanceIsNotEnoughError,
|
|
57
|
-
StateTransitionExecutionContext,
|
|
58
53
|
} = await loadWasmDpp());
|
|
59
54
|
});
|
|
60
55
|
|
|
@@ -65,23 +60,21 @@ describe('StateTransitionFacade', () => {
|
|
|
65
60
|
const publicKey = privateKeyModel.toPublicKey().toBuffer();
|
|
66
61
|
const publicKeyId = 1;
|
|
67
62
|
|
|
68
|
-
executionContext = new StateTransitionExecutionContext();
|
|
63
|
+
// executionContext = new StateTransitionExecutionContext();
|
|
69
64
|
|
|
70
|
-
|
|
65
|
+
identityPublicKey = new IdentityPublicKey(1);
|
|
71
66
|
|
|
72
|
-
identityPublicKey
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
readOnly: false,
|
|
79
|
-
});
|
|
67
|
+
identityPublicKey.setId(publicKeyId);
|
|
68
|
+
identityPublicKey.setType(IdentityPublicKey.TYPES.ECDSA_SECP256K1);
|
|
69
|
+
identityPublicKey.setData(publicKey);
|
|
70
|
+
identityPublicKey.setSecurityLevel(IdentityPublicKey.SECURITY_LEVELS.CRITICAL);
|
|
71
|
+
identityPublicKey.setPurpose(IdentityPublicKey.PURPOSES.AUTHENTICATION);
|
|
72
|
+
identityPublicKey.setReadOnly(false);
|
|
80
73
|
|
|
81
74
|
dataContract = await getDataContractFixture();
|
|
82
75
|
|
|
83
|
-
const dataContractValidator = new DataContractValidator();
|
|
84
|
-
const dataContractFactory = new DataContractFactory(1
|
|
76
|
+
// const dataContractValidator = new DataContractValidator();
|
|
77
|
+
const dataContractFactory = new DataContractFactory(1);
|
|
85
78
|
|
|
86
79
|
dataContractCreateTransition = await dataContractFactory.createDataContractCreateTransition(
|
|
87
80
|
dataContract,
|
|
@@ -91,38 +84,36 @@ describe('StateTransitionFacade', () => {
|
|
|
91
84
|
privateKey,
|
|
92
85
|
);
|
|
93
86
|
|
|
94
|
-
const documentValidator = new DocumentValidator(new ProtocolVersionValidator());
|
|
95
|
-
|
|
87
|
+
// const documentValidator = new DocumentValidator(new ProtocolVersionValidator());
|
|
88
|
+
// documentValidator, stateRepositoryMock
|
|
89
|
+
const documentFactory = new DocumentFactory(1);
|
|
90
|
+
|
|
91
|
+
identityPublicKey = new IdentityPublicKey(1);
|
|
92
|
+
|
|
93
|
+
identityPublicKey.setId(publicKeyId);
|
|
94
|
+
identityPublicKey.setType(IdentityPublicKey.TYPES.ECDSA_SECP256K1);
|
|
95
|
+
identityPublicKey.setData(publicKey);
|
|
96
|
+
identityPublicKey.setSecurityLevel(IdentityPublicKey.SECURITY_LEVELS.HIGH);
|
|
97
|
+
identityPublicKey.setPurpose(IdentityPublicKey.PURPOSES.AUTHENTICATION);
|
|
98
|
+
identityPublicKey.setReadOnly(false);
|
|
96
99
|
|
|
97
100
|
documentsBatchTransition = documentFactory.createStateTransition({
|
|
98
101
|
create: await getDocumentsFixture(dataContract),
|
|
99
102
|
});
|
|
100
103
|
await documentsBatchTransition.sign(identityPublicKey, privateKey);
|
|
101
104
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
identity = new Identity(identityObject);
|
|
105
|
+
identity = await getIdentityFixture();
|
|
106
|
+
identity.setId(await generateRandomIdentifierAsync());
|
|
107
|
+
identity.setBalance(10000000);
|
|
106
108
|
identity.setPublicKeys([identityPublicKey]);
|
|
107
109
|
|
|
108
|
-
const blockTime = Date.now();
|
|
109
|
-
|
|
110
|
-
stateRepositoryMock.fetchIdentity.resolves(identity);
|
|
111
|
-
stateRepositoryMock.fetchIdentityBalance.resolves(identity.getBalance());
|
|
112
|
-
stateRepositoryMock.fetchLatestPlatformBlockTime.resolves(blockTime);
|
|
113
|
-
stateRepositoryMock.fetchDataContract.resolves(null);
|
|
114
|
-
|
|
115
|
-
const blsAdapter = await getBlsAdapterMock();
|
|
116
|
-
|
|
117
110
|
dpp = new DashPlatformProtocol(
|
|
118
|
-
blsAdapter,
|
|
119
|
-
stateRepositoryMock,
|
|
120
111
|
{ generate: () => crypto.randomBytes(32) },
|
|
121
112
|
1,
|
|
122
113
|
);
|
|
123
114
|
});
|
|
124
115
|
|
|
125
|
-
describe('createFromObject', () => {
|
|
116
|
+
describe.skip('createFromObject', () => {
|
|
126
117
|
it('should create State Transition from plain object', async () => {
|
|
127
118
|
const object = dataContractCreateTransition.toObject();
|
|
128
119
|
const result = await dpp.stateTransition.createFromObject(
|
|
@@ -147,7 +138,7 @@ describe('StateTransitionFacade', () => {
|
|
|
147
138
|
});
|
|
148
139
|
});
|
|
149
140
|
|
|
150
|
-
describe('validate', () => {
|
|
141
|
+
describe.skip('validate', () => {
|
|
151
142
|
it('should return invalid result if State Transition structure is invalid', async () => {
|
|
152
143
|
const rawStateTransition = dataContractCreateTransition.toObject();
|
|
153
144
|
rawStateTransition.protocolVersion = 100;
|
|
@@ -227,7 +218,7 @@ describe('StateTransitionFacade', () => {
|
|
|
227
218
|
});
|
|
228
219
|
});
|
|
229
220
|
|
|
230
|
-
describe('validateBasic', () => {
|
|
221
|
+
describe.skip('validateBasic', () => {
|
|
231
222
|
it('should validate State Transition', async () => {
|
|
232
223
|
const result = await dpp.stateTransition.validateBasic(
|
|
233
224
|
dataContractCreateTransition.toObject(), executionContext,
|
|
@@ -238,7 +229,7 @@ describe('StateTransitionFacade', () => {
|
|
|
238
229
|
});
|
|
239
230
|
});
|
|
240
231
|
|
|
241
|
-
describe('validateSignature', () => {
|
|
232
|
+
describe.skip('validateSignature', () => {
|
|
242
233
|
it('should validate identity signed State Transition', async () => {
|
|
243
234
|
const result = await dpp.stateTransition.validateSignature(
|
|
244
235
|
dataContractCreateTransition, executionContext,
|
|
@@ -269,7 +260,7 @@ describe('StateTransitionFacade', () => {
|
|
|
269
260
|
});
|
|
270
261
|
});
|
|
271
262
|
|
|
272
|
-
describe('validateFee', () => {
|
|
263
|
+
describe.skip('validateFee', () => {
|
|
273
264
|
it('should validate State Transition', async () => {
|
|
274
265
|
const result = await dpp.stateTransition.validateFee(
|
|
275
266
|
dataContractCreateTransition,
|
|
@@ -281,7 +272,7 @@ describe('StateTransitionFacade', () => {
|
|
|
281
272
|
});
|
|
282
273
|
});
|
|
283
274
|
|
|
284
|
-
describe('validateState', () => {
|
|
275
|
+
describe.skip('validateState', () => {
|
|
285
276
|
it('should validate State Transition', async () => {
|
|
286
277
|
const result = await dpp.stateTransition.validateState(
|
|
287
278
|
dataContractCreateTransition,
|
|
@@ -3,7 +3,7 @@ const { default: loadWasmDpp } = require('../../..');
|
|
|
3
3
|
|
|
4
4
|
let { generateTemporaryEcdsaPrivateKey } = require('../../..');
|
|
5
5
|
|
|
6
|
-
describe('generateTemporaryEcdsaPrivateKey', () => {
|
|
6
|
+
describe.skip('generateTemporaryEcdsaPrivateKey', () => {
|
|
7
7
|
beforeEach(async () => {
|
|
8
8
|
({ generateTemporaryEcdsaPrivateKey } = await loadWasmDpp());
|
|
9
9
|
});
|
|
@@ -1,27 +1,21 @@
|
|
|
1
1
|
const crypto = require('crypto');
|
|
2
2
|
|
|
3
|
-
const createStateRepositoryMock = require('../../lib/test/mocks/createStateRepositoryMock');
|
|
4
|
-
const getBlsAdapterMock = require('../../lib/test/mocks/getBlsAdapterMock');
|
|
5
3
|
const { DashPlatformProtocol, getLatestProtocolVersion } = require('../..');
|
|
6
4
|
const { default: loadWasmDpp } = require('../..');
|
|
7
5
|
|
|
8
6
|
describe('DashPlatformProtocol', () => {
|
|
9
7
|
let dpp;
|
|
10
|
-
let stateRepositoryMock;
|
|
11
8
|
|
|
12
|
-
beforeEach(async
|
|
9
|
+
beforeEach(async () => {
|
|
13
10
|
await loadWasmDpp();
|
|
14
|
-
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
15
11
|
|
|
16
12
|
dpp = new DashPlatformProtocol(
|
|
17
|
-
getBlsAdapterMock(),
|
|
18
|
-
stateRepositoryMock,
|
|
19
13
|
{ generate: () => crypto.randomBytes(32) },
|
|
20
14
|
getLatestProtocolVersion(),
|
|
21
15
|
);
|
|
22
16
|
});
|
|
23
17
|
|
|
24
|
-
describe('constructor', () => {
|
|
18
|
+
describe.skip('constructor', () => {
|
|
25
19
|
it('should set default protocol version', () => {
|
|
26
20
|
dpp = new DashPlatformProtocol();
|
|
27
21
|
|
|
@@ -29,15 +23,7 @@ describe('DashPlatformProtocol', () => {
|
|
|
29
23
|
});
|
|
30
24
|
});
|
|
31
25
|
|
|
32
|
-
describe('
|
|
33
|
-
it('should return StateRepository', () => {
|
|
34
|
-
const result = dpp.getStateRepository();
|
|
35
|
-
|
|
36
|
-
expect(result).to.equal(stateRepositoryMock);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
describe('setProtocolVersion', () => {
|
|
26
|
+
describe.skip('setProtocolVersion', () => {
|
|
41
27
|
it('should set protocol version', () => {
|
|
42
28
|
expect(dpp.protocolVersion).to.equal(getLatestProtocolVersion());
|
|
43
29
|
|
|
@@ -47,7 +33,7 @@ describe('DashPlatformProtocol', () => {
|
|
|
47
33
|
});
|
|
48
34
|
});
|
|
49
35
|
|
|
50
|
-
describe('getProtocolVersion', () => {
|
|
36
|
+
describe.skip('getProtocolVersion', () => {
|
|
51
37
|
it('should get protocol version', () => {
|
|
52
38
|
expect(dpp.protocolVersion).to.equal(getLatestProtocolVersion());
|
|
53
39
|
|
|
@@ -7,21 +7,20 @@ const { default: loadWasmDpp } = require('../../../dist');
|
|
|
7
7
|
describe('DataContract', () => {
|
|
8
8
|
let documentType;
|
|
9
9
|
let documentSchema;
|
|
10
|
-
let
|
|
10
|
+
let documentSchemas;
|
|
11
11
|
let ownerId;
|
|
12
12
|
let entropy;
|
|
13
13
|
let contractId;
|
|
14
14
|
let dataContract;
|
|
15
|
-
let
|
|
15
|
+
let schemaDefs;
|
|
16
16
|
|
|
17
17
|
let DataContract;
|
|
18
|
-
let DataContractDefaults;
|
|
19
18
|
let Identifier;
|
|
20
19
|
let Metadata;
|
|
21
20
|
|
|
22
21
|
before(async () => {
|
|
23
22
|
({
|
|
24
|
-
DataContract,
|
|
23
|
+
DataContract, Identifier, Metadata,
|
|
25
24
|
} = await loadWasmDpp());
|
|
26
25
|
});
|
|
27
26
|
|
|
@@ -29,18 +28,20 @@ describe('DataContract', () => {
|
|
|
29
28
|
documentType = 'niceDocument';
|
|
30
29
|
|
|
31
30
|
documentSchema = {
|
|
31
|
+
type: 'object',
|
|
32
32
|
properties: {
|
|
33
33
|
nice: {
|
|
34
34
|
type: 'boolean',
|
|
35
35
|
},
|
|
36
36
|
aBinaryProperty: {
|
|
37
|
-
type: '
|
|
37
|
+
type: 'array',
|
|
38
38
|
byteArray: true,
|
|
39
39
|
},
|
|
40
40
|
},
|
|
41
|
+
additionalProperties: false,
|
|
41
42
|
};
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
documentSchemas = {
|
|
44
45
|
[documentType]: documentSchema,
|
|
45
46
|
};
|
|
46
47
|
|
|
@@ -48,38 +49,32 @@ describe('DataContract', () => {
|
|
|
48
49
|
entropy = Buffer.alloc(32, 420);
|
|
49
50
|
contractId = (await generateRandomIdentifier()).toBuffer();
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
schemaDefs = { something: { type: 'string' } };
|
|
52
53
|
|
|
53
54
|
dataContract = new DataContract({
|
|
54
|
-
$
|
|
55
|
-
|
|
55
|
+
$format_version: '0',
|
|
56
|
+
id: contractId,
|
|
56
57
|
version: 1,
|
|
57
|
-
protocolVersion: 1,
|
|
58
58
|
ownerId,
|
|
59
|
-
|
|
60
|
-
$defs: defs,
|
|
59
|
+
documentSchemas,
|
|
61
60
|
});
|
|
62
61
|
});
|
|
63
62
|
|
|
64
63
|
describe('constructor', () => {
|
|
65
64
|
it('should create new DataContract', async () => {
|
|
66
|
-
const id = (await generateRandomIdentifier()).toBuffer();
|
|
67
|
-
|
|
68
65
|
dataContract = new DataContract({
|
|
69
|
-
$
|
|
70
|
-
|
|
71
|
-
ownerId,
|
|
72
|
-
protocolVersion: 1,
|
|
66
|
+
$format_version: '0',
|
|
67
|
+
id: contractId,
|
|
73
68
|
version: 1,
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
ownerId,
|
|
70
|
+
documentSchemas,
|
|
71
|
+
schemaDefs,
|
|
76
72
|
});
|
|
77
73
|
|
|
78
|
-
expect(dataContract.getId().toBuffer()).to.deep.equal(
|
|
74
|
+
expect(dataContract.getId().toBuffer()).to.deep.equal(contractId);
|
|
79
75
|
expect(dataContract.getOwnerId().toBuffer()).to.deep.equal(ownerId);
|
|
80
|
-
expect(dataContract.
|
|
81
|
-
expect(dataContract.
|
|
82
|
-
expect(dataContract.getDefinitions()).to.deep.equal(defs);
|
|
76
|
+
expect(dataContract.getDocumentSchemas()).to.deep.equal(documentSchemas);
|
|
77
|
+
expect(dataContract.getSchemaDefs()).to.deep.equal(schemaDefs);
|
|
83
78
|
});
|
|
84
79
|
});
|
|
85
80
|
|
|
@@ -92,71 +87,49 @@ describe('DataContract', () => {
|
|
|
92
87
|
});
|
|
93
88
|
});
|
|
94
89
|
|
|
95
|
-
describe('#
|
|
96
|
-
it('should return JSON Schema ID', () => {
|
|
97
|
-
const result = dataContract.getJsonSchemaId();
|
|
98
|
-
|
|
99
|
-
expect(result).to.equal(dataContract.getId().toString());
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
describe('#setJsonMetaSchema', () => {
|
|
104
|
-
it('should set meta schema', () => {
|
|
105
|
-
const metaSchema = 'http://test.com/schema';
|
|
106
|
-
|
|
107
|
-
dataContract.setJsonMetaSchema(metaSchema);
|
|
108
|
-
|
|
109
|
-
expect(dataContract.getJsonMetaSchema()).to.deep.equal(metaSchema);
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
describe('#getJsonMetaSchema', () => {
|
|
114
|
-
it('should return meta schema', () => {
|
|
115
|
-
const result = dataContract.getJsonMetaSchema();
|
|
116
|
-
|
|
117
|
-
expect(result).to.deep.equal(DataContractDefaults.SCHEMA);
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
describe('#getDocuments', () => {
|
|
90
|
+
describe('#getDocumentSchemas', () => {
|
|
122
91
|
it('should get Documents definition', () => {
|
|
123
92
|
const anotherDocuments = {
|
|
124
93
|
anotherDocument: {
|
|
94
|
+
type: 'object',
|
|
125
95
|
properties: {
|
|
126
96
|
name: { type: 'string' },
|
|
127
97
|
},
|
|
98
|
+
additionalProperties: false,
|
|
128
99
|
},
|
|
129
100
|
};
|
|
130
101
|
|
|
131
|
-
dataContract.
|
|
132
|
-
expect(dataContract.
|
|
102
|
+
dataContract.setDocumentSchemas(anotherDocuments);
|
|
103
|
+
expect(dataContract.getDocumentSchemas()).to.deep.equal(anotherDocuments);
|
|
133
104
|
});
|
|
134
105
|
});
|
|
135
106
|
|
|
136
|
-
describe('#
|
|
107
|
+
describe('#setDocumentSchemas', () => {
|
|
137
108
|
it('should set Documents definition', () => {
|
|
138
109
|
const anotherDocuments = {
|
|
139
110
|
anotherDocument: {
|
|
111
|
+
type: 'object',
|
|
140
112
|
properties: {
|
|
141
113
|
name: { type: 'string' },
|
|
142
114
|
},
|
|
115
|
+
additionalProperties: false,
|
|
143
116
|
},
|
|
144
117
|
};
|
|
145
118
|
|
|
146
|
-
dataContract.
|
|
147
|
-
expect(dataContract.
|
|
119
|
+
dataContract.setDocumentSchemas(anotherDocuments);
|
|
120
|
+
expect(dataContract.getDocumentSchemas()).to.deep.equal(anotherDocuments);
|
|
148
121
|
});
|
|
149
122
|
});
|
|
150
123
|
|
|
151
|
-
describe('#
|
|
124
|
+
describe('#hasDocumentType', () => {
|
|
152
125
|
it('should return true if Document schema is defined', () => {
|
|
153
|
-
const result = dataContract.
|
|
126
|
+
const result = dataContract.hasDocumentType('niceDocument');
|
|
154
127
|
|
|
155
128
|
expect(result).to.equal(true);
|
|
156
129
|
});
|
|
157
130
|
|
|
158
131
|
it('should return false if Document schema is not defined', () => {
|
|
159
|
-
const result = dataContract.
|
|
132
|
+
const result = dataContract.hasDocumentType('undefinedDocument');
|
|
160
133
|
|
|
161
134
|
expect(result).to.equal(false);
|
|
162
135
|
});
|
|
@@ -166,18 +139,22 @@ describe('DataContract', () => {
|
|
|
166
139
|
it('should set Document schema', () => {
|
|
167
140
|
const anotherType = 'prettyDocument';
|
|
168
141
|
const anotherDefinition = {
|
|
142
|
+
type: 'object',
|
|
169
143
|
properties: {
|
|
170
|
-
|
|
144
|
+
test: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
},
|
|
171
147
|
},
|
|
148
|
+
additionalProperties: false,
|
|
172
149
|
};
|
|
173
150
|
|
|
174
151
|
dataContract.setDocumentSchema(anotherType, anotherDefinition);
|
|
175
152
|
|
|
176
|
-
const anotherDocuments = dataContract.
|
|
153
|
+
const anotherDocuments = dataContract.getDocumentSchemas();
|
|
177
154
|
|
|
178
155
|
expect(anotherDocuments).to.have.property(anotherType);
|
|
179
156
|
expect(anotherDocuments[anotherType]).to.deep.equal(anotherDefinition);
|
|
180
|
-
expect(dataContract.
|
|
157
|
+
expect(dataContract.hasDocumentType(anotherType)).to.be.true();
|
|
181
158
|
});
|
|
182
159
|
});
|
|
183
160
|
|
|
@@ -187,7 +164,7 @@ describe('DataContract', () => {
|
|
|
187
164
|
dataContract.getDocumentSchema('undefinedObject');
|
|
188
165
|
expect.fail('Error was not thrown');
|
|
189
166
|
} catch (e) {
|
|
190
|
-
expect(e.
|
|
167
|
+
expect(e.getMessage()).to.equal('data contract error: document type not found: can not get document type from contract');
|
|
191
168
|
}
|
|
192
169
|
});
|
|
193
170
|
|
|
@@ -198,40 +175,31 @@ describe('DataContract', () => {
|
|
|
198
175
|
});
|
|
199
176
|
});
|
|
200
177
|
|
|
201
|
-
describe('#
|
|
202
|
-
it('should throw error if Document is not defined', () => {
|
|
203
|
-
try {
|
|
204
|
-
dataContract.getDocumentSchemaRef('undefinedObject');
|
|
205
|
-
expect.fail('Error was not thrown');
|
|
206
|
-
} catch (e) {
|
|
207
|
-
expect(e.getType()).to.equal('undefinedObject');
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
it('should return schema ref', () => {
|
|
212
|
-
const result = dataContract.getDocumentSchemaRef(documentType);
|
|
213
|
-
|
|
214
|
-
expect(result).to.equal(`${dataContract.getJsonSchemaId()}#/documents/niceDocument`);
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
describe('#setDefinitions', () => {
|
|
178
|
+
describe('#setSchemaDefs', () => {
|
|
219
179
|
it('should set $defs', () => {
|
|
220
180
|
const $defs = {
|
|
221
|
-
subSchema: {
|
|
181
|
+
subSchema: {
|
|
182
|
+
type: 'object',
|
|
183
|
+
properties: {
|
|
184
|
+
test: {
|
|
185
|
+
type: 'string',
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
additionalProperties: false,
|
|
189
|
+
},
|
|
222
190
|
};
|
|
223
191
|
|
|
224
|
-
dataContract.
|
|
192
|
+
dataContract.setSchemaDefs($defs);
|
|
225
193
|
|
|
226
|
-
expect(dataContract.
|
|
194
|
+
expect(dataContract.getSchemaDefs()).to.deep.equal($defs);
|
|
227
195
|
});
|
|
228
196
|
});
|
|
229
197
|
|
|
230
|
-
describe('#
|
|
198
|
+
describe('#getSchemaDefs', () => {
|
|
231
199
|
it('should return $defs', () => {
|
|
232
|
-
const result = dataContract.
|
|
200
|
+
const result = dataContract.getSchemaDefs();
|
|
233
201
|
|
|
234
|
-
expect(result).to.
|
|
202
|
+
expect(result).to.be.null();
|
|
235
203
|
});
|
|
236
204
|
});
|
|
237
205
|
|
|
@@ -240,33 +208,47 @@ describe('DataContract', () => {
|
|
|
240
208
|
const result = dataContract.toJSON();
|
|
241
209
|
|
|
242
210
|
expect(result).to.deep.equal({
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
211
|
+
$format_version: '0',
|
|
212
|
+
config: {
|
|
213
|
+
$format_version: '0',
|
|
214
|
+
canBeDeleted: false,
|
|
215
|
+
documentsKeepHistoryContractDefault: false,
|
|
216
|
+
documentsMutableContractDefault: true,
|
|
217
|
+
keepsHistory: false,
|
|
218
|
+
readonly: false,
|
|
219
|
+
},
|
|
220
|
+
id: bs58.encode(contractId),
|
|
246
221
|
version: 1,
|
|
247
222
|
ownerId: bs58.encode(ownerId),
|
|
248
|
-
|
|
249
|
-
|
|
223
|
+
schemaDefs: null,
|
|
224
|
+
documentSchemas,
|
|
250
225
|
});
|
|
251
226
|
});
|
|
252
227
|
|
|
253
228
|
it('should return plain object with "$defs" if present', () => {
|
|
254
229
|
const $defs = {
|
|
255
|
-
subSchema: { type: '
|
|
230
|
+
subSchema: { type: 'string' },
|
|
256
231
|
};
|
|
257
232
|
|
|
258
|
-
dataContract.
|
|
233
|
+
dataContract.setSchemaDefs($defs);
|
|
259
234
|
|
|
260
235
|
const result = dataContract.toJSON();
|
|
261
236
|
|
|
262
237
|
expect(result).to.deep.equal({
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
238
|
+
$format_version: '0',
|
|
239
|
+
config: {
|
|
240
|
+
$format_version: '0',
|
|
241
|
+
canBeDeleted: false,
|
|
242
|
+
documentsKeepHistoryContractDefault: false,
|
|
243
|
+
documentsMutableContractDefault: true,
|
|
244
|
+
keepsHistory: false,
|
|
245
|
+
readonly: false,
|
|
246
|
+
},
|
|
247
|
+
id: bs58.encode(contractId),
|
|
266
248
|
version: 1,
|
|
267
249
|
ownerId: bs58.encode(ownerId),
|
|
268
|
-
|
|
269
|
-
$defs,
|
|
250
|
+
documentSchemas,
|
|
251
|
+
schemaDefs: $defs,
|
|
270
252
|
});
|
|
271
253
|
});
|
|
272
254
|
});
|
|
@@ -275,7 +257,7 @@ describe('DataContract', () => {
|
|
|
275
257
|
it('should return DataContract as a Buffer', () => {
|
|
276
258
|
const result = dataContract.toBuffer();
|
|
277
259
|
expect(result).to.be.instanceOf(Buffer);
|
|
278
|
-
expect(result).to.have.lengthOf(
|
|
260
|
+
expect(result).to.have.lengthOf(209);
|
|
279
261
|
});
|
|
280
262
|
});
|
|
281
263
|
|
|
@@ -299,27 +281,6 @@ describe('DataContract', () => {
|
|
|
299
281
|
});
|
|
300
282
|
});
|
|
301
283
|
|
|
302
|
-
describe('#getBinaryProperties', () => {
|
|
303
|
-
it('should return flat map of properties with `contentEncoding` keywords', () => {
|
|
304
|
-
const result = dataContract.getBinaryProperties(documentType);
|
|
305
|
-
expect(result).to.deep.equal({
|
|
306
|
-
aBinaryProperty: {
|
|
307
|
-
type: 'object',
|
|
308
|
-
byteArray: true,
|
|
309
|
-
},
|
|
310
|
-
});
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
it('should throw an error if document type is not found', () => {
|
|
314
|
-
try {
|
|
315
|
-
dataContract.getBinaryProperties('unknown');
|
|
316
|
-
expect.fail('Error was not thrown');
|
|
317
|
-
} catch (e) {
|
|
318
|
-
expect(e.getType()).to.equal('unknown');
|
|
319
|
-
}
|
|
320
|
-
});
|
|
321
|
-
});
|
|
322
|
-
|
|
323
284
|
describe('#setMetadata', () => {
|
|
324
285
|
it('should set metadata', () => {
|
|
325
286
|
const otherMetadata = new Metadata({
|
|
@@ -335,4 +296,22 @@ describe('DataContract', () => {
|
|
|
335
296
|
expect(dataContract.getMetadata().toObject()).to.deep.equal(otherMetadataToObject);
|
|
336
297
|
});
|
|
337
298
|
});
|
|
299
|
+
|
|
300
|
+
describe.skip('#setConfig', () => {
|
|
301
|
+
it('should set config', () => {
|
|
302
|
+
const config = {
|
|
303
|
+
allow: true,
|
|
304
|
+
readonly: true,
|
|
305
|
+
keepsHistory: true,
|
|
306
|
+
documentsKeepHistoryContractDefault: true,
|
|
307
|
+
documentsMutableContractDefault: true,
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
dataContract.setConfig(config);
|
|
311
|
+
|
|
312
|
+
const restoredConfig = dataContract.getConfig();
|
|
313
|
+
|
|
314
|
+
expect(config).to.deep.equal(restoredConfig);
|
|
315
|
+
});
|
|
316
|
+
});
|
|
338
317
|
});
|
|
@@ -3,7 +3,7 @@ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContra
|
|
|
3
3
|
const { default: loadWasmDpp, UnsupportedProtocolVersionError } = require('../../..');
|
|
4
4
|
const { getLatestProtocolVersion } = require('../../..');
|
|
5
5
|
|
|
6
|
-
describe('DataContractFactory', () => {
|
|
6
|
+
describe.skip('DataContractFactory', () => {
|
|
7
7
|
let DataContractFactory;
|
|
8
8
|
let DataContractValidator;
|
|
9
9
|
let DataContract;
|
|
@@ -46,6 +46,26 @@ describe('DataContractFactory', () => {
|
|
|
46
46
|
|
|
47
47
|
expect(result).excluding('$id').to.deep.equal(rawDataContract);
|
|
48
48
|
});
|
|
49
|
+
|
|
50
|
+
it('should pass config', () => {
|
|
51
|
+
const config = {
|
|
52
|
+
canBeDeleted: false,
|
|
53
|
+
readonly: false,
|
|
54
|
+
keepsHistory: true,
|
|
55
|
+
documentsKeepHistoryContractDefault: false,
|
|
56
|
+
documentsMutableContractDefault: true,
|
|
57
|
+
};
|
|
58
|
+
const contract = factory.create(
|
|
59
|
+
dataContract.getOwnerId(),
|
|
60
|
+
rawDataContract.documents,
|
|
61
|
+
config,
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
const result = contract.toObject();
|
|
65
|
+
|
|
66
|
+
expect(contract.getConfig()).to.be.deep.equal(config);
|
|
67
|
+
expect(result).excluding('$id').to.deep.equal(rawDataContract);
|
|
68
|
+
});
|
|
49
69
|
});
|
|
50
70
|
|
|
51
71
|
describe('createFromObject', () => {
|