@dashevo/wasm-dpp 0.23.0-dev.15 → 0.24.0-dev.11
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/.eslintignore +1 -0
- package/Cargo.toml +25 -0
- package/README.md +21 -6
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.LICENSE.txt +8 -0
- package/dist/lib/patchIdentifier.d.ts +2 -0
- package/dist/wasm/wasm_dpp.d.ts +2850 -0
- package/index.ts +30 -0
- package/karma.conf.js +6 -3
- package/lib/patchIdentifier.ts +37 -0
- package/lib/test/.eslintrc +9 -0
- package/lib/test/bootstrap.js +27 -0
- package/lib/test/expect/expectError.js +34 -0
- package/lib/test/karma/loader.js +6 -0
- package/lib/test/utils/generateRandomIdentifierAsync.js +14 -0
- package/package.json +31 -55
- package/scripts/build.sh +69 -0
- package/scripts/clean.sh +4 -0
- package/src/bls_adapter.rs +71 -0
- package/src/buffer.rs +15 -0
- package/src/dash_platform_protocol.rs +26 -0
- package/src/data_contract/data_contract.rs +290 -0
- package/src/data_contract/errors/data_contract_already_exists.rs +1 -0
- package/src/data_contract/errors/invalid_data_contract.rs +29 -0
- package/src/data_contract/errors/invalid_document_type.rs +33 -0
- package/src/data_contract/errors/mod.rs +37 -0
- package/src/data_contract/index.rs +61 -0
- package/src/data_contract/mod.rs +10 -0
- package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +44 -0
- package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +138 -0
- package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +24 -0
- package/src/data_contract/state_transition/mod.rs +3 -0
- package/src/data_contract_factory/data_contract_factory.rs +155 -0
- package/src/data_contract_factory/mod.rs +1 -0
- package/src/document/errors/document_already_exists_error.rs +28 -0
- package/src/document/errors/document_not_provided_error.rs +28 -0
- package/src/document/errors/invalid_action_name_error.rs +24 -0
- package/src/document/errors/invalid_document_action_error.rs +28 -0
- package/src/document/errors/invalid_document_error.rs +32 -0
- package/src/document/errors/invalid_initial_revision_error.rs +25 -0
- package/src/document/errors/mismatch_owners_ids_error.rs +27 -0
- package/src/document/errors/mod.rs +55 -0
- package/src/document/errors/no_documents_supplied_error.rs +22 -0
- package/src/document/mod.rs +158 -0
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +22 -0
- package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +22 -0
- package/src/document/state_transition/document_batch_transition/document_transition/document_update_transition.rs +22 -0
- package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +24 -0
- package/src/document/state_transition/document_batch_transition/mod.rs +1 -0
- package/src/document/state_transition/mod.rs +1 -0
- package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +26 -0
- package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +66 -0
- package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +43 -0
- package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +39 -0
- package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +39 -0
- package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +59 -0
- package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +67 -0
- package/src/errors/consensus/basic/data_contract/index_error/mod.rs +15 -0
- package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +51 -0
- package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +51 -0
- package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +37 -0
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +26 -0
- package/src/errors/consensus/basic/data_contract/mod.rs +25 -0
- package/src/errors/consensus/basic/decode/mod.rs +5 -0
- package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +29 -0
- package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +29 -0
- package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +32 -0
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +36 -0
- package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +40 -0
- package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +26 -0
- package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +38 -0
- package/src/errors/consensus/basic/document/invalid_document_type_error.rs +39 -0
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +20 -0
- package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +20 -0
- package/src/errors/consensus/basic/document/missing_document_type_error.rs +20 -0
- package/src/errors/consensus/basic/document/mod.rs +19 -0
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +32 -0
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +32 -0
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +38 -0
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +31 -0
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +37 -0
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +29 -0
- package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +33 -0
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +34 -0
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +34 -0
- package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +29 -0
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +60 -0
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +29 -0
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +29 -0
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +32 -0
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +29 -0
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +39 -0
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +42 -0
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +30 -0
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +22 -0
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +24 -0
- package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +22 -0
- package/src/errors/consensus/basic/identity/missing_public_key_error.rs +29 -0
- package/src/errors/consensus/basic/identity/mod.rs +45 -0
- package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +32 -0
- package/src/errors/consensus/basic/invalid_identifier_error.rs +36 -0
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +41 -0
- package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +20 -0
- package/src/errors/consensus/basic/json_schema_compilation_error.rs +26 -0
- package/src/errors/consensus/basic/json_schema_error.rs +274 -0
- package/src/errors/consensus/basic/mod.rs +30 -0
- package/src/errors/consensus/basic/public_key_is_disabled_error.rs +30 -0
- package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +41 -0
- package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +29 -0
- package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +20 -0
- package/src/errors/consensus/basic/state_transition/mod.rs +7 -0
- package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +36 -0
- package/src/errors/consensus/basic/test_consensus_error.rs +21 -0
- package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +32 -0
- package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +37 -0
- package/src/errors/consensus/fee/balance_is_not_enough_error.rs +32 -0
- package/src/errors/consensus/fee/mod.rs +3 -0
- package/src/errors/consensus/mod.rs +4 -0
- package/src/errors/consensus/signature/identity_not_found_error.rs +29 -0
- package/src/errors/consensus/signature/mod.rs +3 -0
- package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +31 -0
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +74 -0
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +82 -0
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +66 -0
- package/src/errors/consensus/state/data_contract/data_trigger/mod.rs +7 -0
- package/src/errors/consensus/state/data_contract/mod.rs +4 -0
- package/src/errors/consensus/state/document/document_already_present_error.rs +28 -0
- package/src/errors/consensus/state/document/document_not_found_error.rs +28 -0
- package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +50 -0
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +72 -0
- package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +28 -0
- package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +42 -0
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +38 -0
- package/src/errors/consensus/state/document/mod.rs +15 -0
- package/src/errors/consensus/state/identity/identity_already_exists_error.rs +28 -0
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +49 -0
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +31 -0
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +28 -0
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +28 -0
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +38 -0
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +26 -0
- package/src/errors/consensus/state/identity/mod.rs +15 -0
- package/src/errors/consensus/state/mod.rs +3 -0
- package/src/errors/consensus_error.rs +612 -0
- package/src/errors/from.rs +24 -0
- package/src/errors/js_conversion.rs +63 -0
- package/src/errors/mod.rs +10 -0
- package/src/errors/public_key_validation_error.rs +23 -0
- package/src/identifier.rs +103 -0
- package/src/identity.rs +253 -0
- package/src/identity_facade.rs +55 -0
- package/src/identity_public_key/key_type.rs +22 -0
- package/src/identity_public_key/mod.rs +192 -0
- package/src/identity_public_key/public_keys_validator.rs +44 -0
- package/src/identity_public_key/purpose.rs +24 -0
- package/src/identity_public_key/security_level.rs +21 -0
- package/src/lib.rs +29 -0
- package/src/metadata.rs +54 -0
- package/src/state_repository.rs +229 -0
- package/src/state_transition/mod.rs +41 -0
- package/src/utils.rs +59 -0
- package/src/validation_result.rs +41 -0
- package/test/integration/DashPlatformProtocol.spec.js +4 -4
- package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +2 -2
- package/test/integration/dataContract/DataContractFacade.spec.js +6 -6
- package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +10 -10
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +14 -14
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +22 -22
- package/test/integration/document/Document.spec.js +10 -5
- package/test/integration/document/DocumentFacade.spec.js +11 -11
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +5 -5
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +25 -25
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +15 -15
- package/test/integration/document/validation/validateDocumentFactory.spec.js +12 -12
- package/test/integration/error/consensus/createConsensusError.spec.js +3 -3
- package/test/integration/identity/IdentityFacade.spec.js +13 -13
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +12 -12
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +11 -11
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +8 -8
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +24 -39
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +7 -7
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +29 -35
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +8 -8
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +11 -11
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +10 -10
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +7 -7
- package/test/integration/identity/validation/validateIdentityFactory.spec.js +8 -8
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +50 -24
- package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +14 -14
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +15 -19
- package/test/integration/stateTransition/calculateStateTransitionFee.spec.js +8 -11
- package/test/integration/util/generateEntropy.spec.js +1 -1
- package/test/integration/util/serializer.spec.js +2 -2
- package/test/unit/DashPlatformProtocol.spec.js +4 -4
- package/test/unit/Identifier.spec.js +2 -2
- package/test/unit/Metadata.spec.js +1 -1
- package/test/unit/dataContract/DataContract.spec.js +100 -159
- package/test/unit/dataContract/DataContractFactory.spec.js +55 -111
- package/test/unit/dataContract/createDataContract.spec.js +20 -10
- package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +2 -2
- package/test/unit/dataContract/generateDataContractId.spec.js +23 -6
- package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +1 -1
- package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +20 -67
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +29 -23
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +48 -45
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +8 -8
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +6 -6
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +6 -6
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +9 -9
- package/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js +6 -6
- package/test/unit/dataContract/validation/validateDataContractPatternsFactory.spec.js +3 -3
- package/test/unit/dataTrigger/DataTrigger.spec.js +8 -8
- package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +4 -4
- package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +13 -15
- package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +12 -12
- package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +11 -13
- package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +7 -7
- package/test/unit/dataTrigger/rejectDataTrigger.spec.js +8 -8
- package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +9 -9
- package/test/unit/decodeProtocolEntityFactory.spec.js +4 -4
- package/test/unit/document/Document.spec.js +9 -9
- package/test/unit/document/DocumentFactory.spec.js +19 -19
- package/test/unit/document/errors/InvalidDocumentError.spec.js +2 -2
- package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +8 -8
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +8 -8
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +16 -17
- package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +2 -2
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +6 -6
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +7 -7
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +6 -6
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +27 -34
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +9 -9
- package/test/unit/errors/consensus/codes.spec.js +7 -7
- package/test/unit/identity/Identity.spec.js +98 -69
- package/test/unit/identity/IdentityFactory.spec.js +15 -15
- package/test/unit/identity/IdentityPublicKey.spec.js +53 -66
- package/test/unit/identity/creditsConverter.spec.js +1 -1
- package/test/unit/identity/errors/InvalidIdentityError.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +7 -7
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +8 -8
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +6 -6
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +4 -4
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +7 -7
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +6 -6
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +6 -6
- package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +5 -5
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +3 -3
- package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +5 -5
- package/test/unit/stateTransition/StateTransitionFactory.spec.js +8 -8
- package/test/unit/stateTransition/createStateTransitionFactory.spec.js +8 -8
- package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +3 -3
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +12 -12
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +15 -15
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +22 -22
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +6 -6
- package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +9 -9
- package/test/unit/version/validateProtocolVersionFactory.spec.js +7 -7
- package/tsconfig.json +18 -0
- package/wasm/wasm_dpp.d.ts +2850 -0
- package/wasm/wasm_dpp.js +7978 -0
- package/wasm/wasm_dpp_bg.js +1 -0
- package/wasm/wasm_dpp_bg.wasm +0 -0
- package/wasm/wasm_dpp_bg.wasm.d.ts +536 -0
- package/webpack.config.js +22 -19
- package/CHANGELOG.md +0 -397
|
@@ -1,178 +1,122 @@
|
|
|
1
|
-
const getDataContractFixture = require('
|
|
1
|
+
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
2
2
|
|
|
3
|
-
const protocolVersion = require('
|
|
3
|
+
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
const ValidationResult = require('../../../lib/validation/ValidationResult');
|
|
8
|
-
|
|
9
|
-
const InvalidDataContractError = require('../../../lib/dataContract/errors/InvalidDataContractError');
|
|
10
|
-
const SerializedObjectParsingError = require('../../../lib/errors/consensus/basic/decode/SerializedObjectParsingError');
|
|
11
|
-
const createDPPMock = require('../../../lib/test/mocks/createDPPMock');
|
|
12
|
-
const SomeConsensusError = require('../../../lib/test/mocks/SomeConsensusError');
|
|
13
|
-
|
|
14
|
-
const DataContractFactory = require('../../../lib/dataContract/DataContractFactory');
|
|
15
|
-
const entropyGenerator = require('../../../lib/util/entropyGenerator');
|
|
5
|
+
const { default: loadWasmDpp } = require('../../../dist');
|
|
16
6
|
|
|
17
7
|
describe('DataContractFactory', () => {
|
|
18
|
-
let
|
|
19
|
-
let
|
|
8
|
+
let DataContractFactory;
|
|
9
|
+
let DataContractValidator;
|
|
10
|
+
let DataContract;
|
|
11
|
+
let InvalidDataContractError;
|
|
12
|
+
|
|
20
13
|
let factory;
|
|
21
|
-
let
|
|
14
|
+
let jsDataContract;
|
|
22
15
|
let rawDataContract;
|
|
23
|
-
let
|
|
24
|
-
|
|
16
|
+
let dataContractValidator;
|
|
17
|
+
|
|
18
|
+
before(async () => {
|
|
19
|
+
({
|
|
20
|
+
DataContractFactory, DataContractValidator, DataContract, InvalidDataContractError,
|
|
21
|
+
} = await loadWasmDpp());
|
|
22
|
+
});
|
|
25
23
|
|
|
26
|
-
beforeEach(
|
|
27
|
-
|
|
28
|
-
dppMock = createDPPMock();
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
jsDataContract = getDataContractFixture();
|
|
29
26
|
|
|
30
|
-
|
|
27
|
+
// For some reason fixture has empty $defs which violates meta schema
|
|
28
|
+
delete jsDataContract.$defs;
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
rawDataContract = jsDataContract.toObject();
|
|
31
|
+
|
|
32
|
+
dataContractValidator = new DataContractValidator();
|
|
35
33
|
|
|
36
34
|
factory = new DataContractFactory(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
decodeProtocolEntityMock,
|
|
35
|
+
1,
|
|
36
|
+
dataContractValidator,
|
|
40
37
|
);
|
|
41
38
|
});
|
|
42
39
|
|
|
43
|
-
afterEach(() => {
|
|
44
|
-
generateEntropyMock.restore();
|
|
45
|
-
});
|
|
46
|
-
|
|
47
40
|
describe('create', () => {
|
|
48
41
|
it('should return new Data Contract with specified name and documents definition', () => {
|
|
49
|
-
generateEntropyMock.returns(dataContract.getEntropy());
|
|
50
42
|
const result = factory.create(
|
|
51
|
-
|
|
43
|
+
jsDataContract.ownerId.toBuffer(),
|
|
52
44
|
rawDataContract.documents,
|
|
53
|
-
);
|
|
45
|
+
).toObject();
|
|
54
46
|
|
|
55
|
-
expect(result).excluding('$
|
|
47
|
+
expect(result).excluding('$id').to.deep.equal(rawDataContract);
|
|
56
48
|
});
|
|
57
49
|
});
|
|
58
50
|
|
|
59
51
|
describe('createFromObject', () => {
|
|
60
52
|
it('should return new Data Contract with data from passed object', async () => {
|
|
61
|
-
validateDataContractMock.returns(new ValidationResult());
|
|
62
|
-
|
|
63
53
|
const result = await factory.createFromObject(rawDataContract);
|
|
64
|
-
|
|
65
54
|
expect(result.toObject()).excluding('entropy').to.deep.equal(rawDataContract);
|
|
66
|
-
|
|
67
|
-
expect(validateDataContractMock).to.have.been.calledOnceWith(rawDataContract);
|
|
68
55
|
});
|
|
69
56
|
|
|
70
57
|
it('should return new Data Contract without validation if "skipValidation" option is passed', async () => {
|
|
71
|
-
const
|
|
58
|
+
const alteredContract = jsDataContract.toObject();
|
|
59
|
+
alteredContract.$defs = {}; // Empty defs are bad!
|
|
72
60
|
|
|
73
|
-
|
|
61
|
+
const resultSkipValidation = await factory.createFromObject(alteredContract, true);
|
|
74
62
|
|
|
75
|
-
expect(
|
|
63
|
+
expect(resultSkipValidation.toObject()).excluding('entropy').to.deep.equal(alteredContract);
|
|
76
64
|
});
|
|
77
65
|
|
|
78
66
|
it('should throw an error if passed object is not valid', async () => {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
validateDataContractMock.returns(new ValidationResult([validationError]));
|
|
67
|
+
const alteredContract = jsDataContract.toObject();
|
|
68
|
+
alteredContract.$defs = {}; // Empty defs are bad!
|
|
82
69
|
|
|
83
|
-
let error;
|
|
84
70
|
try {
|
|
85
|
-
await factory.createFromObject(
|
|
71
|
+
await factory.createFromObject(alteredContract);
|
|
86
72
|
} catch (e) {
|
|
87
|
-
|
|
73
|
+
expect(e).to.be.an.instanceOf(InvalidDataContractError);
|
|
74
|
+
expect(e.getRawDataContract()).to.deep.equal(alteredContract);
|
|
75
|
+
expect(e.getErrors()).to.have.length(1);
|
|
76
|
+
// TODO JsonSchemaError binding type required
|
|
77
|
+
// const [consensusError] = error.getErrors();
|
|
88
78
|
}
|
|
89
|
-
|
|
90
|
-
expect(error).to.be.an.instanceOf(InvalidDataContractError);
|
|
91
|
-
expect(error.getRawDataContract()).to.equal(rawDataContract);
|
|
92
|
-
|
|
93
|
-
expect(error.getErrors()).to.have.length(1);
|
|
94
|
-
|
|
95
|
-
const [consensusError] = error.getErrors();
|
|
96
|
-
|
|
97
|
-
expect(consensusError).to.equal(validationError);
|
|
98
|
-
|
|
99
|
-
expect(validateDataContractMock).to.have.been.calledOnceWith(rawDataContract);
|
|
100
79
|
});
|
|
101
80
|
});
|
|
102
81
|
|
|
103
82
|
describe('createFromBuffer', () => {
|
|
104
83
|
let serializedDataContract;
|
|
105
84
|
|
|
106
|
-
beforeEach(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
serializedDataContract = dataContract.toBuffer();
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
afterEach(() => {
|
|
113
|
-
factory.createFromObject.restore();
|
|
85
|
+
beforeEach(() => {
|
|
86
|
+
serializedDataContract = jsDataContract.toBuffer();
|
|
114
87
|
});
|
|
115
88
|
|
|
116
89
|
it('should return new Data Contract from serialized contract', async () => {
|
|
117
|
-
decodeProtocolEntityMock.returns([rawDataContract.protocolVersion, rawDataContract]);
|
|
118
|
-
|
|
119
|
-
factory.createFromObject.returns(dataContract);
|
|
120
|
-
|
|
121
90
|
const result = await factory.createFromBuffer(serializedDataContract);
|
|
122
91
|
|
|
123
|
-
expect(result).to.equal(
|
|
124
|
-
|
|
125
|
-
expect(factory.createFromObject).to.have.been.calledOnceWith(rawDataContract);
|
|
126
|
-
|
|
127
|
-
expect(decodeProtocolEntityMock).to.have.been.calledOnceWithExactly(
|
|
128
|
-
serializedDataContract,
|
|
129
|
-
);
|
|
92
|
+
expect(result.toObject()).to.deep.equal(jsDataContract.toObject());
|
|
130
93
|
});
|
|
131
94
|
|
|
132
95
|
it('should throw InvalidDataContractError if the decoding fails with consensus error', async () => {
|
|
133
|
-
const parsingError = new SerializedObjectParsingError(
|
|
134
|
-
serializedDataContract,
|
|
135
|
-
new Error(),
|
|
136
|
-
);
|
|
137
|
-
|
|
138
|
-
decodeProtocolEntityMock.throws(parsingError);
|
|
139
|
-
|
|
140
96
|
try {
|
|
97
|
+
// Casually break serialized data contract:
|
|
98
|
+
serializedDataContract[5] += 1337;
|
|
141
99
|
await factory.createFromBuffer(serializedDataContract);
|
|
142
|
-
|
|
143
100
|
expect.fail('should throw InvalidDataContractError');
|
|
144
101
|
} catch (e) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
expect(innerError).to.equal(parsingError);
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
it('should throw an error if decoding fails with any other error', async () => {
|
|
153
|
-
const parsingError = new Error('Something failed during parsing');
|
|
154
|
-
|
|
155
|
-
decodeProtocolEntityMock.throws(parsingError);
|
|
156
|
-
|
|
157
|
-
try {
|
|
158
|
-
await factory.createFromBuffer(serializedDataContract);
|
|
159
|
-
|
|
160
|
-
expect.fail('should throw an error');
|
|
161
|
-
} catch (e) {
|
|
162
|
-
expect(e).to.equal(parsingError);
|
|
102
|
+
// TODO SerializedObjectParsingError binding type required
|
|
103
|
+
// expect(e).to.be.an.instanceOf(SerializedObjectPasingError);
|
|
104
|
+
expect(e).to.match(/Parsing of serialized object failed/);
|
|
163
105
|
}
|
|
164
106
|
});
|
|
165
107
|
});
|
|
166
108
|
|
|
167
109
|
describe('createDataContractCreateTransition', () => {
|
|
168
|
-
it('should return new DataContractCreateTransition with passed DataContract', () => {
|
|
169
|
-
|
|
110
|
+
it('should return new DataContractCreateTransition with passed DataContract', async () => {
|
|
111
|
+
// Create wasm version of DataContract
|
|
112
|
+
const dataContract = new DataContract(rawDataContract);
|
|
113
|
+
dataContract.setEntropy(jsDataContract.getEntropy());
|
|
170
114
|
|
|
171
|
-
|
|
115
|
+
const result = await factory.createDataContractCreateTransition(dataContract);
|
|
172
116
|
|
|
173
117
|
expect(result.getProtocolVersion()).to.equal(protocolVersion.latestVersion);
|
|
174
|
-
expect(result.getEntropy()).to.deep.equal(
|
|
175
|
-
expect(result.getDataContract().toObject()).to.deep.equal(
|
|
118
|
+
expect(result.getEntropy()).to.deep.equal(jsDataContract.getEntropy());
|
|
119
|
+
expect(result.getDataContract().toObject()).to.deep.equal(jsDataContract.toObject());
|
|
176
120
|
});
|
|
177
121
|
});
|
|
178
122
|
});
|
|
@@ -1,15 +1,25 @@
|
|
|
1
|
-
const
|
|
1
|
+
const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const { default: loadWasmDpp } = require('../../../dist');
|
|
4
4
|
|
|
5
5
|
describe('createDataContract', () => {
|
|
6
6
|
let rawDataContract;
|
|
7
|
+
let DataContract;
|
|
8
|
+
|
|
9
|
+
before(async () => {
|
|
10
|
+
({
|
|
11
|
+
DataContract,
|
|
12
|
+
} = await loadWasmDpp());
|
|
13
|
+
});
|
|
7
14
|
|
|
8
15
|
beforeEach(() => {
|
|
9
16
|
rawDataContract = {
|
|
10
17
|
$id: generateRandomIdentifier().toBuffer(),
|
|
11
18
|
ownerId: generateRandomIdentifier().toBuffer(),
|
|
12
19
|
contractId: generateRandomIdentifier().toBuffer(),
|
|
20
|
+
protocolVersion: 4,
|
|
21
|
+
version: 20,
|
|
22
|
+
$schema: 'http://test.com/schema',
|
|
13
23
|
documents: {
|
|
14
24
|
niceDocument: {
|
|
15
25
|
name: { type: 'string' },
|
|
@@ -23,12 +33,12 @@ describe('createDataContract', () => {
|
|
|
23
33
|
|
|
24
34
|
expect(dataContract).to.be.an.instanceOf(DataContract);
|
|
25
35
|
|
|
26
|
-
expect(dataContract.getOwnerId()).to.deep.equal(rawDataContract.ownerId);
|
|
27
|
-
expect(dataContract.getDocuments()).to.equal(rawDataContract.documents);
|
|
36
|
+
expect(dataContract.getOwnerId().toBuffer()).to.deep.equal(rawDataContract.ownerId);
|
|
37
|
+
expect(dataContract.getDocuments()).to.deep.equal(rawDataContract.documents);
|
|
28
38
|
});
|
|
29
39
|
|
|
30
40
|
it('should return new DataContract with "$schema" if present', () => {
|
|
31
|
-
rawDataContract.$schema = 'http://test.com/
|
|
41
|
+
rawDataContract.$schema = 'http://test.com/otherschema';
|
|
32
42
|
|
|
33
43
|
const dataContract = new DataContract(rawDataContract);
|
|
34
44
|
|
|
@@ -36,8 +46,8 @@ describe('createDataContract', () => {
|
|
|
36
46
|
|
|
37
47
|
expect(dataContract.getJsonMetaSchema()).to.equal(rawDataContract.$schema);
|
|
38
48
|
|
|
39
|
-
expect(dataContract.getOwnerId()).to.deep.equal(rawDataContract.ownerId);
|
|
40
|
-
expect(dataContract.getDocuments()).to.equal(rawDataContract.documents);
|
|
49
|
+
expect(dataContract.getOwnerId().toBuffer()).to.deep.equal(rawDataContract.ownerId);
|
|
50
|
+
expect(dataContract.getDocuments()).to.deep.equal(rawDataContract.documents);
|
|
41
51
|
});
|
|
42
52
|
|
|
43
53
|
it('should return new DataContract with "$defs" if present', () => {
|
|
@@ -49,9 +59,9 @@ describe('createDataContract', () => {
|
|
|
49
59
|
|
|
50
60
|
expect(dataContract).to.be.an.instanceOf(DataContract);
|
|
51
61
|
|
|
52
|
-
expect(dataContract.getDefinitions()).to.equal(rawDataContract.$defs);
|
|
62
|
+
expect(dataContract.getDefinitions()).to.deep.equal(rawDataContract.$defs);
|
|
53
63
|
|
|
54
|
-
expect(dataContract.getOwnerId()).to.deep.equal(rawDataContract.ownerId);
|
|
55
|
-
expect(dataContract.getDocuments()).to.equal(rawDataContract.documents);
|
|
64
|
+
expect(dataContract.getOwnerId().toBuffer()).to.deep.equal(rawDataContract.ownerId);
|
|
65
|
+
expect(dataContract.getDocuments()).to.deep.equal(rawDataContract.documents);
|
|
56
66
|
});
|
|
57
67
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const InvalidDataContractError = require('
|
|
2
|
-
const getDataContractFixture = require('
|
|
1
|
+
const InvalidDataContractError = require('@dashevo/dpp/lib/dataContract/errors/InvalidDataContractError');
|
|
2
|
+
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
3
3
|
|
|
4
4
|
describe('InvalidDataContractError', () => {
|
|
5
5
|
let rawDataContract;
|
|
@@ -1,19 +1,36 @@
|
|
|
1
1
|
const bs58 = require('bs58');
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
const { default: loadWasmDpp } = require('../../../dist');
|
|
3
4
|
|
|
4
5
|
describe('generateDataContractId', () => {
|
|
5
6
|
let ownerId;
|
|
6
7
|
let entropy;
|
|
8
|
+
let DataContractFactory;
|
|
9
|
+
let DataContractValidator;
|
|
10
|
+
|
|
11
|
+
before(async () => {
|
|
12
|
+
({
|
|
13
|
+
DataContractFactory, DataContractValidator,
|
|
14
|
+
} = await loadWasmDpp());
|
|
15
|
+
});
|
|
7
16
|
|
|
8
17
|
beforeEach(() => {
|
|
9
|
-
ownerId = bs58.decode('
|
|
10
|
-
entropy = bs58.decode('
|
|
18
|
+
ownerId = bs58.decode('4Sr8EZ9BjQpMpBX5PLPxfvv5crTERSWBnRJXxUmCcrCQ');
|
|
19
|
+
entropy = bs58.decode('85NSrhBXYJAwzj8rDXuYhPQZPyg67diKSNcfhfnVhKnT');
|
|
11
20
|
});
|
|
12
21
|
|
|
13
22
|
it('should generate bs58 id based on ', () => {
|
|
14
|
-
const id = bs58.decode('
|
|
15
|
-
|
|
23
|
+
const id = bs58.decode('8W4qubpTaFKEWHqr9vAFSNGFULnz2TbgbG4eUik7yWx2');
|
|
24
|
+
|
|
25
|
+
const entropyGenerator = {
|
|
26
|
+
generate() {
|
|
27
|
+
return entropy;
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const factory = new DataContractFactory(1337, new DataContractValidator(), entropyGenerator);
|
|
32
|
+
const dataContract = factory.create(ownerId, {});
|
|
16
33
|
|
|
17
|
-
expect(Buffer.compare(id,
|
|
34
|
+
expect(Buffer.compare(id, dataContract.getId().toBuffer())).to.equal(0);
|
|
18
35
|
});
|
|
19
36
|
});
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
const getDataContractFixture = require('
|
|
2
|
-
const stateTransitionTypes = require('
|
|
1
|
+
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
2
|
+
const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
|
|
3
3
|
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const hash = require('../../../../../lib/util/hash');
|
|
8
|
-
const serializer = require('../../../../../lib/util/serializer');
|
|
4
|
+
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
5
|
+
|
|
6
|
+
const { default: loadWasmDpp } = require('../../../../../dist');
|
|
9
7
|
|
|
10
8
|
describe('DataContractCreateTransition', () => {
|
|
11
9
|
let stateTransition;
|
|
12
10
|
let dataContract;
|
|
13
|
-
let
|
|
14
|
-
let
|
|
11
|
+
let DataContractCreateTransition;
|
|
12
|
+
let Identifier;
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
before(async () => {
|
|
15
|
+
({
|
|
16
|
+
DataContractCreateTransition, Identifier,
|
|
17
|
+
} = await loadWasmDpp());
|
|
18
|
+
});
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
dataContract = getDataContractFixture();
|
|
21
22
|
|
|
22
23
|
stateTransition = new DataContractCreateTransition({
|
|
23
24
|
protocolVersion: protocolVersion.latestVersion,
|
|
@@ -26,11 +27,6 @@ describe('DataContractCreateTransition', () => {
|
|
|
26
27
|
});
|
|
27
28
|
});
|
|
28
29
|
|
|
29
|
-
afterEach(() => {
|
|
30
|
-
encodeMock.restore();
|
|
31
|
-
hashMock.restore();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
30
|
describe('#getProtocolVersion', () => {
|
|
35
31
|
it('should return the current protocol version', () => {
|
|
36
32
|
const result = stateTransition.getProtocolVersion();
|
|
@@ -57,12 +53,10 @@ describe('DataContractCreateTransition', () => {
|
|
|
57
53
|
|
|
58
54
|
describe('#toJSON', () => {
|
|
59
55
|
it('should return State Transition as plain JS object', () => {
|
|
60
|
-
expect(stateTransition.toJSON()).to.deep.equal({
|
|
56
|
+
expect(stateTransition.toJSON(true)).to.deep.equal({
|
|
61
57
|
protocolVersion: protocolVersion.latestVersion,
|
|
62
58
|
type: stateTransitionTypes.DATA_CONTRACT_CREATE,
|
|
63
59
|
dataContract: dataContract.toJSON(),
|
|
64
|
-
signaturePublicKeyId: undefined,
|
|
65
|
-
signature: undefined,
|
|
66
60
|
entropy: dataContract.getEntropy().toString('base64'),
|
|
67
61
|
});
|
|
68
62
|
});
|
|
@@ -70,61 +64,20 @@ describe('DataContractCreateTransition', () => {
|
|
|
70
64
|
|
|
71
65
|
describe('#toBuffer', () => {
|
|
72
66
|
it('should return serialized State Transition', () => {
|
|
73
|
-
const serializedStateTransition = Buffer.from('123');
|
|
74
|
-
|
|
75
|
-
encodeMock.returns(serializedStateTransition);
|
|
76
|
-
|
|
77
67
|
const protocolVersionUInt32 = Buffer.alloc(4);
|
|
78
|
-
protocolVersionUInt32.writeUInt32LE(stateTransition.
|
|
68
|
+
protocolVersionUInt32.writeUInt32LE(stateTransition.getProtocolVersion(), 0);
|
|
79
69
|
|
|
80
70
|
const result = stateTransition.toBuffer();
|
|
81
|
-
|
|
82
|
-
expect(result).to.deep.equal(
|
|
83
|
-
Buffer.concat([protocolVersionUInt32, serializedStateTransition]),
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
const dataToEncode = stateTransition.toObject();
|
|
87
|
-
delete dataToEncode.protocolVersion;
|
|
88
|
-
|
|
89
|
-
expect(encodeMock.getCall(0).args).to.have.deep.members([
|
|
90
|
-
dataToEncode,
|
|
91
|
-
]);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
describe('#hash', () => {
|
|
96
|
-
it('should return State Transition hash as hex', () => {
|
|
97
|
-
const serializedDocument = Buffer.from('123');
|
|
98
|
-
const hashedDocument = '456';
|
|
99
|
-
|
|
100
|
-
encodeMock.returns(serializedDocument);
|
|
101
|
-
hashMock.returns(hashedDocument);
|
|
102
|
-
|
|
103
|
-
const result = stateTransition.hash();
|
|
104
|
-
|
|
105
|
-
expect(result).to.equal(hashedDocument);
|
|
106
|
-
|
|
107
|
-
const dataToEncode = stateTransition.toObject();
|
|
108
|
-
delete dataToEncode.protocolVersion;
|
|
109
|
-
|
|
110
|
-
expect(encodeMock.getCall(0).args).to.have.deep.members([
|
|
111
|
-
dataToEncode,
|
|
112
|
-
]);
|
|
113
|
-
|
|
114
|
-
const protocolVersionUInt32 = Buffer.alloc(4);
|
|
115
|
-
protocolVersionUInt32.writeUInt32LE(stateTransition.protocolVersion, 0);
|
|
116
|
-
|
|
117
|
-
expect(hashMock).to.have.been.calledOnceWith(
|
|
118
|
-
Buffer.concat([protocolVersionUInt32, serializedDocument]),
|
|
119
|
-
);
|
|
71
|
+
expect(result.compare(protocolVersionUInt32, 0, 4, 0, 4)).equals(0);
|
|
120
72
|
});
|
|
121
73
|
});
|
|
122
74
|
|
|
123
75
|
describe('#getOwnerId', () => {
|
|
124
76
|
it('should return owner id', async () => {
|
|
125
77
|
const result = stateTransition.getOwnerId();
|
|
78
|
+
const reference = stateTransition.getDataContract().getOwnerId();
|
|
126
79
|
|
|
127
|
-
expect(result).to.equal(
|
|
80
|
+
expect(result.toBuffer()).to.deep.equal(reference.toBuffer());
|
|
128
81
|
});
|
|
129
82
|
});
|
|
130
83
|
|
|
@@ -136,7 +89,7 @@ describe('DataContractCreateTransition', () => {
|
|
|
136
89
|
const contractId = result[0];
|
|
137
90
|
|
|
138
91
|
expect(contractId).to.be.an.instanceOf(Identifier);
|
|
139
|
-
expect(contractId).to.be.deep.equal(dataContract.getId());
|
|
92
|
+
expect(contractId.toBuffer()).to.be.deep.equal(dataContract.getId().toBuffer());
|
|
140
93
|
});
|
|
141
94
|
});
|
|
142
95
|
|
|
@@ -1,27 +1,33 @@
|
|
|
1
|
-
const
|
|
2
|
-
'../../../../../lib/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition',
|
|
3
|
-
);
|
|
1
|
+
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
4
2
|
|
|
5
|
-
const
|
|
3
|
+
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
6
4
|
|
|
7
|
-
const
|
|
8
|
-
'../../../../../lib/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory',
|
|
9
|
-
);
|
|
10
|
-
|
|
11
|
-
const createStateRepositoryMock = require('../../../../../lib/test/mocks/createStateRepositoryMock');
|
|
12
|
-
const StateTransitionExecutionContext = require('../../../../../lib/stateTransition/StateTransitionExecutionContext');
|
|
5
|
+
const { default: loadWasmDpp } = require('../../../../../dist');
|
|
13
6
|
|
|
14
7
|
describe('applyDataContractCreateTransitionFactory', () => {
|
|
15
8
|
let stateTransition;
|
|
16
9
|
let dataContract;
|
|
17
|
-
let
|
|
18
|
-
let applyDataContractCreateTransition;
|
|
10
|
+
let factory;
|
|
19
11
|
let executionContext;
|
|
12
|
+
let DataContractCreateTransition;
|
|
13
|
+
let ApplyDataContractCreateTransition;
|
|
14
|
+
let StateTransitionExecutionContext;
|
|
15
|
+
|
|
16
|
+
let dataContractStored;
|
|
17
|
+
|
|
18
|
+
before(async () => {
|
|
19
|
+
({
|
|
20
|
+
DataContractCreateTransition,
|
|
21
|
+
ApplyDataContractCreateTransition,
|
|
22
|
+
StateTransitionExecutionContext,
|
|
23
|
+
} = await loadWasmDpp());
|
|
24
|
+
});
|
|
20
25
|
|
|
21
|
-
beforeEach(
|
|
26
|
+
beforeEach(() => {
|
|
22
27
|
dataContract = getDataContractFixture();
|
|
23
28
|
|
|
24
29
|
stateTransition = new DataContractCreateTransition({
|
|
30
|
+
protocolVersion: protocolVersion.latestVersion,
|
|
25
31
|
dataContract: dataContract.toObject(),
|
|
26
32
|
entropy: Buffer.alloc(32),
|
|
27
33
|
});
|
|
@@ -30,19 +36,19 @@ describe('applyDataContractCreateTransitionFactory', () => {
|
|
|
30
36
|
|
|
31
37
|
stateTransition.setExecutionContext(executionContext);
|
|
32
38
|
|
|
33
|
-
|
|
39
|
+
const stateRepositoryLike = {
|
|
40
|
+
storeDataContract: () => {
|
|
41
|
+
dataContractStored = true;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
34
44
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
45
|
+
factory = new ApplyDataContractCreateTransition(stateRepositoryLike);
|
|
46
|
+
|
|
47
|
+
dataContractStored = false;
|
|
38
48
|
});
|
|
39
49
|
|
|
40
50
|
it('should store a data contract from state transition in the repository', async () => {
|
|
41
|
-
await applyDataContractCreateTransition(stateTransition);
|
|
42
|
-
|
|
43
|
-
expect(stateRepositoryMock.storeDataContract).to.have.been.calledOnceWithExactly(
|
|
44
|
-
stateTransition.getDataContract(),
|
|
45
|
-
executionContext,
|
|
46
|
-
);
|
|
51
|
+
await factory.applyDataContractCreateTransition(stateTransition);
|
|
52
|
+
expect(dataContractStored).to.be.true();
|
|
47
53
|
});
|
|
48
54
|
});
|