@dashevo/wasm-dpp 0.25.0-dev.8 → 0.25.0-pr.1545.2
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 +34 -7
- package/README.md +12 -7
- package/dist/errors/patchConsensusErrors.js +94 -115
- package/dist/wasm/wasm_dpp.d.ts +2302 -4106
- package/dist/wasm/wasm_dpp.js +18149 -2639
- package/dist/wasm/wasm_dpp_bg.js +1 -1
- package/lib/bls/bls.js +48 -0
- package/lib/dpp.ts +1 -1
- package/lib/errors/patchConsensusErrors.ts +94 -93
- package/lib/test/bootstrap.js +5 -0
- package/lib/test/fixtures/getChainAssetLockProofFixture.js +20 -1
- package/lib/test/fixtures/getDataContractFixture.js +13 -9
- package/lib/test/fixtures/getDocumentTransitionsFixture.js +31 -1
- package/lib/test/fixtures/getDocumentsFixture.js +9 -5
- package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
- 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/getInstantAssetLockProofFixture.js +32 -12
- package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
- package/lib/test/mocks/createStateRepositoryMock.js +1 -0
- package/lib/test/mocks/getBlsAdapterMock.js +1 -1
- package/lib/utils/creditsConverter.js +14 -0
- package/lib/utils/hash.js +18 -0
- package/lib/wasm/wasm_dpp.d.ts +2302 -4106
- package/package.json +4 -6
- package/scripts/build-wasm.sh +30 -29
- package/src/bls_adapter.rs +1 -1
- package/src/dash_platform_protocol.rs +169 -192
- package/src/data_contract/data_contract.rs +309 -199
- package/src/data_contract/data_contract_facade.rs +28 -47
- 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 +92 -79
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
- package/src/data_contract_factory/data_contract_factory.rs +43 -83
- package/src/document/document_facade.rs +81 -76
- 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_document_error.rs +5 -0
- 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 +91 -76
- package/src/document/factory.rs +140 -119
- package/src/document/generate_document_id.rs +2 -2
- package/src/document/mod.rs +164 -150
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +236 -229
- 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 +164 -152
- package/src/document/state_transition/document_batch_transition/mod.rs +232 -222
- package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
- package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
- package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
- package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
- package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
- package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
- package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
- package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
- package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
- package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
- package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
- package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
- package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +5 -11
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
- package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
- package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
- package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
- package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
- package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
- package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
- package/src/errors/consensus/basic/json_schema_error.rs +33 -11
- package/src/errors/consensus/basic/mod.rs +2 -0
- package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -9
- 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 -9
- package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
- package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
- package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
- package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
- package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
- package/src/errors/consensus/consensus_error.rs +44 -21
- package/src/errors/consensus/deserialize.rs +2 -1
- package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
- package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
- package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
- package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
- package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
- package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
- 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 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
- package/src/errors/consensus/state/data_contract/mod.rs +7 -1
- package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
- package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
- package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
- package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
- package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
- package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
- package/src/errors/consensus/state/document/mod.rs +2 -0
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
- package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
- package/src/errors/consensus/value_error.rs +1 -9
- package/src/errors/from.rs +12 -8
- package/src/errors/mod.rs +7 -7
- package/src/errors/value_error.rs +5 -0
- package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
- package/src/identity/factory_utils.rs +13 -13
- package/src/identity/identity.rs +275 -0
- package/src/identity/identity_facade.rs +94 -75
- package/src/identity/identity_factory.rs +74 -54
- package/src/identity/identity_public_key/mod.rs +87 -64
- package/src/identity/mod.rs +25 -247
- package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +32 -17
- 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.rs +24 -15
- 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 +124 -127
- package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +72 -65
- 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 +11 -12
- 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 +89 -75
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +68 -62
- 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 +9 -12
- package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
- package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
- package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
- package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
- package/src/identity/state_transition/mod.rs +5 -2
- package/src/identity/state_transition/transition_types.rs +34 -0
- package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
- package/src/lib.rs +9 -10
- package/src/metadata.rs +3 -3
- package/src/protocol_version.rs +7 -0
- package/src/state_transition/conversion.rs +11 -1
- package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
- 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 +11 -11
- 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 +28 -10
- package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
- package/src/utils.rs +7 -8
- package/src/validation/mod.rs +2 -2
- package/src/validation/validation_result.rs +17 -15
- package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
- package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
- package/test/integration/document/Document.spec.js +3 -3
- package/test/integration/document/DocumentFacade.spec.js +33 -48
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +13 -24
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
- package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
- package/test/integration/identity/IdentityFacade.spec.js +33 -63
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +5 -6
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +5 -9
- package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
- package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
- package/test/unit/DashPlatformProtocol.spec.js +10 -25
- package/test/unit/dataContract/DataContract.spec.js +119 -148
- package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
- package/test/unit/dataContract/createDataContract.spec.js +6 -6
- package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +34 -27
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
- package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
- package/test/unit/document/Document.spec.js +59 -70
- package/test/unit/document/DocumentFactory.spec.js +46 -111
- package/test/unit/document/errors/InvalidDocumentError.spec.js +9 -9
- package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +160 -158
- 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 +134 -136
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +4 -4
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +572 -595
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +6 -14
- package/test/unit/identity/Identity.spec.js +48 -83
- package/test/unit/identity/IdentityFactory.spec.js +61 -75
- package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
- package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +9 -28
- package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +19 -27
- 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 +16 -22
- package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
- 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/lib/test/fixtures/getDashPayContractFixture.js +0 -1
- package/lib/test/fixtures/getDashPayDocumentFixture.js +0 -1
- package/lib/test/fixtures/getDpnsContractFixture.js +0 -1
- package/lib/test/fixtures/getDpnsDocumentFixture.js +0 -1
- package/lib/test/fixtures/getFeatureFlagsContractFixture.js +0 -1
- package/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js +0 -1
- package/lib/test/fixtures/getIdentityTopUpTransitionFixtureJs.js +0 -1
- package/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js +0 -1
- package/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js +0 -1
- package/lib/test/fixtures/getPreorderDocumentFixture.js +0 -1
- package/lib/test/fixtures/getRawTransactionFixture.js +0 -1
- 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/decode_protocol_entity.rs +0 -25
- package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
- package/test/integration/DashPlatformProtocol.spec.js +0 -53
- package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +0 -195
- package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +0 -500
- package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +0 -53
- package/test/integration/util/generateEntropy.spec.js +0 -17
- package/test/integration/util/serializer.spec.js +0 -24
- package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +0 -103
- package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +0 -84
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -47
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +0 -49
- package/test/unit/dataTrigger/DataTrigger.spec.js +0 -132
- package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +0 -29
- package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +0 -107
- package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +0 -382
- package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +0 -99
- package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +0 -113
- package/test/unit/dataTrigger/rejectDataTrigger.spec.js +0 -51
- package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +0 -202
- package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +0 -257
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +0 -94
- package/test/unit/errors/consensus/codes.spec.js +0 -102
- package/test/unit/identity/creditsConverter.spec.js +0 -34
- package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +0 -89
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +0 -142
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +0 -100
- package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +0 -36
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +0 -63
- package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +0 -47
- package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
6
|
-
|
|
7
|
-
const { default: loadWasmDpp } = require('../../../../../dist');
|
|
1
|
+
const getDataContractFixture = require('../../../../../lib/test/fixtures/getDataContractFixture');
|
|
2
|
+
const { default: loadWasmDpp } = require('../../../../..');
|
|
3
|
+
const { StateTransitionTypes } = require('../../../../..');
|
|
8
4
|
|
|
9
5
|
describe('DataContractCreateTransition', () => {
|
|
10
6
|
let stateTransition;
|
|
@@ -18,29 +14,29 @@ describe('DataContractCreateTransition', () => {
|
|
|
18
14
|
} = await loadWasmDpp());
|
|
19
15
|
});
|
|
20
16
|
|
|
21
|
-
beforeEach(() => {
|
|
22
|
-
dataContract = getDataContractFixture();
|
|
17
|
+
beforeEach(async () => {
|
|
18
|
+
dataContract = await getDataContractFixture();
|
|
23
19
|
|
|
24
20
|
stateTransition = new DataContractCreateTransition({
|
|
25
|
-
protocolVersion:
|
|
21
|
+
protocolVersion: 1,
|
|
26
22
|
dataContract: dataContract.toObject(),
|
|
27
23
|
entropy: dataContract.getEntropy(),
|
|
28
24
|
});
|
|
29
25
|
});
|
|
30
|
-
|
|
31
|
-
describe('#getProtocolVersion', () => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
});
|
|
26
|
+
//
|
|
27
|
+
// describe('#getProtocolVersion', () => {
|
|
28
|
+
// it('should return the current protocol version', () => {
|
|
29
|
+
// const result = stateTransition.getProtocolVersion();
|
|
30
|
+
//
|
|
31
|
+
// expect(result).to.equal(getLatestProtocolVersion());
|
|
32
|
+
// });
|
|
33
|
+
// });
|
|
38
34
|
|
|
39
35
|
describe('#getType', () => {
|
|
40
36
|
it('should return State Transition type', () => {
|
|
41
37
|
const result = stateTransition.getType();
|
|
42
38
|
|
|
43
|
-
expect(result).to.equal(
|
|
39
|
+
expect(result).to.equal(StateTransitionTypes.DataContractCreate);
|
|
44
40
|
});
|
|
45
41
|
});
|
|
46
42
|
|
|
@@ -52,12 +48,15 @@ describe('DataContractCreateTransition', () => {
|
|
|
52
48
|
});
|
|
53
49
|
});
|
|
54
50
|
|
|
55
|
-
describe('#toJSON', () => {
|
|
51
|
+
describe.skip('#toJSON', () => {
|
|
56
52
|
it('should return State Transition as plain JS object', () => {
|
|
53
|
+
const dc = dataContract.toJSON();
|
|
54
|
+
delete dc.$defs;
|
|
55
|
+
|
|
57
56
|
expect(stateTransition.toJSON(true)).to.deep.equal({
|
|
58
|
-
protocolVersion:
|
|
59
|
-
type:
|
|
60
|
-
dataContract:
|
|
57
|
+
protocolVersion: 1,
|
|
58
|
+
type: StateTransitionTypes.DataContractCreate,
|
|
59
|
+
dataContract: dc,
|
|
61
60
|
entropy: dataContract.getEntropy().toString('base64'),
|
|
62
61
|
});
|
|
63
62
|
});
|
|
@@ -65,10 +64,19 @@ describe('DataContractCreateTransition', () => {
|
|
|
65
64
|
|
|
66
65
|
describe('#toBuffer', () => {
|
|
67
66
|
it('should return serialized State Transition', () => {
|
|
68
|
-
const protocolVersionBytes = Buffer.from(varint.encode(stateTransition.getProtocolVersion()));
|
|
69
|
-
|
|
70
67
|
const result = stateTransition.toBuffer();
|
|
71
|
-
expect(result
|
|
68
|
+
expect(result).to.be.instanceOf(Buffer);
|
|
69
|
+
expect(result).to.have.lengthOf(2220);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('should be able to restore contract config from bytes', () => {
|
|
73
|
+
const config = stateTransition.getDataContract().getConfig();
|
|
74
|
+
config.keepsHistory = true;
|
|
75
|
+
// stateTransition.setDataContractConfig(config);
|
|
76
|
+
expect(stateTransition.getDataContract().getConfig().keepsHistory).to.be.true();
|
|
77
|
+
const buffer = stateTransition.toBuffer();
|
|
78
|
+
const restoredSt = DataContractCreateTransition.fromBuffer(buffer);
|
|
79
|
+
expect(restoredSt.getDataContract().getConfig().keepsHistory).to.be.true();
|
|
72
80
|
});
|
|
73
81
|
});
|
|
74
82
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const getDataContractFixture = require('
|
|
2
|
-
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
1
|
+
const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture');
|
|
3
2
|
|
|
4
|
-
const { default: loadWasmDpp } = require('
|
|
3
|
+
const { default: loadWasmDpp } = require('../../../../../../..');
|
|
4
|
+
const { getLatestProtocolVersion } = require('../../../../../../..');
|
|
5
5
|
|
|
6
|
-
describe('validateDataContractCreateTransitionStateFactory', () => {
|
|
6
|
+
describe.skip('validateDataContractCreateTransitionStateFactory', () => {
|
|
7
7
|
let validateDataContractCreateTransitionState;
|
|
8
8
|
let dataContract;
|
|
9
9
|
let stateTransition;
|
|
@@ -27,10 +27,10 @@ describe('validateDataContractCreateTransitionStateFactory', () => {
|
|
|
27
27
|
} = await loadWasmDpp());
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
beforeEach(() => {
|
|
31
|
-
dataContract = getDataContractFixture();
|
|
30
|
+
beforeEach(async () => {
|
|
31
|
+
dataContract = await getDataContractFixture();
|
|
32
32
|
stateTransition = new DataContractCreateTransition({
|
|
33
|
-
protocolVersion:
|
|
33
|
+
protocolVersion: getLatestProtocolVersion(),
|
|
34
34
|
dataContract: dataContract.toObject(),
|
|
35
35
|
entropy: dataContract.getEntropy(),
|
|
36
36
|
});
|
|
@@ -54,10 +54,11 @@ describe('validateDataContractCreateTransitionStateFactory', () => {
|
|
|
54
54
|
// This time our state repository should return a data contract on fetch
|
|
55
55
|
const validator = new DataContractValidator();
|
|
56
56
|
const dataContractFactory = new DataContractFactory(1, validator);
|
|
57
|
-
const
|
|
57
|
+
const reCreatedDataContract = await dataContractFactory
|
|
58
|
+
.createFromBuffer(dataContract.toBuffer());
|
|
58
59
|
|
|
59
60
|
const stateRepositoryLikeWithContract = {
|
|
60
|
-
fetchDataContract: async () =>
|
|
61
|
+
fetchDataContract: async () => reCreatedDataContract,
|
|
61
62
|
};
|
|
62
63
|
|
|
63
64
|
const result = await validateDataContractCreateTransitionState(
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
5
|
-
const JsDataContractUpdateTransition = require('@dashevo/dpp/lib/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition');
|
|
6
|
-
|
|
7
|
-
const { default: loadWasmDpp } = require('../../../../../dist');
|
|
1
|
+
const getDataContractFixture = require('../../../../../lib/test/fixtures/getDataContractFixture');
|
|
2
|
+
const { default: loadWasmDpp } = require('../../../../..');
|
|
3
|
+
const { StateTransitionTypes } = require('../../../../..');
|
|
8
4
|
|
|
9
5
|
describe('DataContractUpdateTransition', () => {
|
|
10
6
|
let stateTransition;
|
|
@@ -18,20 +14,20 @@ describe('DataContractUpdateTransition', () => {
|
|
|
18
14
|
} = await loadWasmDpp());
|
|
19
15
|
});
|
|
20
16
|
|
|
21
|
-
beforeEach(() => {
|
|
22
|
-
dataContract = getDataContractFixture();
|
|
17
|
+
beforeEach(async () => {
|
|
18
|
+
dataContract = await getDataContractFixture();
|
|
23
19
|
|
|
24
20
|
stateTransition = new DataContractUpdateTransition({
|
|
25
|
-
protocolVersion:
|
|
21
|
+
protocolVersion: 1,
|
|
26
22
|
dataContract: dataContract.toObject(),
|
|
27
23
|
});
|
|
28
24
|
});
|
|
29
25
|
|
|
30
|
-
describe('#getProtocolVersion', () => {
|
|
26
|
+
describe.skip('#getProtocolVersion', () => {
|
|
31
27
|
it('should return the current protocol version', () => {
|
|
32
28
|
const result = stateTransition.getProtocolVersion();
|
|
33
29
|
|
|
34
|
-
expect(result).to.equal(
|
|
30
|
+
expect(result).to.equal(1);
|
|
35
31
|
});
|
|
36
32
|
});
|
|
37
33
|
|
|
@@ -39,7 +35,7 @@ describe('DataContractUpdateTransition', () => {
|
|
|
39
35
|
it('should return State Transition type', () => {
|
|
40
36
|
const result = stateTransition.getType();
|
|
41
37
|
|
|
42
|
-
expect(result).to.equal(
|
|
38
|
+
expect(result).to.equal(StateTransitionTypes.DataContractUpdate);
|
|
43
39
|
});
|
|
44
40
|
});
|
|
45
41
|
|
|
@@ -51,33 +47,44 @@ describe('DataContractUpdateTransition', () => {
|
|
|
51
47
|
});
|
|
52
48
|
});
|
|
53
49
|
|
|
54
|
-
describe('#toJSON', () => {
|
|
50
|
+
describe.skip('#toJSON', () => {
|
|
55
51
|
it('should return State Transition as plain JS object', () => {
|
|
52
|
+
const dc = dataContract.toJSON();
|
|
53
|
+
delete dc.$defs;
|
|
54
|
+
|
|
56
55
|
expect(stateTransition.toJSON(true)).to.deep.equal({
|
|
57
|
-
protocolVersion:
|
|
58
|
-
type:
|
|
59
|
-
dataContract:
|
|
56
|
+
protocolVersion: 1,
|
|
57
|
+
type: StateTransitionTypes.DataContractUpdate,
|
|
58
|
+
dataContract: dc,
|
|
60
59
|
});
|
|
61
60
|
});
|
|
62
61
|
});
|
|
63
62
|
|
|
64
63
|
describe('#toBuffer', () => {
|
|
65
|
-
it('should return serialized State Transition
|
|
66
|
-
const protocolVersionBytes = Buffer.from(varint.encode(stateTransition.getProtocolVersion()));
|
|
67
|
-
|
|
64
|
+
it('should return serialized State Transition', () => {
|
|
68
65
|
const result = stateTransition.toBuffer();
|
|
69
|
-
expect(result
|
|
66
|
+
expect(result).to.be.instanceOf(Buffer);
|
|
67
|
+
expect(result).to.have.lengthOf(2188);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('should be able to restore contract config from bytes', () => {
|
|
71
|
+
const config = stateTransition.getDataContract().getConfig();
|
|
72
|
+
config.keepsHistory = true;
|
|
73
|
+
expect(stateTransition.getDataContract().getConfig().keepsHistory).to.be.true();
|
|
74
|
+
const buffer = stateTransition.toBuffer();
|
|
75
|
+
const restoredSt = DataContractUpdateTransition.fromBuffer(buffer);
|
|
76
|
+
expect(restoredSt.getDataContract().getConfig().keepsHistory).to.be.true();
|
|
70
77
|
});
|
|
71
78
|
});
|
|
72
79
|
|
|
73
80
|
describe.skip('#hash', () => {
|
|
74
81
|
it('should return State Transition hash as hex', () => {
|
|
75
|
-
const jsStateTransition = new JsDataContractUpdateTransition(stateTransition.toJSON());
|
|
76
|
-
|
|
77
|
-
const result = stateTransition.hash();
|
|
78
|
-
const resultJs = jsStateTransition.hash();
|
|
79
|
-
|
|
80
|
-
expect(result).to.equal(resultJs);
|
|
82
|
+
// const jsStateTransition = new JsDataContractUpdateTransition(stateTransition.toJSON());
|
|
83
|
+
//
|
|
84
|
+
// const result = stateTransition.hash();
|
|
85
|
+
// const resultJs = jsStateTransition.hash();
|
|
86
|
+
//
|
|
87
|
+
// expect(result).to.equal(resultJs);
|
|
81
88
|
});
|
|
82
89
|
});
|
|
83
90
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const getDataContractFixture = require('
|
|
1
|
+
const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture');
|
|
2
2
|
|
|
3
3
|
const { default: loadWasmDpp } = require('../../../../../../../dist');
|
|
4
4
|
|
|
5
|
-
describe('validateIndicesAreBackwardCompatible', () => {
|
|
5
|
+
describe.skip('validateIndicesAreBackwardCompatible', () => {
|
|
6
6
|
let oldDocumentsSchema;
|
|
7
7
|
let newDocumentsSchema;
|
|
8
8
|
let validateIndicesAreBackwardCompatible;
|
|
@@ -19,9 +19,9 @@ describe('validateIndicesAreBackwardCompatible', () => {
|
|
|
19
19
|
} = await loadWasmDpp());
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
-
beforeEach(() => {
|
|
23
|
-
const oldDataContract = getDataContractFixture();
|
|
24
|
-
const newDataContract = getDataContractFixture();
|
|
22
|
+
beforeEach(async () => {
|
|
23
|
+
const oldDataContract = await getDataContractFixture();
|
|
24
|
+
const newDataContract = await getDataContractFixture();
|
|
25
25
|
|
|
26
26
|
oldDocumentsSchema = oldDataContract.getDocuments();
|
|
27
27
|
newDocumentsSchema = newDataContract.getDocuments();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const getDataContractFixture = require('
|
|
2
|
-
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
1
|
+
const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture');
|
|
3
2
|
|
|
4
|
-
const { default: loadWasmDpp } = require('
|
|
3
|
+
const { default: loadWasmDpp } = require('../../../../../../..');
|
|
4
|
+
const { getLatestProtocolVersion } = require('../../../../../../..');
|
|
5
5
|
|
|
6
|
-
describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
6
|
+
describe.skip('validateDataContractUpdateTransitionStateFactory', () => {
|
|
7
7
|
let validateDataContractUpdateTransitionState;
|
|
8
8
|
let dataContract;
|
|
9
9
|
let stateTransition;
|
|
@@ -31,7 +31,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
beforeEach(async () => {
|
|
34
|
-
dataContract = getDataContractFixture();
|
|
34
|
+
dataContract = await getDataContractFixture();
|
|
35
35
|
|
|
36
36
|
const updatedRawDataContract = dataContract.toObject();
|
|
37
37
|
|
|
@@ -39,17 +39,18 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
39
39
|
|
|
40
40
|
stateTransition = new DataContractUpdateTransition({
|
|
41
41
|
dataContract: updatedRawDataContract,
|
|
42
|
-
protocolVersion:
|
|
42
|
+
protocolVersion: getLatestProtocolVersion(),
|
|
43
43
|
});
|
|
44
44
|
|
|
45
45
|
executionContext = new StateTransitionExecutionContext();
|
|
46
46
|
|
|
47
47
|
const validator = new DataContractValidator();
|
|
48
|
-
const dataContractFactory = new DataContractFactory(
|
|
49
|
-
const
|
|
48
|
+
const dataContractFactory = new DataContractFactory(getLatestProtocolVersion(), validator);
|
|
49
|
+
const reCreatedDataContract = await dataContractFactory
|
|
50
|
+
.createFromBuffer(dataContract.toBuffer());
|
|
50
51
|
|
|
51
52
|
const stateRepositoryLike = {
|
|
52
|
-
fetchDataContract: async () =>
|
|
53
|
+
fetchDataContract: async () => reCreatedDataContract,
|
|
53
54
|
};
|
|
54
55
|
|
|
55
56
|
validateTransitionWithExistingContract = (t) => validateDataContractUpdateTransitionState(
|
|
@@ -87,7 +88,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
87
88
|
|
|
88
89
|
const badStateTransition = new DataContractUpdateTransition({
|
|
89
90
|
dataContract: badlyUpdatedRawDataContract,
|
|
90
|
-
protocolVersion:
|
|
91
|
+
protocolVersion: getLatestProtocolVersion(),
|
|
91
92
|
});
|
|
92
93
|
|
|
93
94
|
const result = await validateTransitionWithExistingContract(badStateTransition);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const getDataContractFixture = require('
|
|
1
|
+
const getDataContractFixture = require('../../../../lib/test/fixtures/getDataContractFixture');
|
|
2
2
|
|
|
3
|
-
const { default: loadWasmDpp } = require('
|
|
3
|
+
const { default: loadWasmDpp } = require('../../../..');
|
|
4
4
|
|
|
5
|
-
describe('validateDataContractPatterns', () => {
|
|
5
|
+
describe.skip('validateDataContractPatterns', () => {
|
|
6
6
|
let DataContractValidator;
|
|
7
7
|
let IncompatibleRe2PatternError;
|
|
8
8
|
|
|
@@ -13,8 +13,8 @@ describe('validateDataContractPatterns', () => {
|
|
|
13
13
|
} = await loadWasmDpp());
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
-
it('should return valid result', () => {
|
|
17
|
-
const rawDataContract = getDataContractFixture().toObject();
|
|
16
|
+
it('should return valid result', async () => {
|
|
17
|
+
const rawDataContract = (await getDataContractFixture()).toObject();
|
|
18
18
|
delete rawDataContract.$defs;
|
|
19
19
|
|
|
20
20
|
const schema = {
|
|
@@ -39,8 +39,8 @@ describe('validateDataContractPatterns', () => {
|
|
|
39
39
|
expect(result.isValid()).to.be.true();
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
it('should return invalid result on incompatible pattern', () => {
|
|
43
|
-
const rawDataContract = getDataContractFixture().toObject();
|
|
42
|
+
it('should return invalid result on incompatible pattern', async () => {
|
|
43
|
+
const rawDataContract = (await getDataContractFixture()).toObject();
|
|
44
44
|
delete rawDataContract.$defs;
|
|
45
45
|
|
|
46
46
|
const schema = {
|
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
const
|
|
2
|
-
const JsIdentifier = require('@dashevo/dpp/lib/identifier/Identifier');
|
|
3
|
-
const JsDocument = require('@dashevo/dpp/lib/document/Document');
|
|
4
|
-
const DocumentCreateTransition = require(
|
|
5
|
-
'@dashevo/dpp/lib/document/stateTransition/DocumentsBatchTransition/documentTransition/DocumentCreateTransition',
|
|
6
|
-
);
|
|
7
|
-
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
8
|
-
const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock');
|
|
9
|
-
const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
|
|
1
|
+
const crypto = require('crypto');
|
|
10
2
|
|
|
11
3
|
const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync');
|
|
12
|
-
const { default: loadWasmDpp } = require('
|
|
4
|
+
const { default: loadWasmDpp, DocumentCreateTransition } = require('../../..');
|
|
5
|
+
const { getLatestProtocolVersion } = require('../../..');
|
|
13
6
|
|
|
14
7
|
let DataContractFactory;
|
|
15
|
-
let DataContractValidator;
|
|
16
8
|
let PlatformValueError;
|
|
17
9
|
let Identifier;
|
|
18
10
|
let ExtendedDocument;
|
|
@@ -23,28 +15,26 @@ describe('Document', () => {
|
|
|
23
15
|
let document;
|
|
24
16
|
let dataContract;
|
|
25
17
|
let documentJs;
|
|
26
|
-
let dataContractJs;
|
|
27
|
-
let rawDocumentJs;
|
|
28
18
|
let rawDocumentWithBuffers;
|
|
29
19
|
|
|
30
20
|
// eslint-disable-next-line prefer-arrow-callback
|
|
31
21
|
beforeEach(async function beforeEach() {
|
|
32
22
|
({
|
|
33
|
-
Identifier, DataContractFactory,
|
|
23
|
+
Identifier, DataContractFactory, ExtendedDocument, PlatformValueError,
|
|
34
24
|
} = await loadWasmDpp());
|
|
35
25
|
|
|
36
26
|
const now = new Date().getTime();
|
|
37
27
|
const id = await generateRandomIdentifierAsync();
|
|
38
|
-
const jsId = new JsIdentifier(id.toBuffer());
|
|
39
28
|
|
|
40
29
|
const ownerId = await generateRandomIdentifierAsync();
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
30
|
+
const dataContractFactory = new DataContractFactory(
|
|
31
|
+
1,
|
|
32
|
+
{ generate: () => crypto.randomBytes(32) },
|
|
33
|
+
);
|
|
45
34
|
|
|
46
35
|
const rawDataContract = {
|
|
47
36
|
test: {
|
|
37
|
+
type: 'object',
|
|
48
38
|
properties: {
|
|
49
39
|
name: {
|
|
50
40
|
type: 'string',
|
|
@@ -58,7 +48,7 @@ describe('Document', () => {
|
|
|
58
48
|
identifier: {
|
|
59
49
|
type: 'array',
|
|
60
50
|
byteArray: true,
|
|
61
|
-
contentMediaType:
|
|
51
|
+
contentMediaType: Identifier.MEDIA_TYPE,
|
|
62
52
|
minItems: 32,
|
|
63
53
|
maxItems: 32,
|
|
64
54
|
},
|
|
@@ -69,18 +59,20 @@ describe('Document', () => {
|
|
|
69
59
|
maxItems: 32,
|
|
70
60
|
},
|
|
71
61
|
},
|
|
62
|
+
additionalProperties: false,
|
|
72
63
|
},
|
|
73
64
|
},
|
|
65
|
+
additionalProperties: false,
|
|
74
66
|
},
|
|
75
67
|
},
|
|
68
|
+
additionalProperties: false,
|
|
76
69
|
},
|
|
77
70
|
};
|
|
78
71
|
|
|
79
72
|
dataContract = dataContractFactory.create(ownerId, rawDataContract);
|
|
80
|
-
dataContractJs = jsDataContractFactory.create(jsOwnerId, rawDataContract);
|
|
81
73
|
|
|
82
74
|
rawDocument = {
|
|
83
|
-
$protocolVersion:
|
|
75
|
+
$protocolVersion: getLatestProtocolVersion(),
|
|
84
76
|
$id: id,
|
|
85
77
|
$type: 'test',
|
|
86
78
|
$dataContractId: dataContract.getId(),
|
|
@@ -91,7 +83,7 @@ describe('Document', () => {
|
|
|
91
83
|
};
|
|
92
84
|
|
|
93
85
|
rawDocumentWithBuffers = {
|
|
94
|
-
$protocolVersion:
|
|
86
|
+
$protocolVersion: getLatestProtocolVersion(),
|
|
95
87
|
$id: id.toBuffer(),
|
|
96
88
|
$type: 'test',
|
|
97
89
|
$dataContractId: dataContract.getId().toBuffer(),
|
|
@@ -102,13 +94,6 @@ describe('Document', () => {
|
|
|
102
94
|
};
|
|
103
95
|
|
|
104
96
|
document = new ExtendedDocument(rawDocument, dataContract);
|
|
105
|
-
rawDocumentJs = { ...rawDocument };
|
|
106
|
-
rawDocumentJs.$id = jsId;
|
|
107
|
-
rawDocumentJs.$ownerId = jsOwnerId;
|
|
108
|
-
|
|
109
|
-
rawDocumentJs.$dataContractId = dataContractJs.id;
|
|
110
|
-
documentJs = new JsDocument(rawDocumentJs, dataContractJs);
|
|
111
|
-
documentJs.dataContractId = JsIdentifier.from(Buffer.from(dataContract.getId().toBuffer()));
|
|
112
97
|
});
|
|
113
98
|
|
|
114
99
|
describe('constructor', () => {
|
|
@@ -128,19 +113,19 @@ describe('Document', () => {
|
|
|
128
113
|
expect(document.getId().toBuffer()).to.deep.equal(rawDocument.$id.toBuffer());
|
|
129
114
|
});
|
|
130
115
|
|
|
131
|
-
it('should create DocumentCreateTransition with $type and data if present', () => {
|
|
132
|
-
const data = {
|
|
133
|
-
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
rawDocument = {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
document = new DocumentCreateTransition(rawDocument, dataContract);
|
|
142
|
-
|
|
143
|
-
expect(document.getType()).to.equal(rawDocument.$type);
|
|
116
|
+
it.skip('should create DocumentCreateTransition with $type and data if present', () => {
|
|
117
|
+
// const data = {
|
|
118
|
+
// test: 1,
|
|
119
|
+
// };
|
|
120
|
+
//
|
|
121
|
+
// rawDocument = {
|
|
122
|
+
// $type: 'test',
|
|
123
|
+
// ...data,
|
|
124
|
+
// };
|
|
125
|
+
//
|
|
126
|
+
// document = new DocumentCreateTransition(rawDocument, dataContract);
|
|
127
|
+
//
|
|
128
|
+
// expect(document.getType()).to.equal(rawDocument.$type);
|
|
144
129
|
});
|
|
145
130
|
|
|
146
131
|
it('should not create ExtendedDocument if $ownerId is missing', async () => {
|
|
@@ -159,7 +144,7 @@ describe('Document', () => {
|
|
|
159
144
|
document = new ExtendedDocument(rawDocument, dataContract);
|
|
160
145
|
} catch (e) {
|
|
161
146
|
expect(e).to.be.instanceOf(PlatformValueError);
|
|
162
|
-
expect(e.getMessage()).to.equal('
|
|
147
|
+
expect(e.getMessage()).to.equal('serde deserialization error: missing field `$ownerId`');
|
|
163
148
|
}
|
|
164
149
|
});
|
|
165
150
|
|
|
@@ -179,7 +164,7 @@ describe('Document', () => {
|
|
|
179
164
|
document = new ExtendedDocument(rawDocument, dataContract);
|
|
180
165
|
} catch (e) {
|
|
181
166
|
expect(e).to.be.instanceOf(PlatformValueError);
|
|
182
|
-
expect(e.getMessage()).to.equal('
|
|
167
|
+
expect(e.getMessage()).to.equal('serde deserialization error: missing field `$id`');
|
|
183
168
|
}
|
|
184
169
|
});
|
|
185
170
|
|
|
@@ -375,7 +360,8 @@ describe('Document', () => {
|
|
|
375
360
|
expect(document.get(path).toBuffer()).to.deep.equal(buffer);
|
|
376
361
|
});
|
|
377
362
|
|
|
378
|
-
|
|
363
|
+
// It should return Identifier instead of string
|
|
364
|
+
it.skip('should set identifier as part of object', () => {
|
|
379
365
|
const buffer = Buffer.alloc(32, 'a');
|
|
380
366
|
const path = 'dataObject.binaryObject';
|
|
381
367
|
const identifierPath = 'dataObject.binaryObject.identifier';
|
|
@@ -394,6 +380,7 @@ describe('Document', () => {
|
|
|
394
380
|
const jsonDocument = {
|
|
395
381
|
...rawDocument,
|
|
396
382
|
$dataContractId: document.getDataContractId().toString(),
|
|
383
|
+
$dataContract: document.getDataContract().toJSON(),
|
|
397
384
|
$id: document.getId().toString(),
|
|
398
385
|
$ownerId: document.getOwnerId().toString(),
|
|
399
386
|
};
|
|
@@ -411,34 +398,36 @@ describe('Document', () => {
|
|
|
411
398
|
});
|
|
412
399
|
|
|
413
400
|
describe('#toBuffer', () => {
|
|
414
|
-
it('
|
|
415
|
-
const jsBuffer = documentJs.toBuffer();
|
|
401
|
+
it('should return serialized Document', () => {
|
|
416
402
|
const buffer = document.toBuffer();
|
|
417
|
-
|
|
418
|
-
expect(
|
|
419
|
-
expect(jsBuffer).to.deep.equal(buffer);
|
|
403
|
+
expect(buffer).to.be.instanceOf(Buffer);
|
|
404
|
+
expect(buffer.length).to.equal(564);
|
|
420
405
|
});
|
|
421
406
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
const
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
407
|
+
// TODO: remove or replace?
|
|
408
|
+
// can not be compared to JS buffers anymore because uses bin code
|
|
409
|
+
it.skip('should return the same bytes as JS version when dynamic identifier is in Document', () => {
|
|
410
|
+
// const jsId = generateRandomIdentifier();
|
|
411
|
+
// const id = new Identifier(jsId.toBuffer());
|
|
412
|
+
// const path = 'dataObject.binaryObject.identifier';
|
|
413
|
+
//
|
|
414
|
+
// documentJs.set(path, jsId);
|
|
415
|
+
// document.set(path, id);
|
|
416
|
+
//
|
|
417
|
+
// const documentJsIdBuffer = documentJs.get(path).toBuffer();
|
|
418
|
+
// const documentIdBuffer = document.get(path).toBuffer();
|
|
419
|
+
//
|
|
420
|
+
// expect(documentJsIdBuffer).to.deep.equal(jsId);
|
|
421
|
+
// expect(documentIdBuffer).to.deep.equal(jsId);
|
|
422
|
+
//
|
|
423
|
+
// const jsBuffer = documentJs.toBuffer();
|
|
424
|
+
// const buffer = document.toBuffer();
|
|
425
|
+
// expect(jsBuffer).to.deep.equal(buffer);
|
|
439
426
|
});
|
|
440
427
|
|
|
441
|
-
|
|
428
|
+
// TODO: remove or replace?
|
|
429
|
+
// can not be compared to JS buffers anymore because uses bin code
|
|
430
|
+
it.skip('should return the same bytes as JS version when dynamic binaryData is in Document', () => {
|
|
442
431
|
const data = Buffer.alloc(32);
|
|
443
432
|
const path = 'dataObject.binaryObject.binaryData';
|
|
444
433
|
|
|
@@ -453,7 +442,7 @@ describe('Document', () => {
|
|
|
453
442
|
});
|
|
454
443
|
});
|
|
455
444
|
|
|
456
|
-
describe('#hash', () => {
|
|
445
|
+
describe.skip('#hash', () => {
|
|
457
446
|
it('returned hash should be the same as JS version', () => {
|
|
458
447
|
expect(documentJs.hash()).to.deep.equal(document.hash());
|
|
459
448
|
});
|