@dashevo/wasm-dpp 0.24.0-dev.11 → 0.24.0-dev.13
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 +3 -0
- package/README.md +5 -1
- package/dist/index.js +1 -1
- package/dist/index.js.LICENSE.txt +9 -0
- package/dist/lib/dpp.d.ts +9 -0
- package/dist/lib/errors/AbstractConsensusError.d.ts +10 -0
- package/dist/lib/errors/DPPError.d.ts +5 -0
- package/dist/lib/errors/patchConsensusErrors.d.ts +1 -0
- package/dist/lib/{patchIdentifier.d.ts → identifier/patchIdentifier.d.ts} +1 -1
- package/dist/{index.d.ts → lib/index.d.ts} +1 -1
- package/dist/lib/utils/extend.d.ts +1 -0
- package/dist/wasm/wasm_dpp.d.ts +1595 -518
- package/karma.conf.js +5 -0
- package/lib/dpp.ts +24 -0
- package/lib/errors/AbstractConsensusError.ts +13 -0
- package/lib/errors/DPPError.ts +15 -0
- package/lib/errors/patchConsensusErrors.ts +175 -0
- package/lib/{patchIdentifier.ts → identifier/patchIdentifier.ts} +6 -5
- package/{index.ts → lib/index.ts} +5 -4
- package/lib/test/bootstrap.js +5 -0
- package/lib/test/expect/expectError.js +4 -2
- package/lib/test/mocks/getBlsAdapterMock.js +36 -0
- package/lib/test/utils/newDocumentsContainer.js +36 -0
- package/lib/utils/extend.ts +6 -0
- package/package.json +9 -6
- package/src/bls_adapter.rs +16 -1
- package/src/data_contract/data_contract.rs +35 -7
- package/src/data_contract/errors/invalid_data_contract.rs +21 -0
- package/src/data_contract/errors/invalid_document_type.rs +1 -1
- package/src/data_contract/index.rs +56 -1
- package/src/data_contract/mod.rs +1 -0
- package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +6 -8
- package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +4 -4
- package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +44 -0
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +145 -0
- package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +49 -0
- package/src/data_contract/state_transition/mod.rs +2 -0
- package/src/data_contract_factory/data_contract_factory.rs +25 -12
- package/src/document/errors/invalid_document_error.rs +10 -9
- package/src/document/errors/invalid_initial_revision_error.rs +1 -1
- package/src/document/errors/mismatch_owners_ids_error.rs +14 -4
- package/src/document/errors/mod.rs +17 -13
- package/src/document/errors/no_documents_supplied_error.rs +4 -4
- package/src/document/factory.rs +192 -0
- package/src/document/mod.rs +222 -30
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +47 -1
- package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +25 -1
- package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +65 -0
- package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +123 -3
- package/src/document/state_transition/document_batch_transition/mod.rs +378 -0
- package/src/document/validator.rs +30 -0
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +5 -5
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +4 -4
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +36 -0
- package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +20 -0
- package/src/errors/consensus/basic/document/mod.rs +4 -0
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +2 -2
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +2 -2
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +6 -2
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +5 -2
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +3 -3
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +2 -2
- package/src/errors/consensus/basic/json_schema_error.rs +1 -1
- package/src/errors/consensus_error.rs +15 -8
- package/src/errors/dpp_error.rs +17 -0
- package/src/errors/from.rs +6 -1
- package/src/errors/js_conversion.rs +19 -4
- package/src/errors/mod.rs +3 -0
- package/src/errors/protocol_error.rs +15 -0
- package/src/{identifier.rs → identifier/mod.rs} +48 -3
- package/src/identity/errors/asset_lock_output_not_found_error.rs +11 -0
- package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +20 -0
- package/src/identity/errors/mod.rs +7 -0
- package/src/identity/errors/unknown_asset_lock_proof_type_error.rs +26 -0
- package/src/{identity_facade.rs → identity/identity_facade.rs} +3 -5
- package/src/{identity_public_key → identity/identity_public_key}/key_type.rs +0 -0
- package/src/{identity_public_key → identity/identity_public_key}/mod.rs +41 -10
- package/src/{identity_public_key → identity/identity_public_key}/purpose.rs +0 -0
- package/src/{identity_public_key → identity/identity_public_key}/security_level.rs +0 -0
- package/src/{identity.rs → identity/mod.rs} +20 -12
- package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +132 -0
- package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +72 -0
- package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +4 -0
- package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +177 -0
- package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +72 -0
- package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +4 -0
- package/src/identity/state_transition/asset_lock_proof/mod.rs +269 -0
- package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +26 -0
- package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +335 -0
- package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +153 -0
- package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +37 -0
- package/src/identity/state_transition/identity_create_transition/mod.rs +8 -0
- package/src/identity/state_transition/identity_create_transition/to_object.rs +46 -0
- package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +31 -0
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +280 -0
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +113 -0
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +37 -0
- package/src/identity/state_transition/identity_topup_transition/mod.rs +8 -0
- package/src/identity/state_transition/identity_topup_transition/to_object.rs +42 -0
- package/src/identity/state_transition/mod.rs +9 -0
- package/src/identity/state_transition/validate_public_key_signatures.rs +59 -0
- package/src/identity/validation/mod.rs +3 -0
- package/src/identity/validation/public_keys_validator.rs +76 -0
- package/src/identity_public_key/public_keys_validator.rs +1 -1
- package/src/lib.rs +3 -6
- package/src/lodash.rs +7 -0
- package/src/state_repository.rs +188 -36
- package/src/state_transition/mod.rs +12 -0
- package/src/utils.rs +102 -7
- package/src/validation/json_schema_validator.rs +41 -0
- package/src/validation/mod.rs +5 -0
- package/src/{validation_result.rs → validation/validation_result.rs} +23 -5
- package/src/version/mod.rs +2 -0
- package/src/version/protocol_version.rs +26 -0
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +579 -502
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +175 -165
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +83 -114
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +82 -91
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +75 -31
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +93 -148
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +63 -75
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +48 -19
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +79 -114
- package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +0 -11
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +1 -1
- package/test/integration/stateTransition/calculateStateTransitionFeeFactory.spec.js +135 -0
- package/test/unit/dataContract/DataContract.spec.js +5 -9
- package/test/unit/dataContract/DataContractFactory.spec.js +13 -6
- package/test/unit/dataContract/createDataContract.spec.js +0 -1
- package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +11 -3
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +3 -3
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +20 -16
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +24 -60
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +27 -23
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +29 -12
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +66 -49
- package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +73 -0
- package/test/unit/decodeProtocolEntityFactory.spec.js +2 -2
- package/test/unit/document/Document.spec.js +147 -155
- package/test/unit/document/DocumentFactory.spec.js +325 -91
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +142 -64
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +1 -1
- package/test/unit/identity/Identity.spec.js +2 -2
- package/test/unit/identity/IdentityPublicKey.spec.js +25 -31
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +69 -30
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +32 -32
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +56 -25
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +36 -16
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +48 -46
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +24 -6
- package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +63 -0
- package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +90 -0
- package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +18 -3
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +38 -11
- package/tsconfig.json +1 -1
- package/wasm/package.json +5 -0
- package/wasm/wasm_dpp.d.ts +1595 -518
- package/wasm/wasm_dpp.js +5007 -2172
- package/wasm/wasm_dpp_bg.js +1 -1
- package/wasm/wasm_dpp_bg.wasm +0 -0
- package/wasm/wasm_dpp_bg.wasm.d.ts +566 -365
- package/webpack.config.js +10 -1
- package/test/integration/stateTransition/calculateStateTransitionFee.spec.js +0 -32
- package/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js +0 -93
- package/test/unit/dataContract/validation/validateDataContractPatternsFactory.spec.js +0 -64
|
@@ -1,27 +1,36 @@
|
|
|
1
|
-
const validateDataContractUpdateTransitionStateFactory = require('@dashevo/dpp/lib/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory');
|
|
2
|
-
const DataContractUpdateTransition = require('@dashevo/dpp/lib/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition');
|
|
3
|
-
|
|
4
|
-
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
5
1
|
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
2
|
+
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
6
3
|
|
|
7
|
-
const {
|
|
8
|
-
|
|
9
|
-
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
10
|
-
|
|
11
|
-
const DataContractNotPresentError = require('@dashevo/dpp/lib/errors/consensus/basic/document/DataContractNotPresentError');
|
|
12
|
-
const InvalidDataContractVersionError = require('@dashevo/dpp/lib/errors/consensus/basic/dataContract/InvalidDataContractVersionError');
|
|
13
|
-
const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
|
|
4
|
+
const { default: loadWasmDpp } = require('../../../../../../../dist');
|
|
14
5
|
|
|
15
6
|
describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
16
7
|
let validateDataContractUpdateTransitionState;
|
|
17
8
|
let dataContract;
|
|
18
9
|
let stateTransition;
|
|
19
|
-
let stateRepositoryMock;
|
|
20
10
|
let executionContext;
|
|
11
|
+
let DataContractUpdateTransition;
|
|
12
|
+
let StateTransitionExecutionContext;
|
|
13
|
+
let DataContractFactory;
|
|
14
|
+
let DataContractValidator;
|
|
15
|
+
let validateTransitionWithExistingContract;
|
|
16
|
+
let DataContractNotPresentError;
|
|
17
|
+
let InvalidDataContractVersionError;
|
|
18
|
+
let ValidationResult;
|
|
19
|
+
|
|
20
|
+
before(async () => {
|
|
21
|
+
({
|
|
22
|
+
DataContractUpdateTransition,
|
|
23
|
+
StateTransitionExecutionContext,
|
|
24
|
+
validateDataContractUpdateTransitionState,
|
|
25
|
+
ValidationResult,
|
|
26
|
+
DataContractFactory,
|
|
27
|
+
DataContractValidator,
|
|
28
|
+
DataContractNotPresentError,
|
|
29
|
+
InvalidDataContractVersionError,
|
|
30
|
+
} = await loadWasmDpp());
|
|
31
|
+
});
|
|
21
32
|
|
|
22
|
-
beforeEach(
|
|
23
|
-
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
24
|
-
|
|
33
|
+
beforeEach(async () => {
|
|
25
34
|
dataContract = getDataContractFixture();
|
|
26
35
|
|
|
27
36
|
const updatedRawDataContract = dataContract.toObject();
|
|
@@ -30,82 +39,90 @@ describe('validateDataContractUpdateTransitionStateFactory', () => {
|
|
|
30
39
|
|
|
31
40
|
stateTransition = new DataContractUpdateTransition({
|
|
32
41
|
dataContract: updatedRawDataContract,
|
|
42
|
+
protocolVersion: protocolVersion.latestVersion,
|
|
33
43
|
});
|
|
34
44
|
|
|
35
45
|
executionContext = new StateTransitionExecutionContext();
|
|
36
46
|
|
|
37
47
|
stateTransition.setExecutionContext(executionContext);
|
|
38
48
|
|
|
39
|
-
|
|
49
|
+
const validator = new DataContractValidator();
|
|
50
|
+
const dataContractFactory = new DataContractFactory(protocolVersion.latestVersion, validator);
|
|
51
|
+
const wasmDataContract = await dataContractFactory.createFromBuffer(dataContract.toBuffer());
|
|
52
|
+
|
|
53
|
+
const stateRepositoryLike = {
|
|
54
|
+
fetchDataContract: () => wasmDataContract,
|
|
55
|
+
};
|
|
40
56
|
|
|
41
|
-
|
|
42
|
-
|
|
57
|
+
validateTransitionWithExistingContract = (t) => validateDataContractUpdateTransitionState(
|
|
58
|
+
stateRepositoryLike,
|
|
59
|
+
t,
|
|
43
60
|
);
|
|
44
61
|
});
|
|
45
62
|
|
|
46
63
|
it('should return invalid result if Data Contract with specified contractId was not found', async () => {
|
|
47
|
-
|
|
64
|
+
const stateRepositoryLikeNoDataContract = {
|
|
65
|
+
fetchDataContract: () => undefined,
|
|
66
|
+
};
|
|
48
67
|
|
|
49
|
-
const
|
|
68
|
+
const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState(
|
|
69
|
+
stateRepositoryLikeNoDataContract,
|
|
70
|
+
t,
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const result = await validateTransitionWithNoContract(stateTransition);
|
|
50
74
|
|
|
51
|
-
|
|
75
|
+
expect(result.isValid()).to.be.false();
|
|
52
76
|
|
|
53
77
|
const [error] = result.getErrors();
|
|
54
78
|
|
|
79
|
+
expect(error).to.be.an.instanceOf(DataContractNotPresentError);
|
|
55
80
|
expect(error.getCode()).to.equal(1018);
|
|
56
|
-
expect(Buffer.isBuffer(error.getDataContractId())).to.be.true();
|
|
57
81
|
expect(error.getDataContractId()).to.deep.equal(dataContract.getId().toBuffer());
|
|
58
|
-
|
|
59
|
-
expect(stateRepositoryMock.fetchDataContract).to.be.calledOnceWithExactly(
|
|
60
|
-
dataContract.getId(),
|
|
61
|
-
executionContext,
|
|
62
|
-
);
|
|
63
82
|
});
|
|
64
83
|
|
|
65
84
|
it('should return invalid result if Data Contract version is not larger by 1', async () => {
|
|
66
|
-
dataContract.
|
|
85
|
+
const badlyUpdatedRawDataContract = dataContract.toObject();
|
|
86
|
+
badlyUpdatedRawDataContract.version += 2;
|
|
67
87
|
|
|
68
|
-
const
|
|
88
|
+
const badStateTransition = new DataContractUpdateTransition({
|
|
89
|
+
dataContract: badlyUpdatedRawDataContract,
|
|
90
|
+
protocolVersion: protocolVersion.latestVersion,
|
|
91
|
+
});
|
|
69
92
|
|
|
70
|
-
|
|
93
|
+
const result = await validateTransitionWithExistingContract(badStateTransition);
|
|
71
94
|
|
|
72
|
-
|
|
95
|
+
expect(result.isValid()).to.be.false();
|
|
73
96
|
|
|
97
|
+
const [error] = result.getErrors();
|
|
98
|
+
expect(error).to.be.an.instanceOf(InvalidDataContractVersionError);
|
|
74
99
|
expect(error.getCode()).to.equal(1050);
|
|
75
|
-
|
|
76
|
-
expect(stateRepositoryMock.fetchDataContract).to.be.calledOnceWithExactly(
|
|
77
|
-
dataContract.getId(),
|
|
78
|
-
executionContext,
|
|
79
|
-
);
|
|
80
100
|
});
|
|
81
101
|
|
|
82
102
|
it('should return valid result', async () => {
|
|
83
|
-
const result = await
|
|
103
|
+
const result = await validateTransitionWithExistingContract(stateTransition);
|
|
84
104
|
|
|
85
105
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
86
106
|
expect(result.isValid()).to.be.true();
|
|
87
|
-
|
|
88
|
-
expect(stateRepositoryMock.fetchDataContract).to.be.calledOnceWithExactly(
|
|
89
|
-
dataContract.getId(),
|
|
90
|
-
executionContext,
|
|
91
|
-
);
|
|
92
107
|
});
|
|
93
108
|
|
|
94
109
|
it('should return valid result on dry run', async () => {
|
|
95
|
-
|
|
110
|
+
const stateRepositoryLikeNoDataContract = {
|
|
111
|
+
fetchDataContract: () => undefined,
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState(
|
|
115
|
+
stateRepositoryLikeNoDataContract,
|
|
116
|
+
t,
|
|
117
|
+
);
|
|
96
118
|
|
|
97
119
|
executionContext.enableDryRun();
|
|
98
120
|
|
|
99
|
-
const result = await
|
|
121
|
+
const result = await validateTransitionWithNoContract(stateTransition);
|
|
100
122
|
|
|
101
123
|
executionContext.disableDryRun();
|
|
102
124
|
|
|
103
125
|
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
104
126
|
expect(result.isValid()).to.be.true();
|
|
105
|
-
|
|
106
|
-
expect(stateRepositoryMock.fetchDataContract).to.be.calledOnceWithExactly(
|
|
107
|
-
dataContract.getId(),
|
|
108
|
-
executionContext,
|
|
109
|
-
);
|
|
110
127
|
});
|
|
111
128
|
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
2
|
+
|
|
3
|
+
const { default: loadWasmDpp } = require('../../../../dist');
|
|
4
|
+
|
|
5
|
+
describe('validateDataContractPatterns', () => {
|
|
6
|
+
let DataContractValidator;
|
|
7
|
+
let IncompatibleRe2PatternError;
|
|
8
|
+
|
|
9
|
+
before(async () => {
|
|
10
|
+
({
|
|
11
|
+
DataContractValidator,
|
|
12
|
+
IncompatibleRe2PatternError,
|
|
13
|
+
} = await loadWasmDpp());
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('should return valid result', () => {
|
|
17
|
+
const rawDataContract = getDataContractFixture().toObject();
|
|
18
|
+
delete rawDataContract.$defs;
|
|
19
|
+
|
|
20
|
+
const schema = {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {
|
|
23
|
+
foo: { type: 'integer' },
|
|
24
|
+
bar: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
pattern: '([a-z]+)+$',
|
|
27
|
+
maxLength: 1337,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
required: ['foo'],
|
|
31
|
+
additionalProperties: false,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
rawDataContract.documents.totallyFineDocument = schema;
|
|
35
|
+
|
|
36
|
+
const validator = new DataContractValidator();
|
|
37
|
+
|
|
38
|
+
const result = validator.validate(rawDataContract);
|
|
39
|
+
expect(result.isValid()).to.be.true();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('should return invalid result on incompatible pattern', () => {
|
|
43
|
+
const rawDataContract = getDataContractFixture().toObject();
|
|
44
|
+
delete rawDataContract.$defs;
|
|
45
|
+
|
|
46
|
+
const schema = {
|
|
47
|
+
type: 'object',
|
|
48
|
+
properties: {
|
|
49
|
+
foo: { type: 'integer' },
|
|
50
|
+
bar: {
|
|
51
|
+
type: 'string',
|
|
52
|
+
pattern: '^((?!-|_)[a-zA-Z0-9-_]{0,62}[a-zA-Z0-9])$',
|
|
53
|
+
maxLength: 1337,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
required: ['foo'],
|
|
57
|
+
additionalProperties: false,
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
rawDataContract.documents.notFineDocument = schema;
|
|
61
|
+
|
|
62
|
+
const validator = new DataContractValidator();
|
|
63
|
+
|
|
64
|
+
const result = validator.validate(rawDataContract);
|
|
65
|
+
|
|
66
|
+
const [error] = result.getErrors();
|
|
67
|
+
|
|
68
|
+
expect(error).to.be.instanceOf(IncompatibleRe2PatternError);
|
|
69
|
+
expect(error.getCode()).to.equal(1009);
|
|
70
|
+
expect(error.getPattern()).to.equal('^((?!-|_)[a-zA-Z0-9-_]{0,62}[a-zA-Z0-9])$');
|
|
71
|
+
expect(error.getPath()).to.equal('/documents/notFineDocument/properties/bar');
|
|
72
|
+
});
|
|
73
|
+
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const varint = require('varint');
|
|
1
2
|
const decodeProtocolEntityFactory = require('@dashevo/dpp/lib/decodeProtocolEntityFactory');
|
|
2
3
|
const ProtocolVersionParsingError = require('@dashevo/dpp/lib/errors/consensus/basic/decode/ProtocolVersionParsingError');
|
|
3
4
|
const SerializedObjectParsingError = require('@dashevo/dpp/lib/errors/consensus/basic/decode/SerializedObjectParsingError');
|
|
@@ -16,8 +17,7 @@ describe('decodeProtocolEntityFactory', () => {
|
|
|
16
17
|
beforeEach(() => {
|
|
17
18
|
parsedProtocolVersion = 0;
|
|
18
19
|
|
|
19
|
-
protocolVersionBuffer = Buffer.
|
|
20
|
-
protocolVersionBuffer.writeUInt32LE(parsedProtocolVersion, 0);
|
|
20
|
+
protocolVersionBuffer = Buffer.from(varint.encode(parsedProtocolVersion));
|
|
21
21
|
|
|
22
22
|
rawEntity = { test: 'successful' };
|
|
23
23
|
entityBuffer = encode(rawEntity);
|