@dashevo/wasm-dpp 0.24.0-dev.33 → 0.25.0-dev.10
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 +2 -2
- package/dist/wasm/wasm_dpp.d.ts +600 -454
- package/dist/wasm/wasm_dpp.js +178 -120
- package/dist/wasm/wasm_dpp_bg.js +1 -1
- package/lib/test/fixtures/getDocumentsFixture.js +5 -1
- package/lib/wasm/wasm_dpp.d.ts +600 -454
- package/package.json +4 -4
- package/src/dash_platform_protocol.rs +1 -1
- package/src/data_contract/data_contract.rs +2 -1
- package/src/data_contract/data_contract_facade.rs +2 -2
- package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
- package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +7 -16
- package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +5 -3
- package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +6 -2
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +7 -18
- package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +6 -4
- package/src/decode_protocol_entity.rs +19 -19
- package/src/document/extended_document.rs +5 -2
- package/src/document/fetch_and_validate_data_contract.rs +2 -2
- package/src/document/mod.rs +5 -3
- package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +9 -6
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +1 -1
- package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +1 -1
- package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +1 -2
- package/src/document/state_transition/document_batch_transition/mod.rs +18 -25
- package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +4 -4
- package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +3 -1
- package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +3 -3
- package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +3 -3
- package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +3 -3
- package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +4 -4
- package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +2 -2
- package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +1 -1
- package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -1
- package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -1
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
- package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
- package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -1
- package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -1
- package/src/errors/consensus/basic/document/invalid_document_type_error.rs +2 -2
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -1
- package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -1
- package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -1
- package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -1
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +35 -0
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -1
- package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -1
- package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -1
- package/src/errors/consensus/basic/identity/mod.rs +2 -0
- package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +2 -2
- package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -3
- package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -1
- package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -1
- package/src/errors/consensus/basic/json_schema_error.rs +1 -3
- package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
- package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -2
- package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -1
- package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -1
- package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -1
- package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -1
- package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -1
- package/src/errors/consensus/consensus_error.rs +24 -4
- package/src/errors/consensus/deserialize.rs +1 -1
- package/src/errors/consensus/fee/balance_is_not_enough_error.rs +1 -1
- package/src/errors/consensus/signature/basic_bls_error.rs +38 -0
- package/src/errors/consensus/signature/basic_ecdsa_error.rs +38 -0
- package/src/errors/consensus/signature/mod.rs +6 -0
- package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +38 -0
- package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +2 -2
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +58 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +66 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +50 -1
- package/src/errors/consensus/state/document/document_already_present_error.rs +1 -1
- package/src/errors/consensus/state/document/document_not_found_error.rs +1 -1
- package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -1
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +2 -2
- package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -1
- package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -1
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +1 -1
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -1
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -1
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +1 -1
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -1
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -1
- package/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs +26 -0
- package/src/errors/consensus/state/identity/mod.rs +2 -0
- package/src/errors/consensus/value_error.rs +1 -1
- package/src/errors/from.rs +0 -1
- package/src/generate_temporary_ecdsa_private_key.rs +2 -6
- package/src/identity/factory_utils.rs +4 -4
- package/src/identity/identity_public_key/key_type.rs +2 -0
- package/src/identity/identity_public_key/purpose.rs +7 -0
- package/src/identity/mod.rs +4 -2
- package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +6 -2
- package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +14 -32
- package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +3 -1
- package/src/identity/state_transition/identity_create_transition/to_object.rs +2 -2
- package/src/identity/state_transition/identity_public_key_transitions.rs +11 -11
- package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +6 -2
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +7 -26
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +3 -1
- package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +3 -1
- 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 +11 -32
- package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +3 -2
- package/src/identity/state_transition/identity_update_transition/to_object.rs +2 -2
- package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
- package/src/state_repository.rs +3 -2
- package/src/state_transition/fee/calculate_state_transition_fee.rs +8 -5
- package/src/state_transition/state_transition_facade.rs +18 -21
- package/src/state_transition/validation/state_transition_fee_validator.rs +3 -1
- package/src/state_transition/validation/validate_state_transition_identity_signature.rs +22 -6
- package/src/state_transition/validation/validate_state_transition_key_signature.rs +7 -1
- package/src/utils.rs +2 -4
- package/src/validation/validation_result.rs +12 -7
- package/test/integration/dataContract/DataContractFacade.spec.js +17 -20
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +5 -4
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +0 -17
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +10 -3
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +4 -7
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +21 -8
- package/test/unit/dataContract/DataContract.spec.js +9 -21
- package/test/unit/dataContract/DataContractFactory.spec.js +19 -28
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +2 -4
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -7
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -8
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -5
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -3
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +8 -6
- package/test/unit/decodeProtocolEntityFactory.spec.js +4 -1
- package/test/unit/document/Document.spec.js +9 -7
- package/test/unit/document/DocumentFactory.spec.js +38 -90
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +2 -3
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +5 -6
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +20 -18
- package/test/unit/identity/Identity.spec.js +3 -8
- package/test/unit/identity/IdentityFactory.spec.js +3 -4
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +1 -2
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +7 -3
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +1 -2
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -1
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +3 -3
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +12 -6
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +4 -16
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +8 -4
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +3 -1
- package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +7 -3
|
@@ -3,19 +3,19 @@ use crate::{
|
|
|
3
3
|
errors::consensus::consensus_error::from_consensus_error_ref,
|
|
4
4
|
utils::{consensus_errors_from_buffers, WithJsError},
|
|
5
5
|
};
|
|
6
|
-
use dpp::{consensus::ConsensusError, validation::
|
|
6
|
+
use dpp::{consensus::ConsensusError, validation::ConsensusValidationResult};
|
|
7
7
|
use js_sys::{JsString, Uint8Array};
|
|
8
8
|
use wasm_bindgen::prelude::*;
|
|
9
9
|
|
|
10
10
|
#[wasm_bindgen(js_name=ValidationResult)]
|
|
11
11
|
#[derive(Debug)]
|
|
12
|
-
pub struct ValidationResultWasm(
|
|
12
|
+
pub struct ValidationResultWasm(ConsensusValidationResult<JsValue>);
|
|
13
13
|
|
|
14
|
-
impl<T> From<
|
|
14
|
+
impl<T> From<ConsensusValidationResult<T>> for ValidationResultWasm
|
|
15
15
|
where
|
|
16
16
|
T: Into<JsValue> + Clone,
|
|
17
17
|
{
|
|
18
|
-
fn from(validation_result:
|
|
18
|
+
fn from(validation_result: ConsensusValidationResult<T>) -> Self {
|
|
19
19
|
ValidationResultWasm(validation_result.map(Into::into))
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -27,10 +27,12 @@ impl ValidationResultWasm {
|
|
|
27
27
|
if let Some(errors) = errors_option {
|
|
28
28
|
let consensus_errors: Vec<ConsensusError> = consensus_errors_from_buffers(errors)?;
|
|
29
29
|
|
|
30
|
-
return Ok(Self(
|
|
30
|
+
return Ok(Self(ConsensusValidationResult::new_with_errors(
|
|
31
|
+
consensus_errors,
|
|
32
|
+
)));
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
Ok(Self(
|
|
35
|
+
Ok(Self(ConsensusValidationResult::new_with_errors(vec![])))
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
/// This is just a test method - doesn't need to be in the resulted binding. Please
|
|
@@ -57,7 +59,10 @@ impl ValidationResultWasm {
|
|
|
57
59
|
|
|
58
60
|
#[wasm_bindgen(js_name=getData)]
|
|
59
61
|
pub fn get_data(&self) -> JsValue {
|
|
60
|
-
self.0
|
|
62
|
+
self.0
|
|
63
|
+
.data_as_borrowed()
|
|
64
|
+
.unwrap_or(&JsValue::undefined())
|
|
65
|
+
.to_owned()
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
#[wasm_bindgen(js_name=getFirstError)]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const getDataContractJSFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
2
1
|
const crypto = require('crypto');
|
|
2
|
+
const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
|
|
3
3
|
const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
|
|
4
4
|
const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock');
|
|
5
5
|
const getPrivateAndPublicKey = require('../../../lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture');
|
|
@@ -12,11 +12,10 @@ let {
|
|
|
12
12
|
|
|
13
13
|
describe('DataContractFacade', () => {
|
|
14
14
|
let dpp;
|
|
15
|
-
let
|
|
15
|
+
let dataContract;
|
|
16
16
|
let dataContractFactory;
|
|
17
17
|
let blsAdapter;
|
|
18
18
|
let rawDataContract;
|
|
19
|
-
let dataContractWasm;
|
|
20
19
|
let stateTransitionMock;
|
|
21
20
|
|
|
22
21
|
before(async () => {
|
|
@@ -34,29 +33,27 @@ describe('DataContractFacade', () => {
|
|
|
34
33
|
blsAdapter, stateTransitionMock, { generate: () => crypto.randomBytes(32) }, 1,
|
|
35
34
|
);
|
|
36
35
|
|
|
37
|
-
|
|
38
|
-
rawDataContract =
|
|
36
|
+
dataContract = await getDataContractFixture();
|
|
37
|
+
rawDataContract = dataContract.toObject();
|
|
39
38
|
|
|
40
39
|
const dataContractValidator = new DataContractValidator();
|
|
41
40
|
dataContractFactory = new DataContractFactory(
|
|
42
41
|
1,
|
|
43
42
|
dataContractValidator,
|
|
44
43
|
);
|
|
45
|
-
|
|
46
|
-
dataContractWasm = await dataContractFactory.createFromObject(rawDataContract);
|
|
47
44
|
});
|
|
48
45
|
|
|
49
46
|
describe('create', () => {
|
|
50
47
|
it('should create DataContract', () => {
|
|
51
48
|
const result = dpp.dataContract.create(
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
dataContract.getOwnerId(),
|
|
50
|
+
dataContract.getDocuments(),
|
|
54
51
|
);
|
|
55
52
|
|
|
56
53
|
expect(result).to.be.an.instanceOf(DataContract);
|
|
57
54
|
|
|
58
|
-
expect(result.getOwnerId().toBuffer()).to.deep.equal(
|
|
59
|
-
expect(result.getDocuments()).to.deep.equal(
|
|
55
|
+
expect(result.getOwnerId().toBuffer()).to.deep.equal(dataContract.getOwnerId().toBuffer());
|
|
56
|
+
expect(result.getDocuments()).to.deep.equal(dataContract.getDocuments());
|
|
60
57
|
});
|
|
61
58
|
});
|
|
62
59
|
|
|
@@ -66,15 +63,15 @@ describe('DataContractFacade', () => {
|
|
|
66
63
|
|
|
67
64
|
expect(result).to.be.an.instanceOf(DataContract);
|
|
68
65
|
|
|
69
|
-
expect(result.toObject()).to.deep.equal(
|
|
66
|
+
expect(result.toObject()).to.deep.equal(dataContract.toObject());
|
|
70
67
|
});
|
|
71
68
|
});
|
|
72
69
|
|
|
73
70
|
describe('createFromBuffer', () => {
|
|
74
71
|
it('should create DataContract from string', async () => {
|
|
75
72
|
const contract = dpp.dataContract.create(
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
dataContract.getOwnerId(),
|
|
74
|
+
dataContract.getDocuments(),
|
|
78
75
|
);
|
|
79
76
|
|
|
80
77
|
const result = await dpp.dataContract.createFromBuffer(contract.toBuffer());
|
|
@@ -87,9 +84,9 @@ describe('DataContractFacade', () => {
|
|
|
87
84
|
describe('createDataContractCreateTransition', () => {
|
|
88
85
|
it('should create DataContractCreateTransition from DataContract', async () => {
|
|
89
86
|
const stateTransition = await dataContractFactory
|
|
90
|
-
.createDataContractCreateTransition(
|
|
87
|
+
.createDataContractCreateTransition(dataContract);
|
|
91
88
|
|
|
92
|
-
const result = dpp.dataContract.createDataContractCreateTransition(
|
|
89
|
+
const result = dpp.dataContract.createDataContractCreateTransition(dataContract);
|
|
93
90
|
|
|
94
91
|
expect(result).to.be.an.instanceOf(DataContractCreateTransition);
|
|
95
92
|
|
|
@@ -99,12 +96,12 @@ describe('DataContractFacade', () => {
|
|
|
99
96
|
|
|
100
97
|
describe('createDataContractUpdateTransition', () => {
|
|
101
98
|
it('should create DataContractUpdateTransition from buffer', async () => {
|
|
102
|
-
const dataContractBuffer =
|
|
99
|
+
const dataContractBuffer = dataContract.toBuffer();
|
|
103
100
|
|
|
104
|
-
const
|
|
101
|
+
const dataContractNew = await dpp.dataContract.createFromBuffer(dataContractBuffer);
|
|
105
102
|
|
|
106
103
|
const updatedDataContract = await dpp.dataContract.createFromObject(
|
|
107
|
-
|
|
104
|
+
dataContractNew.toObject(),
|
|
108
105
|
);
|
|
109
106
|
|
|
110
107
|
updatedDataContract.incrementVersion();
|
|
@@ -138,7 +135,7 @@ describe('DataContractFacade', () => {
|
|
|
138
135
|
});
|
|
139
136
|
|
|
140
137
|
it('should validate DataContract instance', async () => {
|
|
141
|
-
const result = await dpp.dataContract.validate(
|
|
138
|
+
const result = await dpp.dataContract.validate(dataContract);
|
|
142
139
|
|
|
143
140
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
144
141
|
expect(result.getErrors().length).to.be.equal(0);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
2
2
|
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
3
|
-
const getDataContractFixture = require('
|
|
3
|
+
const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture');
|
|
4
4
|
const { expectJsonSchemaError, expectValidationError, expectValueError } = require('../../../../../../../lib/test/expect/expectError');
|
|
5
5
|
|
|
6
6
|
const { default: loadWasmDpp } = require('../../../../../../../dist');
|
|
@@ -39,7 +39,7 @@ describe('validateDataContractUpdateTransitionBasicFactory', () => {
|
|
|
39
39
|
});
|
|
40
40
|
|
|
41
41
|
beforeEach(async function beforeEach() {
|
|
42
|
-
dataContract = getDataContractFixture();
|
|
42
|
+
dataContract = await getDataContractFixture();
|
|
43
43
|
|
|
44
44
|
rawDataContract = dataContract.toObject();
|
|
45
45
|
rawDataContract.version += 1;
|
|
@@ -55,9 +55,10 @@ describe('validateDataContractUpdateTransitionBasicFactory', () => {
|
|
|
55
55
|
|
|
56
56
|
const validator = new DataContractValidator();
|
|
57
57
|
const dataContractFactory = new DataContractFactory(protocolVersion.latestVersion, validator);
|
|
58
|
-
const
|
|
58
|
+
const reCreatedDataContract = await dataContractFactory
|
|
59
|
+
.createFromBuffer(dataContract.toBuffer());
|
|
59
60
|
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
60
|
-
stateRepositoryMock.fetchDataContract.resolves(
|
|
61
|
+
stateRepositoryMock.fetchDataContract.resolves(reCreatedDataContract);
|
|
61
62
|
|
|
62
63
|
executionContext = new StateTransitionExecutionContext();
|
|
63
64
|
|
|
@@ -17,7 +17,6 @@ describe('validateDataContractFactory', () => {
|
|
|
17
17
|
let UniqueIndicesLimitReachedError;
|
|
18
18
|
let SystemPropertyIndexAlreadyPresentError;
|
|
19
19
|
let InvalidIndexPropertyTypeError;
|
|
20
|
-
let InvalidCompoundIndexError;
|
|
21
20
|
let InvalidIndexedPropertyConstraintError;
|
|
22
21
|
let InvalidJsonSchemaRefError;
|
|
23
22
|
|
|
@@ -32,7 +31,6 @@ describe('validateDataContractFactory', () => {
|
|
|
32
31
|
UniqueIndicesLimitReachedError,
|
|
33
32
|
SystemPropertyIndexAlreadyPresentError,
|
|
34
33
|
InvalidIndexPropertyTypeError,
|
|
35
|
-
InvalidCompoundIndexError,
|
|
36
34
|
InvalidIndexedPropertyConstraintError,
|
|
37
35
|
InvalidJsonSchemaRefError,
|
|
38
36
|
} = await loadWasmDpp());
|
|
@@ -1929,21 +1927,6 @@ describe('validateDataContractFactory', () => {
|
|
|
1929
1927
|
expect(error.getDocumentType()).to.deep.equal('indexedDocument');
|
|
1930
1928
|
expect(error.getIndexName()).to.equal('index1');
|
|
1931
1929
|
});
|
|
1932
|
-
|
|
1933
|
-
it('should return invalid result if unique compound index contains both required and optional properties', async () => {
|
|
1934
|
-
const rawDataContract = dataContract.toObject();
|
|
1935
|
-
rawDataContract.documents.optionalUniqueIndexedDocument.required.splice(-1);
|
|
1936
|
-
|
|
1937
|
-
const result = await validateDataContract(rawDataContract);
|
|
1938
|
-
|
|
1939
|
-
expectValidationError(result, InvalidCompoundIndexError);
|
|
1940
|
-
|
|
1941
|
-
const [error] = result.getErrors();
|
|
1942
|
-
|
|
1943
|
-
expect(error.getCode()).to.equal(1010);
|
|
1944
|
-
expect(error.getIndexName()).to.equal('index2');
|
|
1945
|
-
expect(error.getDocumentType()).to.equal('optionalUniqueIndexedDocument');
|
|
1946
|
-
});
|
|
1947
1930
|
});
|
|
1948
1931
|
});
|
|
1949
1932
|
|
|
@@ -78,7 +78,11 @@ describe('DocumentBatchTransition', () => {
|
|
|
78
78
|
|
|
79
79
|
// Nice document has medium security level
|
|
80
80
|
expect(stateTransitionFixture.getKeySecurityLevelRequirement())
|
|
81
|
-
.to.
|
|
81
|
+
.to.deep.equal([
|
|
82
|
+
IdentityPublicKey.SECURITY_LEVELS.CRITICAL,
|
|
83
|
+
IdentityPublicKey.SECURITY_LEVELS.HIGH,
|
|
84
|
+
IdentityPublicKey.SECURITY_LEVELS.MEDIUM,
|
|
85
|
+
]);
|
|
82
86
|
|
|
83
87
|
stateTransitionFixture = documentFactory.createStateTransition({
|
|
84
88
|
create: [mediumSecurityDocumentFixture, masterSecurityDocumentFixture],
|
|
@@ -88,7 +92,7 @@ describe('DocumentBatchTransition', () => {
|
|
|
88
92
|
|
|
89
93
|
// Should be the highest security level out of MEDIUM and MASTER
|
|
90
94
|
expect(stateTransitionFixture.getKeySecurityLevelRequirement())
|
|
91
|
-
.to.
|
|
95
|
+
.to.deep.equal([IdentityPublicKey.SECURITY_LEVELS.MASTER]);
|
|
92
96
|
});
|
|
93
97
|
|
|
94
98
|
it('should return default security level if no document has a security level defined - Rust', () => {
|
|
@@ -100,7 +104,10 @@ describe('DocumentBatchTransition', () => {
|
|
|
100
104
|
|
|
101
105
|
// Should be the default level, which is HIGH
|
|
102
106
|
expect(stateTransitionFixture.getKeySecurityLevelRequirement())
|
|
103
|
-
.to.
|
|
107
|
+
.to.deep.equal([
|
|
108
|
+
IdentityPublicKey.SECURITY_LEVELS.CRITICAL,
|
|
109
|
+
IdentityPublicKey.SECURITY_LEVELS.HIGH,
|
|
110
|
+
]);
|
|
104
111
|
});
|
|
105
112
|
});
|
|
106
113
|
});
|
|
@@ -63,8 +63,9 @@ describe('validateIdentityUpdateTransitionStateFactory', () => {
|
|
|
63
63
|
stateRepositoryMock.fetchLatestPlatformBlockTime = this.sinonSandbox.stub();
|
|
64
64
|
stateRepositoryMock.fetchLatestPlatformBlockTime.resolves(blockTime);
|
|
65
65
|
|
|
66
|
+
executionContext = new StateTransitionExecutionContext();
|
|
66
67
|
const validator = new IdentityUpdateTransitionStateValidator(stateRepositoryMock, blsAdapter);
|
|
67
|
-
validateIdentityUpdateTransitionState = (st) => validator.validate(st);
|
|
68
|
+
validateIdentityUpdateTransitionState = (st) => validator.validate(st, executionContext);
|
|
68
69
|
|
|
69
70
|
stateTransition = await getIdentityUpdateTransitionFixture();
|
|
70
71
|
|
|
@@ -72,10 +73,6 @@ describe('validateIdentityUpdateTransitionStateFactory', () => {
|
|
|
72
73
|
stateTransition.setPublicKeyIdsToDisable(undefined);
|
|
73
74
|
stateTransition.setPublicKeysDisabledAt(undefined);
|
|
74
75
|
|
|
75
|
-
executionContext = new StateTransitionExecutionContext();
|
|
76
|
-
|
|
77
|
-
stateTransition.setExecutionContext(executionContext);
|
|
78
|
-
|
|
79
76
|
const privateKey = '9b67f852093bc61cea0eeca38599dbfba0de28574d2ed9b99d10d33dc1bde7b2';
|
|
80
77
|
|
|
81
78
|
await stateTransition.signByPrivateKey(
|
|
@@ -275,10 +272,10 @@ describe('validateIdentityUpdateTransitionStateFactory', () => {
|
|
|
275
272
|
// Make code that executes after dry run check to fail
|
|
276
273
|
stateRepositoryMock.fetchLatestPlatformBlockTime.resolves({});
|
|
277
274
|
|
|
278
|
-
|
|
275
|
+
executionContext.enableDryRun();
|
|
279
276
|
const result = await validateIdentityUpdateTransitionState(stateTransition);
|
|
280
277
|
|
|
281
|
-
|
|
278
|
+
executionContext.disableDryRun();
|
|
282
279
|
|
|
283
280
|
expect(result.isValid()).to.be.true();
|
|
284
281
|
|
|
@@ -21,6 +21,7 @@ describe('StateTransitionFacade', () => {
|
|
|
21
21
|
let dataContract;
|
|
22
22
|
let identityPublicKey;
|
|
23
23
|
let identity;
|
|
24
|
+
let executionContext;
|
|
24
25
|
|
|
25
26
|
let DashPlatformProtocol;
|
|
26
27
|
let DataContractFactory;
|
|
@@ -37,6 +38,7 @@ describe('StateTransitionFacade', () => {
|
|
|
37
38
|
let InvalidStateTransitionSignatureError;
|
|
38
39
|
let DataContractAlreadyPresentError;
|
|
39
40
|
let BalanceIsNotEnoughError;
|
|
41
|
+
let StateTransitionExecutionContext;
|
|
40
42
|
|
|
41
43
|
before(async () => {
|
|
42
44
|
({
|
|
@@ -55,6 +57,7 @@ describe('StateTransitionFacade', () => {
|
|
|
55
57
|
InvalidStateTransitionSignatureError,
|
|
56
58
|
DataContractAlreadyPresentError,
|
|
57
59
|
BalanceIsNotEnoughError,
|
|
60
|
+
StateTransitionExecutionContext,
|
|
58
61
|
} = await loadWasmDpp());
|
|
59
62
|
});
|
|
60
63
|
|
|
@@ -64,6 +67,8 @@ describe('StateTransitionFacade', () => {
|
|
|
64
67
|
const publicKey = privateKeyModel.toPublicKey().toBuffer();
|
|
65
68
|
const publicKeyId = 1;
|
|
66
69
|
|
|
70
|
+
executionContext = new StateTransitionExecutionContext();
|
|
71
|
+
|
|
67
72
|
identityPublicKey = new IdentityPublicKey({
|
|
68
73
|
id: publicKeyId,
|
|
69
74
|
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
@@ -132,7 +137,7 @@ describe('StateTransitionFacade', () => {
|
|
|
132
137
|
});
|
|
133
138
|
|
|
134
139
|
describe('createFromBuffer', () => {
|
|
135
|
-
it('should create State Transition from
|
|
140
|
+
it('should create Data Contract State Transition from buffer', async () => {
|
|
136
141
|
const result = await dpp.stateTransition.createFromBuffer(
|
|
137
142
|
dataContractCreateTransition.toBuffer(),
|
|
138
143
|
);
|
|
@@ -148,7 +153,7 @@ describe('StateTransitionFacade', () => {
|
|
|
148
153
|
const rawStateTransition = dataContractCreateTransition.toObject();
|
|
149
154
|
rawStateTransition.protocolVersion = 100;
|
|
150
155
|
|
|
151
|
-
const result = await dpp.stateTransition.validate(rawStateTransition);
|
|
156
|
+
const result = await dpp.stateTransition.validate(rawStateTransition, executionContext);
|
|
152
157
|
|
|
153
158
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
154
159
|
expect(result.isValid()).to.be.false();
|
|
@@ -161,7 +166,7 @@ describe('StateTransitionFacade', () => {
|
|
|
161
166
|
const rawStateTransition = dataContractCreateTransition.toObject();
|
|
162
167
|
rawStateTransition.signature = Buffer.alloc(65).fill(1);
|
|
163
168
|
|
|
164
|
-
const result = await dpp.stateTransition.validate(rawStateTransition);
|
|
169
|
+
const result = await dpp.stateTransition.validate(rawStateTransition, executionContext);
|
|
165
170
|
|
|
166
171
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
167
172
|
expect(result.isValid()).to.be.false();
|
|
@@ -173,7 +178,9 @@ describe('StateTransitionFacade', () => {
|
|
|
173
178
|
it('should return invalid result if not enough balance to pay fee for State Transition', async () => {
|
|
174
179
|
identity.setBalance(0);
|
|
175
180
|
stateRepositoryMock.fetchIdentityBalance.resolves(0);
|
|
176
|
-
const result = await dpp.stateTransition.validate(
|
|
181
|
+
const result = await dpp.stateTransition.validate(
|
|
182
|
+
dataContractCreateTransition, executionContext,
|
|
183
|
+
);
|
|
177
184
|
|
|
178
185
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
179
186
|
expect(result.isValid()).to.be.false();
|
|
@@ -185,7 +192,9 @@ describe('StateTransitionFacade', () => {
|
|
|
185
192
|
it('should return invalid result if State Transition is invalid against state', async () => {
|
|
186
193
|
stateRepositoryMock.fetchDataContract.resolves(dataContract);
|
|
187
194
|
|
|
188
|
-
const result = await dpp.stateTransition.validate(
|
|
195
|
+
const result = await dpp.stateTransition.validate(
|
|
196
|
+
dataContractCreateTransition, executionContext,
|
|
197
|
+
);
|
|
189
198
|
|
|
190
199
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
191
200
|
expect(result.isValid()).to.be.false();
|
|
@@ -197,6 +206,7 @@ describe('StateTransitionFacade', () => {
|
|
|
197
206
|
it('should validate DataContractCreateTransition', async () => {
|
|
198
207
|
const result = await dpp.stateTransition.validate(
|
|
199
208
|
dataContractCreateTransition,
|
|
209
|
+
executionContext,
|
|
200
210
|
);
|
|
201
211
|
|
|
202
212
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -210,6 +220,7 @@ describe('StateTransitionFacade', () => {
|
|
|
210
220
|
stateRepositoryMock.fetchDataContract.resolves(dataContract);
|
|
211
221
|
const result = await dpp.stateTransition.validate(
|
|
212
222
|
documentsBatchTransition,
|
|
223
|
+
executionContext,
|
|
213
224
|
);
|
|
214
225
|
|
|
215
226
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -220,7 +231,7 @@ describe('StateTransitionFacade', () => {
|
|
|
220
231
|
describe('validateBasic', () => {
|
|
221
232
|
it('should validate State Transition', async () => {
|
|
222
233
|
const result = await dpp.stateTransition.validateBasic(
|
|
223
|
-
dataContractCreateTransition.toObject(),
|
|
234
|
+
dataContractCreateTransition.toObject(), executionContext,
|
|
224
235
|
);
|
|
225
236
|
|
|
226
237
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -231,7 +242,7 @@ describe('StateTransitionFacade', () => {
|
|
|
231
242
|
describe('validateSignature', () => {
|
|
232
243
|
it('should validate identity signed State Transition', async () => {
|
|
233
244
|
const result = await dpp.stateTransition.validateSignature(
|
|
234
|
-
dataContractCreateTransition,
|
|
245
|
+
dataContractCreateTransition, executionContext,
|
|
235
246
|
);
|
|
236
247
|
|
|
237
248
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -254,7 +265,7 @@ describe('StateTransitionFacade', () => {
|
|
|
254
265
|
);
|
|
255
266
|
|
|
256
267
|
const result = await dpp.stateTransition.validateSignature(
|
|
257
|
-
identityCreateTransition,
|
|
268
|
+
identityCreateTransition, executionContext,
|
|
258
269
|
);
|
|
259
270
|
|
|
260
271
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -266,6 +277,7 @@ describe('StateTransitionFacade', () => {
|
|
|
266
277
|
it('should validate State Transition', async () => {
|
|
267
278
|
const result = await dpp.stateTransition.validateFee(
|
|
268
279
|
dataContractCreateTransition,
|
|
280
|
+
executionContext,
|
|
269
281
|
);
|
|
270
282
|
|
|
271
283
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -277,6 +289,7 @@ describe('StateTransitionFacade', () => {
|
|
|
277
289
|
it('should validate State Transition', async () => {
|
|
278
290
|
const result = await dpp.stateTransition.validateState(
|
|
279
291
|
dataContractCreateTransition,
|
|
292
|
+
executionContext,
|
|
280
293
|
);
|
|
281
294
|
|
|
282
295
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const bs58 = require('bs58');
|
|
2
2
|
|
|
3
3
|
const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
|
|
4
|
-
const JsDataContract = require('@dashevo/dpp/lib/dataContract/DataContract');
|
|
5
4
|
|
|
6
5
|
const { default: loadWasmDpp } = require('../../../dist');
|
|
7
6
|
|
|
@@ -9,7 +8,6 @@ describe('DataContract', () => {
|
|
|
9
8
|
let documentType;
|
|
10
9
|
let documentSchema;
|
|
11
10
|
let documents;
|
|
12
|
-
let jsDataContract;
|
|
13
11
|
let ownerId;
|
|
14
12
|
let entropy;
|
|
15
13
|
let contractId;
|
|
@@ -52,16 +50,6 @@ describe('DataContract', () => {
|
|
|
52
50
|
|
|
53
51
|
defs = { something: { type: 'string' } };
|
|
54
52
|
|
|
55
|
-
jsDataContract = new JsDataContract({
|
|
56
|
-
$schema: JsDataContract.DEFAULTS.SCHEMA,
|
|
57
|
-
$id: contractId,
|
|
58
|
-
version: 1,
|
|
59
|
-
protocolVersion: 1,
|
|
60
|
-
ownerId,
|
|
61
|
-
documents,
|
|
62
|
-
$defs: defs,
|
|
63
|
-
});
|
|
64
|
-
|
|
65
53
|
dataContract = new DataContract({
|
|
66
54
|
$schema: DataContractDefaults.SCHEMA,
|
|
67
55
|
$id: contractId,
|
|
@@ -285,21 +273,21 @@ describe('DataContract', () => {
|
|
|
285
273
|
|
|
286
274
|
describe('#toBuffer', () => {
|
|
287
275
|
it('should return DataContract as a Buffer', () => {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
const wasmResult = dataContract.toBuffer();
|
|
292
|
-
|
|
293
|
-
expect(wasmResult).to.deep.equal(jsResult);
|
|
276
|
+
const result = dataContract.toBuffer();
|
|
277
|
+
expect(result).to.be.instanceOf(Buffer);
|
|
278
|
+
expect(result).to.have.lengthOf(251);
|
|
294
279
|
});
|
|
295
280
|
});
|
|
296
281
|
|
|
282
|
+
// TODO: can not compare to JS because rust
|
|
283
|
+
// DataContract does not match JS anymore
|
|
297
284
|
describe('#hash', () => {
|
|
298
285
|
it('should return DataContract hash', () => {
|
|
299
|
-
const jsResult = jsDataContract.hash();
|
|
286
|
+
// const jsResult = jsDataContract.hash();
|
|
300
287
|
const wasmResult = dataContract.hash();
|
|
301
|
-
|
|
302
|
-
expect(wasmResult).to.deep.equal(jsResult);
|
|
288
|
+
//
|
|
289
|
+
// expect(wasmResult).to.deep.equal(jsResult);
|
|
290
|
+
expect(wasmResult).to.be.instanceOf(Uint8Array);
|
|
303
291
|
});
|
|
304
292
|
});
|
|
305
293
|
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
2
|
-
|
|
3
1
|
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
2
|
+
const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
|
|
4
3
|
|
|
5
|
-
const { default: loadWasmDpp } = require('../../../dist');
|
|
4
|
+
const { default: loadWasmDpp, UnsupportedProtocolVersionError } = require('../../../dist');
|
|
6
5
|
|
|
7
6
|
describe('DataContractFactory', () => {
|
|
8
7
|
let DataContractFactory;
|
|
9
8
|
let DataContractValidator;
|
|
10
9
|
let DataContract;
|
|
11
10
|
let InvalidDataContractError;
|
|
12
|
-
let SerializedObjectParsingError;
|
|
13
11
|
let JsonSchemaError;
|
|
14
12
|
|
|
15
13
|
let factory;
|
|
16
|
-
let
|
|
14
|
+
let dataContract;
|
|
17
15
|
let rawDataContract;
|
|
18
16
|
let dataContractValidator;
|
|
19
17
|
|
|
@@ -23,18 +21,13 @@ describe('DataContractFactory', () => {
|
|
|
23
21
|
DataContractValidator,
|
|
24
22
|
DataContract,
|
|
25
23
|
InvalidDataContractError,
|
|
26
|
-
SerializedObjectParsingError,
|
|
27
24
|
JsonSchemaError,
|
|
28
25
|
} = await loadWasmDpp());
|
|
29
26
|
});
|
|
30
27
|
|
|
31
|
-
beforeEach(() => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// For some reason fixture has empty $defs which violates meta schema
|
|
35
|
-
delete jsDataContract.$defs;
|
|
36
|
-
|
|
37
|
-
rawDataContract = jsDataContract.toObject();
|
|
28
|
+
beforeEach(async () => {
|
|
29
|
+
dataContract = await getDataContractFixture();
|
|
30
|
+
rawDataContract = dataContract.toObject();
|
|
38
31
|
|
|
39
32
|
dataContractValidator = new DataContractValidator();
|
|
40
33
|
|
|
@@ -47,7 +40,7 @@ describe('DataContractFactory', () => {
|
|
|
47
40
|
describe('create', () => {
|
|
48
41
|
it('should return new Data Contract with specified name and documents definition', () => {
|
|
49
42
|
const result = factory.create(
|
|
50
|
-
|
|
43
|
+
dataContract.getOwnerId(),
|
|
51
44
|
rawDataContract.documents,
|
|
52
45
|
).toObject();
|
|
53
46
|
|
|
@@ -62,8 +55,7 @@ describe('DataContractFactory', () => {
|
|
|
62
55
|
});
|
|
63
56
|
|
|
64
57
|
it('should return new Data Contract without validation if "skipValidation" option is passed', async () => {
|
|
65
|
-
const alteredContract =
|
|
66
|
-
alteredContract.$defs = {}; // Empty defs are bad!
|
|
58
|
+
const alteredContract = dataContract.toObject();
|
|
67
59
|
|
|
68
60
|
const resultSkipValidation = await factory.createFromObject(alteredContract, true);
|
|
69
61
|
|
|
@@ -71,8 +63,7 @@ describe('DataContractFactory', () => {
|
|
|
71
63
|
});
|
|
72
64
|
|
|
73
65
|
it('should throw an error if passed object is not valid', async () => {
|
|
74
|
-
const alteredContract =
|
|
75
|
-
alteredContract.$defs = {}; // Empty defs are bad!
|
|
66
|
+
const alteredContract = dataContract.toObject();
|
|
76
67
|
|
|
77
68
|
try {
|
|
78
69
|
await factory.createFromObject(alteredContract);
|
|
@@ -91,24 +82,24 @@ describe('DataContractFactory', () => {
|
|
|
91
82
|
let serializedDataContract;
|
|
92
83
|
|
|
93
84
|
beforeEach(() => {
|
|
94
|
-
serializedDataContract =
|
|
85
|
+
serializedDataContract = dataContract.toBuffer();
|
|
95
86
|
});
|
|
96
87
|
|
|
97
88
|
it('should return new Data Contract from serialized contract', async () => {
|
|
98
89
|
const result = await factory.createFromBuffer(serializedDataContract);
|
|
99
90
|
|
|
100
|
-
expect(result.toObject()).to.deep.equal(
|
|
91
|
+
expect(result.toObject()).to.deep.equal(dataContract.toObject());
|
|
101
92
|
});
|
|
102
93
|
|
|
103
94
|
it('should throw InvalidDataContractError if the decoding fails with consensus error', async () => {
|
|
104
95
|
try {
|
|
105
96
|
// Casually break serialized data contract:
|
|
106
|
-
serializedDataContract[
|
|
97
|
+
serializedDataContract[0] = 3;
|
|
107
98
|
await factory.createFromBuffer(serializedDataContract);
|
|
108
99
|
expect.fail('should throw InvalidDataContractError');
|
|
109
100
|
} catch (e) {
|
|
110
|
-
expect(e).to.be.an.instanceOf(
|
|
111
|
-
expect(e.
|
|
101
|
+
expect(e).to.be.an.instanceOf(InvalidDataContractError);
|
|
102
|
+
expect(e.getErrors()[0]).to.be.an.instanceOf(UnsupportedProtocolVersionError);
|
|
112
103
|
}
|
|
113
104
|
});
|
|
114
105
|
});
|
|
@@ -116,14 +107,14 @@ describe('DataContractFactory', () => {
|
|
|
116
107
|
describe('createDataContractCreateTransition', () => {
|
|
117
108
|
it('should return new DataContractCreateTransition with passed DataContract', async () => {
|
|
118
109
|
// Create wasm version of DataContract
|
|
119
|
-
const
|
|
120
|
-
|
|
110
|
+
const newDataContract = new DataContract(rawDataContract);
|
|
111
|
+
newDataContract.setEntropy(dataContract.getEntropy());
|
|
121
112
|
|
|
122
|
-
const result = await factory.createDataContractCreateTransition(
|
|
113
|
+
const result = await factory.createDataContractCreateTransition(newDataContract);
|
|
123
114
|
|
|
124
115
|
expect(result.getProtocolVersion()).to.equal(protocolVersion.latestVersion);
|
|
125
|
-
expect(result.getEntropy()).to.deep.equal(
|
|
126
|
-
expect(result.getDataContract().toObject()).to.deep.equal(
|
|
116
|
+
expect(result.getEntropy()).to.deep.equal(dataContract.getEntropy());
|
|
117
|
+
expect(result.getDataContract().toObject()).to.deep.equal(dataContract.toObject());
|
|
127
118
|
});
|
|
128
119
|
});
|
|
129
120
|
});
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const varint = require('varint');
|
|
2
1
|
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
3
2
|
const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
|
|
4
3
|
|
|
@@ -65,10 +64,9 @@ describe('DataContractCreateTransition', () => {
|
|
|
65
64
|
|
|
66
65
|
describe('#toBuffer', () => {
|
|
67
66
|
it('should return serialized State Transition', () => {
|
|
68
|
-
const protocolVersionBytes = Buffer.from(varint.encode(stateTransition.getProtocolVersion()));
|
|
69
|
-
|
|
70
67
|
const result = stateTransition.toBuffer();
|
|
71
|
-
expect(result
|
|
68
|
+
expect(result).to.be.instanceOf(Buffer);
|
|
69
|
+
expect(result).to.have.lengthOf(2271);
|
|
72
70
|
});
|
|
73
71
|
});
|
|
74
72
|
|