@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
package/webpack.config.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
const webpack = require('webpack');
|
|
3
|
+
const TerserPlugin = require('terser-webpack-plugin');
|
|
3
4
|
|
|
4
5
|
module.exports = {
|
|
5
|
-
entry: './index.ts',
|
|
6
|
+
entry: './lib/index.ts',
|
|
6
7
|
output: {
|
|
7
8
|
path: path.resolve(__dirname, 'dist'),
|
|
8
9
|
filename: 'index.js',
|
|
@@ -14,6 +15,14 @@ module.exports = {
|
|
|
14
15
|
// as webpack names global object "self" for some reason
|
|
15
16
|
globalObject: 'this',
|
|
16
17
|
},
|
|
18
|
+
optimization: {
|
|
19
|
+
minimize: true,
|
|
20
|
+
minimizer: [new TerserPlugin({
|
|
21
|
+
terserOptions: {
|
|
22
|
+
keep_classnames: true,
|
|
23
|
+
},
|
|
24
|
+
})],
|
|
25
|
+
},
|
|
17
26
|
mode: 'production',
|
|
18
27
|
module: {
|
|
19
28
|
rules: [
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
const calculateStateTransitionFee = require('@dashevo/dpp/lib/stateTransition/fee/calculateStateTransitionFee');
|
|
2
|
-
|
|
3
|
-
const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
|
|
4
|
-
const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
5
|
-
const ReadOperation = require('@dashevo/dpp/lib/stateTransition/fee/operations/ReadOperation');
|
|
6
|
-
const PreCalculatedOperation = require('@dashevo/dpp/lib/stateTransition/fee/operations/PreCalculatedOperation');
|
|
7
|
-
const DummyFeeResult = require('@dashevo/dpp/lib/stateTransition/fee/DummyFeeResult');
|
|
8
|
-
|
|
9
|
-
describe('calculateStateTransitionFee', () => {
|
|
10
|
-
let stateTransition;
|
|
11
|
-
|
|
12
|
-
beforeEach(async () => {
|
|
13
|
-
const privateKey = 'af432c476f65211f45f48f1d42c9c0b497e56696aa1736b40544ef1a496af837';
|
|
14
|
-
|
|
15
|
-
stateTransition = getIdentityCreateTransitionFixture();
|
|
16
|
-
await stateTransition.signByPrivateKey(privateKey, IdentityPublicKey.TYPES.ECDSA_SECP256K1);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
// TODO: Must be more comprehensive. After we settle all factors and formula.
|
|
20
|
-
it('should calculate fee based on executed operations', () => {
|
|
21
|
-
const executionContext = stateTransition.getExecutionContext();
|
|
22
|
-
|
|
23
|
-
executionContext.addOperation(
|
|
24
|
-
new ReadOperation(10),
|
|
25
|
-
new PreCalculatedOperation(new DummyFeeResult(12, 12)),
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
const result = calculateStateTransitionFee(stateTransition);
|
|
29
|
-
|
|
30
|
-
expect(result).to.equal(17088);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
const validateDataContractMaxDepthFactory = require('@dashevo/dpp/lib/dataContract/validation/validateDataContractMaxDepthFactory');
|
|
2
|
-
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
3
|
-
const { expectValidationError } = require('@dashevo/dpp/lib/test/expect/expectError');
|
|
4
|
-
const DataContractMaxDepthExceedError = require('@dashevo/dpp/lib/errors/consensus/basic/dataContract/DataContractMaxDepthExceedError');
|
|
5
|
-
const generateDeepJson = require('@dashevo/dpp/lib/test/utils/generateDeepJson');
|
|
6
|
-
const InvalidJsonSchemaRefError = require('@dashevo/dpp/lib/errors/consensus/basic/dataContract/InvalidJsonSchemaRefError');
|
|
7
|
-
|
|
8
|
-
describe('validateDataContractMaxDepthFactory', () => {
|
|
9
|
-
let refParserMock;
|
|
10
|
-
let validateDataContractMaxDepth;
|
|
11
|
-
let dataContractFixture;
|
|
12
|
-
|
|
13
|
-
beforeEach(function beforeEach() {
|
|
14
|
-
dataContractFixture = {};
|
|
15
|
-
|
|
16
|
-
refParserMock = {
|
|
17
|
-
dereference: this.sinonSandbox.stub(),
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
validateDataContractMaxDepth = validateDataContractMaxDepthFactory(refParserMock);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it('should throw error if depth > MAX_DEPTH', async () => {
|
|
24
|
-
dataContractFixture = generateDeepJson(DataContractMaxDepthExceedError.MAX_DEPTH + 1);
|
|
25
|
-
|
|
26
|
-
refParserMock.dereference.resolves(dataContractFixture);
|
|
27
|
-
|
|
28
|
-
const result = await validateDataContractMaxDepth(dataContractFixture);
|
|
29
|
-
|
|
30
|
-
expectValidationError(result);
|
|
31
|
-
|
|
32
|
-
const [error] = result.getErrors();
|
|
33
|
-
|
|
34
|
-
expect(error).to.be.an.instanceOf(DataContractMaxDepthExceedError);
|
|
35
|
-
expect(error.getCode()).to.equal(1007);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('should return valid result if depth = MAX_DEPTH', async () => {
|
|
39
|
-
dataContractFixture = generateDeepJson(DataContractMaxDepthExceedError.MAX_DEPTH);
|
|
40
|
-
|
|
41
|
-
refParserMock.dereference.resolves(dataContractFixture);
|
|
42
|
-
|
|
43
|
-
const result = await validateDataContractMaxDepth(dataContractFixture);
|
|
44
|
-
|
|
45
|
-
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
46
|
-
expect(result.isValid()).to.be.true();
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('should throw error if contract contains array with depth > MAX_DEPTH', async () => {
|
|
50
|
-
const deepJson = generateDeepJson(DataContractMaxDepthExceedError.MAX_DEPTH + 1);
|
|
51
|
-
|
|
52
|
-
dataContractFixture = {
|
|
53
|
-
array: [
|
|
54
|
-
0, deepJson,
|
|
55
|
-
],
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
refParserMock.dereference.resolves(dataContractFixture);
|
|
59
|
-
|
|
60
|
-
const result = await validateDataContractMaxDepth(dataContractFixture);
|
|
61
|
-
|
|
62
|
-
expectValidationError(result);
|
|
63
|
-
|
|
64
|
-
const [error] = result.getErrors();
|
|
65
|
-
|
|
66
|
-
expect(error).to.be.an.instanceOf(DataContractMaxDepthExceedError);
|
|
67
|
-
expect(error.getCode()).to.equal(1007);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it('should return error if refParser throws an error', async () => {
|
|
71
|
-
const refParserError = new Error('refParser error');
|
|
72
|
-
|
|
73
|
-
refParserMock.dereference.throws(refParserError);
|
|
74
|
-
|
|
75
|
-
const result = await validateDataContractMaxDepth(dataContractFixture);
|
|
76
|
-
|
|
77
|
-
expectValidationError(result);
|
|
78
|
-
|
|
79
|
-
const [error] = result.getErrors();
|
|
80
|
-
|
|
81
|
-
expect(error).to.be.an.instanceOf(InvalidJsonSchemaRefError);
|
|
82
|
-
expect(error.message).to.equal(`Invalid JSON Schema $ref: ${refParserError.message}`);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('should return valid result', async () => {
|
|
86
|
-
refParserMock.dereference.resolves(dataContractFixture);
|
|
87
|
-
|
|
88
|
-
const result = await validateDataContractMaxDepth(dataContractFixture);
|
|
89
|
-
|
|
90
|
-
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
91
|
-
expect(result.isValid()).to.be.true();
|
|
92
|
-
});
|
|
93
|
-
});
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
const { getRE2Class } = require('@dashevo/wasm-re2');
|
|
2
|
-
|
|
3
|
-
const validateDataContractPatternsFactory = require('@dashevo/dpp/lib/dataContract/validation/validateDataContractPatternsFactory');
|
|
4
|
-
const { expectValidationError } = require(
|
|
5
|
-
'@dashevo/dpp/lib/test/expect/expectError',
|
|
6
|
-
);
|
|
7
|
-
const IncompatibleRe2PatternError = require('@dashevo/dpp/lib/errors/consensus/basic/dataContract/IncompatibleRe2PatternError');
|
|
8
|
-
|
|
9
|
-
describe('validateDataContractPatternsFactory', () => {
|
|
10
|
-
let validateDataContractPatterns;
|
|
11
|
-
let RE2;
|
|
12
|
-
|
|
13
|
-
before(async () => {
|
|
14
|
-
RE2 = await getRE2Class();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
validateDataContractPatterns = validateDataContractPatternsFactory(RE2);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('should return valid result', () => {
|
|
22
|
-
const schema = {
|
|
23
|
-
type: 'object',
|
|
24
|
-
properties: {
|
|
25
|
-
foo: { type: 'integer' },
|
|
26
|
-
bar: {
|
|
27
|
-
type: 'string',
|
|
28
|
-
pattern: '([a-z]+)+$',
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
required: ['foo'],
|
|
32
|
-
additionalProperties: false,
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
const result = validateDataContractPatterns(schema);
|
|
36
|
-
|
|
37
|
-
expect(result.isValid()).to.be.true();
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('should return invalid result on incompatible pattern', () => {
|
|
41
|
-
const schema = {
|
|
42
|
-
type: 'object',
|
|
43
|
-
properties: {
|
|
44
|
-
foo: { type: 'integer' },
|
|
45
|
-
bar: {
|
|
46
|
-
type: 'string',
|
|
47
|
-
pattern: '^((?!-|_)[a-zA-Z0-9-_]{0,62}[a-zA-Z0-9])$',
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
required: ['foo'],
|
|
51
|
-
additionalProperties: false,
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const result = validateDataContractPatterns(schema);
|
|
55
|
-
|
|
56
|
-
expectValidationError(result, IncompatibleRe2PatternError);
|
|
57
|
-
const [error] = result.getErrors();
|
|
58
|
-
|
|
59
|
-
expect(error.getCode()).to.equal(1009);
|
|
60
|
-
expect(error.getPattern()).to.equal('^((?!-|_)[a-zA-Z0-9-_]{0,62}[a-zA-Z0-9])$');
|
|
61
|
-
expect(error.getPath()).to.equal('/properties/bar');
|
|
62
|
-
expect(error.getPatternError()).to.be.instanceOf(Error);
|
|
63
|
-
});
|
|
64
|
-
});
|