@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
package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
const { Transaction, PrivateKey, Script } = require('@dashevo/dashcore-lib');
|
|
2
2
|
|
|
3
|
-
const createStateRepositoryMock = require('
|
|
4
|
-
const getIdentityCreateTransitionFixture = require('
|
|
5
|
-
const getIdentityTopUpTransitionFixture = require('../../../../lib/test/fixtures/
|
|
3
|
+
const createStateRepositoryMock = require('../../../../lib/test/mocks/createStateRepositoryMock');
|
|
4
|
+
const getIdentityCreateTransitionFixture = require('../../../../lib/test/fixtures/getIdentityCreateTransitionFixture');
|
|
5
|
+
const getIdentityTopUpTransitionFixture = require('../../../../lib/test/fixtures/getIdentityTopUpTransitionFixture');
|
|
6
6
|
const { expectValidationError } = require('../../../../lib/test/expect/expectError');
|
|
7
7
|
|
|
8
8
|
const { default: loadWasmDpp } = require('../../../../dist');
|
|
9
9
|
|
|
10
|
-
describe('validateStateTransitionKeySignatureFactory', () => {
|
|
10
|
+
describe.skip('validateStateTransitionKeySignatureFactory', () => {
|
|
11
11
|
let stateTransition;
|
|
12
12
|
let stateRepositoryMock;
|
|
13
13
|
let validateStateTransitionKeySignature;
|
|
@@ -17,7 +17,6 @@ describe('validateStateTransitionKeySignatureFactory', () => {
|
|
|
17
17
|
let StateTransitionKeySignatureValidator;
|
|
18
18
|
let StateTransitionExecutionContext;
|
|
19
19
|
let IdentityCreateTransition;
|
|
20
|
-
let IdentityTopUpTransition;
|
|
21
20
|
let IdentityNotFoundError;
|
|
22
21
|
let ValidationResult;
|
|
23
22
|
|
|
@@ -27,18 +26,14 @@ describe('validateStateTransitionKeySignatureFactory', () => {
|
|
|
27
26
|
StateTransitionKeySignatureValidator,
|
|
28
27
|
StateTransitionExecutionContext,
|
|
29
28
|
IdentityCreateTransition,
|
|
30
|
-
IdentityTopUpTransition,
|
|
31
29
|
IdentityNotFoundError,
|
|
32
30
|
ValidationResult,
|
|
33
31
|
} = await loadWasmDpp());
|
|
34
32
|
});
|
|
35
33
|
|
|
36
|
-
beforeEach(function beforeEach() {
|
|
34
|
+
beforeEach(async function beforeEach() {
|
|
37
35
|
executionContext = new StateTransitionExecutionContext();
|
|
38
|
-
|
|
39
|
-
const rawStateTransition = stateTransitionJS.toObject();
|
|
40
|
-
|
|
41
|
-
stateTransition = new IdentityCreateTransition(rawStateTransition);
|
|
36
|
+
stateTransition = await getIdentityCreateTransitionFixture();
|
|
42
37
|
|
|
43
38
|
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
44
39
|
|
|
@@ -90,9 +85,8 @@ describe('validateStateTransitionKeySignatureFactory', () => {
|
|
|
90
85
|
expect(result.isValid()).to.be.true();
|
|
91
86
|
});
|
|
92
87
|
|
|
93
|
-
it('should return IdentityNotFoundError if identity not exist on topup transaction', async function () {
|
|
94
|
-
|
|
95
|
-
stateTransition = new IdentityTopUpTransition(stateTransitionJS.toObject());
|
|
88
|
+
it('should return IdentityNotFoundError if identity not exist on topup transaction', async function shouldReturn() {
|
|
89
|
+
stateTransition = await getIdentityTopUpTransitionFixture();
|
|
96
90
|
stateRepositoryMock.fetchIdentityBalance.resolves(undefined);
|
|
97
91
|
|
|
98
92
|
const result = await validateStateTransitionKeySignature(
|
|
@@ -12,7 +12,7 @@ let {
|
|
|
12
12
|
StateTransitionExecutionContext,
|
|
13
13
|
} = require('../../../..');
|
|
14
14
|
|
|
15
|
-
describe('validateStateTransitionStateFactory', () => {
|
|
15
|
+
describe.skip('validateStateTransitionStateFactory', () => {
|
|
16
16
|
let stateTransition;
|
|
17
17
|
let dpp;
|
|
18
18
|
let stateRepositoryMock;
|
|
@@ -8,7 +8,7 @@ let {
|
|
|
8
8
|
} = require('../../..');
|
|
9
9
|
const { default: loadWasmDpp } = require('../../..');
|
|
10
10
|
|
|
11
|
-
describe('validateProtocolVersionFactory', () => {
|
|
11
|
+
describe.skip('validateProtocolVersionFactory', () => {
|
|
12
12
|
let protocolVersionValidator;
|
|
13
13
|
let versionCompatibilityMap;
|
|
14
14
|
let currentProtocolVersion;
|
package/test-d/index.test-d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import loadDpp, { DPPModule, DashPlatformProtocol, Identifier } from "..";
|
|
|
7
7
|
expectType<Promise<DPPModule>>(loadDpp());
|
|
8
8
|
|
|
9
9
|
// Tests that dist exports wasm-dpp exported classes (from WASM bindings)
|
|
10
|
-
const dppInstance = new DashPlatformProtocol(
|
|
10
|
+
const dppInstance = new DashPlatformProtocol({}, 1);
|
|
11
11
|
expectType<DashPlatformProtocol>(dppInstance);
|
|
12
12
|
|
|
13
13
|
// Tests that library exports Identifier class (from TS code in lib)
|
|
@@ -18,4 +18,4 @@ expectType<Identifier>(new Identifier(Buffer.alloc(32)));
|
|
|
18
18
|
// instead of putting it directly to dist.
|
|
19
19
|
// If we do it this way, proper typings generated by wasm-bindgen will be ignored, and incorrect
|
|
20
20
|
// ones will be generated by TypeScript compiler.
|
|
21
|
-
dppInstance.stateTransition.createFromBuffer(Buffer.alloc(32));
|
|
21
|
+
dppInstance.stateTransition.createFromBuffer(Buffer.alloc(32), { });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getDashPayContractFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getDashPayDocumentFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getDpnsContractFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getDpnsDocumentFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getFeatureFlagsContractFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getPreorderDocumentFixture');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@dashevo/dpp/lib/test/fixtures/getRawTransactionFixture');
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
use std::ops::Deref;
|
|
2
|
-
use std::sync::Arc;
|
|
3
|
-
|
|
4
|
-
use dpp::data_contract::state_transition::data_contract_create_transition::apply_data_contract_create_transition_factory::ApplyDataContractCreateTransition;
|
|
5
|
-
use wasm_bindgen::prelude::*;
|
|
6
|
-
|
|
7
|
-
use crate::{
|
|
8
|
-
state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
|
|
9
|
-
DataContractCreateTransitionWasm,
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
#[wasm_bindgen(js_name=ApplyDataContractCreateTransition)]
|
|
13
|
-
pub struct ApplyDataContractCreateTransitionWasm(
|
|
14
|
-
ApplyDataContractCreateTransition<ExternalStateRepositoryLikeWrapper>,
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
impl From<ApplyDataContractCreateTransition<ExternalStateRepositoryLikeWrapper>>
|
|
18
|
-
for ApplyDataContractCreateTransitionWasm
|
|
19
|
-
{
|
|
20
|
-
fn from(wa: ApplyDataContractCreateTransition<ExternalStateRepositoryLikeWrapper>) -> Self {
|
|
21
|
-
ApplyDataContractCreateTransitionWasm(wa)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
#[wasm_bindgen(js_class=ApplyDataContractCreateTransition)]
|
|
26
|
-
impl ApplyDataContractCreateTransitionWasm {
|
|
27
|
-
#[wasm_bindgen(constructor)]
|
|
28
|
-
pub fn new(
|
|
29
|
-
state_repository: ExternalStateRepositoryLike,
|
|
30
|
-
) -> ApplyDataContractCreateTransitionWasm {
|
|
31
|
-
let pinned_js_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
|
|
32
|
-
ApplyDataContractCreateTransition::new(Arc::new(pinned_js_state_repository)).into()
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
#[wasm_bindgen(js_name=applyDataContractCreateTransition)]
|
|
36
|
-
pub async fn apply_data_contract_create_transition(
|
|
37
|
-
&self,
|
|
38
|
-
transition: DataContractCreateTransitionWasm,
|
|
39
|
-
) -> Result<(), JsError> {
|
|
40
|
-
self.0
|
|
41
|
-
.apply_data_contract_create_transition(&transition.into(), None)
|
|
42
|
-
.await
|
|
43
|
-
.map_err(|e| e.deref().into())
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
use std::ops::Deref;
|
|
2
|
-
use std::sync::Arc;
|
|
3
|
-
|
|
4
|
-
use dpp::data_contract::state_transition::data_contract_update_transition::apply_data_contract_update_transition_factory::ApplyDataContractUpdateTransition;
|
|
5
|
-
use wasm_bindgen::prelude::*;
|
|
6
|
-
|
|
7
|
-
use crate::{
|
|
8
|
-
state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
|
|
9
|
-
DataContractUpdateTransitionWasm, StateTransitionExecutionContextWasm,
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
#[wasm_bindgen(js_name=ApplyDataContractUpdateTransition)]
|
|
13
|
-
pub struct ApplyDataContractUpdateTransitionWasm(
|
|
14
|
-
ApplyDataContractUpdateTransition<ExternalStateRepositoryLikeWrapper>,
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
impl From<ApplyDataContractUpdateTransition<ExternalStateRepositoryLikeWrapper>>
|
|
18
|
-
for ApplyDataContractUpdateTransitionWasm
|
|
19
|
-
{
|
|
20
|
-
fn from(wa: ApplyDataContractUpdateTransition<ExternalStateRepositoryLikeWrapper>) -> Self {
|
|
21
|
-
ApplyDataContractUpdateTransitionWasm(wa)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
#[wasm_bindgen(js_class=ApplyDataContractUpdateTransition)]
|
|
26
|
-
impl ApplyDataContractUpdateTransitionWasm {
|
|
27
|
-
#[wasm_bindgen(constructor)]
|
|
28
|
-
pub fn new(
|
|
29
|
-
state_repository: ExternalStateRepositoryLike,
|
|
30
|
-
) -> ApplyDataContractUpdateTransitionWasm {
|
|
31
|
-
let pinned_js_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
|
|
32
|
-
ApplyDataContractUpdateTransition::new(Arc::new(pinned_js_state_repository)).into()
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
#[wasm_bindgen(js_name=applyDataContractUpdateTransition)]
|
|
36
|
-
pub async fn apply_data_contract_update_transition(
|
|
37
|
-
&self,
|
|
38
|
-
transition: DataContractUpdateTransitionWasm,
|
|
39
|
-
execution_context: &StateTransitionExecutionContextWasm,
|
|
40
|
-
) -> Result<(), JsError> {
|
|
41
|
-
self.0
|
|
42
|
-
.apply_data_contract_update_transition(
|
|
43
|
-
&transition.into(),
|
|
44
|
-
&execution_context.to_owned().into(),
|
|
45
|
-
)
|
|
46
|
-
.await
|
|
47
|
-
.map_err(|e| e.deref().into())
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
use js_sys::Array;
|
|
2
|
-
|
|
3
|
-
use wasm_bindgen::prelude::wasm_bindgen;
|
|
4
|
-
use wasm_bindgen::JsValue;
|
|
5
|
-
|
|
6
|
-
#[wasm_bindgen(js_name=decodeProtocolEntity)]
|
|
7
|
-
pub fn decode_protocol_entity(_buffer: Vec<u8>) -> Result<Array, JsValue> {
|
|
8
|
-
// TODO(v0.24-backport): revisit.
|
|
9
|
-
// This code was not used anywhere but js-drive and wallet-lib.
|
|
10
|
-
// In wallet-lib it is replaceable.
|
|
11
|
-
todo!()
|
|
12
|
-
// let (protocol_version, value) = DecodeProtocolEntity::decode_protocol_entity_to_value(buffer)
|
|
13
|
-
// .map_err(from_protocol_error)?;
|
|
14
|
-
//
|
|
15
|
-
// let serializer = serde_wasm_bindgen::Serializer::json_compatible();
|
|
16
|
-
// let js_value = value
|
|
17
|
-
// .try_to_validating_json()
|
|
18
|
-
// .map_err(|e| from_protocol_error(ProtocolError::ValueError(e)))?
|
|
19
|
-
// .serialize(&serializer)
|
|
20
|
-
// .map_err(|e| from_protocol_error(ProtocolError::EncodingError(e.to_string())))?;
|
|
21
|
-
// Ok(Array::from_iter(vec![
|
|
22
|
-
// JsValue::from(protocol_version),
|
|
23
|
-
// js_value,
|
|
24
|
-
// ]))
|
|
25
|
-
}
|
package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
use dpp::document::state_transition::documents_batch_transition::apply_documents_batch_transition_factory::{apply_documents_batch_transition};
|
|
2
|
-
use wasm_bindgen::prelude::*;
|
|
3
|
-
|
|
4
|
-
use crate::{
|
|
5
|
-
state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
|
|
6
|
-
utils::WithJsError,
|
|
7
|
-
DocumentsBatchTransitionWasm, StateTransitionExecutionContextWasm,
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
#[wasm_bindgen(js_name=applyDocumentsBatchTransition)]
|
|
11
|
-
pub async fn apply_documents_batch_transition_wasm(
|
|
12
|
-
state_repository: ExternalStateRepositoryLike,
|
|
13
|
-
transition: &DocumentsBatchTransitionWasm,
|
|
14
|
-
execution_context: &StateTransitionExecutionContextWasm,
|
|
15
|
-
) -> Result<(), JsValue> {
|
|
16
|
-
let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
|
|
17
|
-
|
|
18
|
-
apply_documents_batch_transition(
|
|
19
|
-
&wrapped_state_repository,
|
|
20
|
-
&transition.0,
|
|
21
|
-
&execution_context.to_owned().into(),
|
|
22
|
-
)
|
|
23
|
-
.await
|
|
24
|
-
.with_js_error()
|
|
25
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
const DashPlatformProtocol = require('@dashevo/dpp/lib/DashPlatformProtocol');
|
|
2
|
-
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
3
|
-
const getChainAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
|
|
4
|
-
const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
|
|
5
|
-
|
|
6
|
-
describe('DashPlatformProtocol', () => {
|
|
7
|
-
let dpp;
|
|
8
|
-
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
dpp = new DashPlatformProtocol({});
|
|
11
|
-
await dpp.initialize();
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it('should propagate protocol version to factories', async () => {
|
|
15
|
-
let dataContract = dpp.dataContract.create(generateRandomIdentifier(), {
|
|
16
|
-
niceDocument: {
|
|
17
|
-
type: 'object',
|
|
18
|
-
properties: {
|
|
19
|
-
name: {
|
|
20
|
-
type: 'string',
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
required: ['$createdAt'],
|
|
24
|
-
additionalProperties: false,
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
const document = dpp.document.create(dataContract, generateRandomIdentifier(), 'niceDocument', {});
|
|
28
|
-
let identity = dpp.identity.create(getChainAssetLockProofFixture(), []);
|
|
29
|
-
|
|
30
|
-
expect(dataContract.protocolVersion).to.equal(protocolVersion.latestVersion);
|
|
31
|
-
expect(document.protocolVersion).to.equal(protocolVersion.latestVersion);
|
|
32
|
-
expect(identity.protocolVersion).to.equal(protocolVersion.latestVersion);
|
|
33
|
-
|
|
34
|
-
dpp.setProtocolVersion(42);
|
|
35
|
-
|
|
36
|
-
dataContract = dpp.dataContract.create(generateRandomIdentifier(), {
|
|
37
|
-
niceDocument: {
|
|
38
|
-
type: 'object',
|
|
39
|
-
properties: {
|
|
40
|
-
name: {
|
|
41
|
-
type: 'string',
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
required: ['$createdAt'],
|
|
45
|
-
additionalProperties: false,
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
identity = dpp.identity.create(getChainAssetLockProofFixture(), []);
|
|
49
|
-
|
|
50
|
-
expect(dataContract.protocolVersion).to.equal(42);
|
|
51
|
-
expect(identity.protocolVersion).to.equal(42);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
const { default: Ajv } = require('ajv');
|
|
2
|
-
|
|
3
|
-
const addByteArrayKeyword = require('@dashevo/dpp/lib/ajv/keywords/byteArray/addByteArrayKeyword');
|
|
4
|
-
const byteArray = require('@dashevo/dpp/lib/ajv/keywords/byteArray/byteArray');
|
|
5
|
-
|
|
6
|
-
describe('addByteArrayKeyword', () => {
|
|
7
|
-
let ajv;
|
|
8
|
-
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
ajv = new Ajv();
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('should add byteArray keyword', () => {
|
|
14
|
-
addByteArrayKeyword(ajv);
|
|
15
|
-
|
|
16
|
-
expect(
|
|
17
|
-
ajv.getKeyword('byteArray'),
|
|
18
|
-
).to.deep.equal(byteArray);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
describe('byteArray', () => {
|
|
22
|
-
beforeEach(() => {
|
|
23
|
-
addByteArrayKeyword(ajv);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe('compilation', () => {
|
|
27
|
-
it('should be used with array type', () => {
|
|
28
|
-
const schema = {
|
|
29
|
-
type: 'string',
|
|
30
|
-
byteArray: true,
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
ajv.validate(schema, Buffer.alloc(0));
|
|
34
|
-
|
|
35
|
-
expect(ajv.errors).to.have.lengthOf(1);
|
|
36
|
-
expect(ajv.errors[0].keyword).to.equal('type');
|
|
37
|
-
expect(ajv.errors[0].params.type).to.equal('string');
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('should not be used with `items` keyword', () => {
|
|
41
|
-
const schema = {
|
|
42
|
-
type: 'array',
|
|
43
|
-
byteArray: true,
|
|
44
|
-
items: {
|
|
45
|
-
type: 'string',
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
try {
|
|
50
|
-
ajv.validate(schema, Buffer.alloc(0));
|
|
51
|
-
|
|
52
|
-
expect.fail('should fail with keyword schema error');
|
|
53
|
-
} catch (e) {
|
|
54
|
-
expect(e.message).to.equal('\'byteArray\' should not be used with \'items\'');
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it('should be boolean', () => {
|
|
59
|
-
const schema = {
|
|
60
|
-
type: 'array',
|
|
61
|
-
byteArray: 'something',
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
ajv.validate(schema, Buffer.alloc(0));
|
|
66
|
-
|
|
67
|
-
expect.fail('should fail with keyword schema error');
|
|
68
|
-
} catch (e) {
|
|
69
|
-
expect(e.message).to.equal('keyword "byteArray" value is invalid at path "#": data must be boolean');
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('should have value of true', () => {
|
|
74
|
-
const schema = {
|
|
75
|
-
type: 'array',
|
|
76
|
-
byteArray: false,
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
try {
|
|
80
|
-
ajv.validate(schema, Buffer.alloc(0));
|
|
81
|
-
|
|
82
|
-
expect.fail('should fail with keyword schema error');
|
|
83
|
-
} catch (e) {
|
|
84
|
-
expect(e.message).to.equal('keyword "byteArray" value is invalid at path "#": data must be equal to constant');
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
describe('validation', () => {
|
|
90
|
-
it('should accept array of integers', () => {
|
|
91
|
-
const schema = {
|
|
92
|
-
type: 'array',
|
|
93
|
-
byteArray: true,
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
ajv.validate(schema, ['string']);
|
|
97
|
-
|
|
98
|
-
expect(ajv.errors).to.have.lengthOf(2);
|
|
99
|
-
|
|
100
|
-
const [error, byteArrayError] = ajv.errors;
|
|
101
|
-
|
|
102
|
-
expect(error.keyword).to.equal('type');
|
|
103
|
-
expect(error.schemaPath).to.equal('#/byteArray/items/type');
|
|
104
|
-
expect(error.message).to.equal('must be integer');
|
|
105
|
-
|
|
106
|
-
expect(byteArrayError.keyword).to.equal('byteArray');
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
it('should accept array of integers not less than 0', () => {
|
|
110
|
-
const schema = {
|
|
111
|
-
type: 'array',
|
|
112
|
-
byteArray: true,
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
ajv.validate(schema, [-1]);
|
|
116
|
-
|
|
117
|
-
expect(ajv.errors).to.have.lengthOf(2);
|
|
118
|
-
|
|
119
|
-
const [error, byteArrayError] = ajv.errors;
|
|
120
|
-
|
|
121
|
-
expect(error.keyword).to.equal('minimum');
|
|
122
|
-
expect(error.schemaPath).to.equal('#/byteArray/items/minimum');
|
|
123
|
-
expect(error.message).to.equal('must be >= 0');
|
|
124
|
-
|
|
125
|
-
expect(byteArrayError.keyword).to.equal('byteArray');
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
it('should accept array of integers not greater than 255', () => {
|
|
129
|
-
const schema = {
|
|
130
|
-
type: 'array',
|
|
131
|
-
byteArray: true,
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
ajv.validate(schema, [0, 256]);
|
|
135
|
-
|
|
136
|
-
expect(ajv.errors).to.have.lengthOf(2);
|
|
137
|
-
|
|
138
|
-
const [error, byteArrayError] = ajv.errors;
|
|
139
|
-
|
|
140
|
-
expect(error.keyword).to.equal('maximum');
|
|
141
|
-
expect(error.schemaPath).to.equal('#/byteArray/items/maximum');
|
|
142
|
-
expect(error.message).to.equal('must be <= 255');
|
|
143
|
-
|
|
144
|
-
expect(byteArrayError.keyword).to.equal('byteArray');
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
});
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
2
|
-
const dpnsSystemIds = require('@dashevo/dpns-contract/lib/systemIds');
|
|
3
|
-
const getDpnsContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDpnsContractFixture');
|
|
4
|
-
const dpnsDocumentFixture = require('@dashevo/dpp/lib/test/fixtures/getDpnsDocumentFixture');
|
|
5
|
-
const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
|
|
6
|
-
const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture');
|
|
7
|
-
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
8
|
-
|
|
9
|
-
const IdentifierJs = require('@dashevo/dpp/lib/identifier/Identifier');
|
|
10
|
-
|
|
11
|
-
const { default: loadWasmDpp } = require('../../../../../../../dist');
|
|
12
|
-
|
|
13
|
-
let DataContract;
|
|
14
|
-
let DocumentTransition;
|
|
15
|
-
let DocumentCreateTransition;
|
|
16
|
-
let DataTriggerExecutionContext;
|
|
17
|
-
let Document;
|
|
18
|
-
let DataTriggerExecutionResult;
|
|
19
|
-
let StateTransitionExecutionContext;
|
|
20
|
-
let getAllDataTriggers;
|
|
21
|
-
|
|
22
|
-
describe('executeDataTriggersFactory', () => {
|
|
23
|
-
let childDocumentJs;
|
|
24
|
-
let childDocument;
|
|
25
|
-
let contractMock;
|
|
26
|
-
let stateTransitionExecutionContext;
|
|
27
|
-
let context;
|
|
28
|
-
let documentTransitions;
|
|
29
|
-
|
|
30
|
-
let executeDataTriggers;
|
|
31
|
-
let dataContractJs;
|
|
32
|
-
let dataContract;
|
|
33
|
-
let stateRepositoryMock;
|
|
34
|
-
|
|
35
|
-
beforeEach(async function beforeEach() {
|
|
36
|
-
({
|
|
37
|
-
DataContract,
|
|
38
|
-
DocumentTransition,
|
|
39
|
-
DocumentCreateTransition,
|
|
40
|
-
DataTriggerExecutionContext,
|
|
41
|
-
Document,
|
|
42
|
-
DataTriggerExecutionResult,
|
|
43
|
-
StateTransitionExecutionContext,
|
|
44
|
-
executeDataTriggers,
|
|
45
|
-
getAllDataTriggers,
|
|
46
|
-
} = await loadWasmDpp());
|
|
47
|
-
|
|
48
|
-
dataContractJs = getDataContractFixture();
|
|
49
|
-
dataContract = new DataContract(dataContractJs.toObject());
|
|
50
|
-
|
|
51
|
-
contractMock = new DataContract(getDpnsContractFixture().toObject());
|
|
52
|
-
|
|
53
|
-
childDocumentJs = dpnsDocumentFixture.getChildDocumentFixture();
|
|
54
|
-
childDocument = new Document(
|
|
55
|
-
childDocumentJs.toObject(),
|
|
56
|
-
dataContract.clone(),
|
|
57
|
-
childDocumentJs.getType(),
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
61
|
-
|
|
62
|
-
contractMock.setId(dpnsSystemIds.contractId);
|
|
63
|
-
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
64
|
-
stateRepositoryMock.fetchDocuments.resolves([childDocument]);
|
|
65
|
-
|
|
66
|
-
stateTransitionExecutionContext = new StateTransitionExecutionContext();
|
|
67
|
-
stateTransitionExecutionContext.disableDryRun();
|
|
68
|
-
|
|
69
|
-
context = new DataTriggerExecutionContext(
|
|
70
|
-
stateRepositoryMock,
|
|
71
|
-
childDocument.getOwnerId(),
|
|
72
|
-
contractMock.clone(),
|
|
73
|
-
stateTransitionExecutionContext,
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
const documentTransitionsJs = getDocumentTransitionsFixture({
|
|
77
|
-
create: [childDocumentJs],
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
documentTransitions = documentTransitionsJs.map((transition) => {
|
|
81
|
-
const transitionCreate = new DocumentCreateTransition(
|
|
82
|
-
transition.toObject(), dataContract.clone(),
|
|
83
|
-
);
|
|
84
|
-
return DocumentTransition.fromTransitionCreate(transitionCreate);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it('should return an array of DataTriggerExecutionResult - Rust', async () => {
|
|
89
|
-
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
90
|
-
documentTransitions, context, getAllDataTriggers(),
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
expect(dataTriggerExecutionResults).to.have.a.lengthOf(1);
|
|
94
|
-
|
|
95
|
-
const [result] = dataTriggerExecutionResults;
|
|
96
|
-
|
|
97
|
-
expect(result).to.be.an.instanceOf(DataTriggerExecutionResult);
|
|
98
|
-
expect(result.getErrors()).to.have.a.lengthOf(0);
|
|
99
|
-
expect(result.isOk()).to.be.true();
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
it('should return multiple data triggers if there is more than one data trigger for'
|
|
103
|
-
+ ' the same document and action in the contract - Rust', async () => {
|
|
104
|
-
const dataTriggersList = getAllDataTriggers();
|
|
105
|
-
const dataTriggerListWithDuplicates = [
|
|
106
|
-
dataTriggersList[0],
|
|
107
|
-
dataTriggersList[0],
|
|
108
|
-
dataTriggersList[0],
|
|
109
|
-
];
|
|
110
|
-
|
|
111
|
-
const expectedTriggersCount = 3;
|
|
112
|
-
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
113
|
-
documentTransitions, context, dataTriggerListWithDuplicates,
|
|
114
|
-
);
|
|
115
|
-
|
|
116
|
-
expect(dataTriggerExecutionResults).to.have.a.lengthOf(expectedTriggersCount);
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it('should return a result for each passed document with success or error - Rust', async () => {
|
|
120
|
-
const documentTransition = documentTransitions[0];
|
|
121
|
-
const rawDocumentTransition = documentTransition.toObject();
|
|
122
|
-
rawDocumentTransition.normalizedLabel = 'a'.repeat(257);
|
|
123
|
-
|
|
124
|
-
const invalidDocumentCreateTransition = new DocumentCreateTransition(
|
|
125
|
-
rawDocumentTransition, dataContract.clone(),
|
|
126
|
-
);
|
|
127
|
-
const invalidDocumentTransition = DocumentTransition.fromTransitionCreate(
|
|
128
|
-
invalidDocumentCreateTransition,
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
132
|
-
[documentTransition, invalidDocumentTransition], context, getAllDataTriggers(),
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
expect(dataTriggerExecutionResults).to.have.a.lengthOf(2);
|
|
136
|
-
|
|
137
|
-
const [validResult, invalidResult] = dataTriggerExecutionResults;
|
|
138
|
-
expect(validResult.isOk()).to.be.true();
|
|
139
|
-
expect(invalidResult.isOk()).to.be.false();
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
it("should not call any triggers if documents have no triggers associated with it's type or action - Rust", async () => {
|
|
143
|
-
const dataTriggers = [getAllDataTriggers()[1]];
|
|
144
|
-
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
145
|
-
documentTransitions, context, dataTriggers,
|
|
146
|
-
);
|
|
147
|
-
|
|
148
|
-
expect(dataTriggerExecutionResults).to.have.a.lengthOf(0);
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
it("should call only one trigger if there's one document with a trigger and one without - Rust", async () => {
|
|
152
|
-
const dataContractId = getDataContractFixture().getId();
|
|
153
|
-
childDocumentJs.dataContractId = dataContractId;
|
|
154
|
-
childDocumentJs.dataContract.id = dataContractId;
|
|
155
|
-
childDocumentJs.ownerId = IdentifierJs.from(
|
|
156
|
-
getDocumentsFixture.ownerId,
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
const documentTransitionsJs = getDocumentTransitionsFixture({
|
|
160
|
-
create: [childDocumentJs].concat(getDocumentsFixture(dataContractJs)),
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
documentTransitions = documentTransitionsJs.map((transition) => {
|
|
164
|
-
const transitionCreate = new DocumentCreateTransition(
|
|
165
|
-
transition.toObject(), dataContract.clone(),
|
|
166
|
-
);
|
|
167
|
-
return DocumentTransition.fromTransitionCreate(transitionCreate);
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
171
|
-
documentTransitions, context, getAllDataTriggers(),
|
|
172
|
-
);
|
|
173
|
-
|
|
174
|
-
expect(dataTriggerExecutionResults).to.have.a.lengthOf(1);
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
it("should not call any triggers if there's no triggers in the contract - Rust", async () => {
|
|
178
|
-
const documentTransitionsJs = getDocumentTransitionsFixture({
|
|
179
|
-
create: getDocumentsFixture(dataContractJs),
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
documentTransitions = documentTransitionsJs.map((transition) => {
|
|
183
|
-
const transitionCreate = new DocumentCreateTransition(
|
|
184
|
-
transition.toObject(), dataContract.clone(),
|
|
185
|
-
);
|
|
186
|
-
return DocumentTransition.fromTransitionCreate(transitionCreate);
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
const dataTriggerExecutionResults = await executeDataTriggers(
|
|
190
|
-
documentTransitions, context, getAllDataTriggers(),
|
|
191
|
-
);
|
|
192
|
-
|
|
193
|
-
expect(dataTriggerExecutionResults).to.have.a.lengthOf(0);
|
|
194
|
-
});
|
|
195
|
-
});
|