@dashevo/wasm-dpp 0.23.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.
Files changed (110) hide show
  1. package/.babelrc +5 -0
  2. package/.editorconfig +13 -0
  3. package/.eslintignore +1 -0
  4. package/.eslintrc +15 -0
  5. package/.mocharc.yml +4 -0
  6. package/CHANGELOG.md +397 -0
  7. package/LICENSE +20 -0
  8. package/README.md +37 -0
  9. package/karma.conf.js +53 -0
  10. package/package.json +107 -0
  11. package/test/.eslintrc +12 -0
  12. package/test/integration/DashPlatformProtocol.spec.js +53 -0
  13. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +148 -0
  14. package/test/integration/dataContract/DataContractFacade.spec.js +84 -0
  15. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +357 -0
  16. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +444 -0
  17. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +2191 -0
  18. package/test/integration/document/Document.spec.js +90 -0
  19. package/test/integration/document/DocumentFacade.spec.js +155 -0
  20. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +83 -0
  21. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +1146 -0
  22. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +294 -0
  23. package/test/integration/document/validation/validateDocumentFactory.spec.js +447 -0
  24. package/test/integration/error/consensus/createConsensusError.spec.js +21 -0
  25. package/test/integration/identity/IdentityFacade.spec.js +187 -0
  26. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +422 -0
  27. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +361 -0
  28. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +595 -0
  29. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +299 -0
  30. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +66 -0
  31. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +415 -0
  32. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +134 -0
  33. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +401 -0
  34. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +205 -0
  35. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +127 -0
  36. package/test/integration/identity/validation/validateIdentityFactory.spec.js +370 -0
  37. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +497 -0
  38. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +507 -0
  39. package/test/integration/stateTransition/StateTransitionFacade.spec.js +418 -0
  40. package/test/integration/stateTransition/calculateStateTransitionFee.spec.js +35 -0
  41. package/test/integration/util/generateEntropy.spec.js +17 -0
  42. package/test/integration/util/serializer.spec.js +24 -0
  43. package/test/unit/DashPlatformProtocol.spec.js +79 -0
  44. package/test/unit/Identifier.spec.js +123 -0
  45. package/test/unit/Metadata.spec.js +37 -0
  46. package/test/unit/dataContract/DataContract.spec.js +407 -0
  47. package/test/unit/dataContract/DataContractFactory.spec.js +178 -0
  48. package/test/unit/dataContract/createDataContract.spec.js +57 -0
  49. package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +46 -0
  50. package/test/unit/dataContract/generateDataContractId.spec.js +19 -0
  51. package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +103 -0
  52. package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +84 -0
  53. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +160 -0
  54. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +48 -0
  55. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +85 -0
  56. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +158 -0
  57. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +47 -0
  58. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +121 -0
  59. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +111 -0
  60. package/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js +93 -0
  61. package/test/unit/dataContract/validation/validateDataContractPatternsFactory.spec.js +64 -0
  62. package/test/unit/dataTrigger/DataTrigger.spec.js +132 -0
  63. package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +29 -0
  64. package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +109 -0
  65. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +382 -0
  66. package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +101 -0
  67. package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +113 -0
  68. package/test/unit/dataTrigger/rejectDataTrigger.spec.js +51 -0
  69. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +200 -0
  70. package/test/unit/decodeProtocolEntityFactory.spec.js +75 -0
  71. package/test/unit/document/Document.spec.js +444 -0
  72. package/test/unit/document/DocumentFactory.spec.js +376 -0
  73. package/test/unit/document/errors/InvalidDocumentError.spec.js +46 -0
  74. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +66 -0
  75. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +168 -0
  76. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +171 -0
  77. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +25 -0
  78. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +31 -0
  79. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +122 -0
  80. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +75 -0
  81. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +128 -0
  82. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +811 -0
  83. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +279 -0
  84. package/test/unit/errors/consensus/codes.spec.js +102 -0
  85. package/test/unit/identity/Identity.spec.js +243 -0
  86. package/test/unit/identity/IdentityFactory.spec.js +274 -0
  87. package/test/unit/identity/IdentityPublicKey.spec.js +273 -0
  88. package/test/unit/identity/creditsConverter.spec.js +34 -0
  89. package/test/unit/identity/errors/InvalidIdentityError.spec.js +46 -0
  90. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +184 -0
  91. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +90 -0
  92. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +71 -0
  93. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +137 -0
  94. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +108 -0
  95. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +22 -0
  96. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +219 -0
  97. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +149 -0
  98. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +21 -0
  99. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +36 -0
  100. package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +47 -0
  101. package/test/unit/stateTransition/StateTransitionFactory.spec.js +160 -0
  102. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +72 -0
  103. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +51 -0
  104. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +138 -0
  105. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +372 -0
  106. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +339 -0
  107. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +86 -0
  108. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +89 -0
  109. package/test/unit/version/validateProtocolVersionFactory.spec.js +80 -0
  110. package/webpack.config.js +49 -0
@@ -0,0 +1,357 @@
1
+ const crypto = require('crypto');
2
+
3
+ const { getRE2Class } = require('@dashevo/wasm-re2');
4
+
5
+ const createAjv = require('../../../../../../../lib/ajv/createAjv');
6
+
7
+ const JsonSchemaValidator = require('../../../../../../../lib/validation/JsonSchemaValidator');
8
+
9
+ const protocolVersion = require('../../../../../../../lib/version/protocolVersion');
10
+
11
+ const validateDataContractCreateTransitionBasicFactory = require('../../../../../../../lib/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory');
12
+
13
+ const DataContractCreateTransition = require('../../../../../../../lib/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition');
14
+
15
+ const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture');
16
+
17
+ const {
18
+ expectValidationError,
19
+ expectJsonSchemaError,
20
+ } = require('../../../../../../../lib/test/expect/expectError');
21
+
22
+ const ValidationResult = require('../../../../../../../lib/validation/ValidationResult');
23
+
24
+ const InvalidDataContractIdError = require('../../../../../../../lib/errors/consensus/basic/dataContract/InvalidDataContractIdError');
25
+ const SomeConsensusError = require('../../../../../../../lib/test/mocks/SomeConsensusError');
26
+
27
+ describe('validateDataContractCreateTransitionBasicFactory', () => {
28
+ let validateDataContractMock;
29
+ let validateDataContractCreateTransitionBasic;
30
+ let stateTransition;
31
+ let rawStateTransition;
32
+ let dataContract;
33
+ let rawDataContract;
34
+ let validateProtocolVersionMock;
35
+
36
+ beforeEach(async function beforeEach() {
37
+ validateDataContractMock = this.sinonSandbox.stub().returns(new ValidationResult());
38
+ validateProtocolVersionMock = this.sinonSandbox.stub().returns(new ValidationResult());
39
+
40
+ dataContract = getDataContractFixture();
41
+ rawDataContract = dataContract.toObject();
42
+
43
+ stateTransition = new DataContractCreateTransition({
44
+ protocolVersion: protocolVersion.latestVersion,
45
+ dataContract: rawDataContract,
46
+ entropy: dataContract.getEntropy(),
47
+ signature: Buffer.alloc(65),
48
+ signaturePublicKeyId: 0,
49
+ });
50
+
51
+ rawStateTransition = stateTransition.toObject();
52
+
53
+ const RE2 = await getRE2Class();
54
+ const ajv = createAjv(RE2);
55
+
56
+ const jsonSchemaValidator = new JsonSchemaValidator(ajv);
57
+
58
+ // eslint-disable-next-line max-len
59
+ validateDataContractCreateTransitionBasic = validateDataContractCreateTransitionBasicFactory(
60
+ jsonSchemaValidator,
61
+ validateDataContractMock,
62
+ validateProtocolVersionMock,
63
+ );
64
+ });
65
+
66
+ describe('protocolVersion', () => {
67
+ it('should be present', async () => {
68
+ delete rawStateTransition.protocolVersion;
69
+
70
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
71
+
72
+ expectJsonSchemaError(result);
73
+
74
+ const [error] = result.getErrors();
75
+
76
+ expect(error.getInstancePath()).to.equal('');
77
+ expect(error.getKeyword()).to.equal('required');
78
+ expect(error.getParams().missingProperty).to.equal('protocolVersion');
79
+ });
80
+
81
+ it('should be an integer', async () => {
82
+ rawStateTransition.protocolVersion = '1';
83
+
84
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
85
+
86
+ expectJsonSchemaError(result);
87
+
88
+ const [error] = result.getErrors();
89
+
90
+ expect(error.getInstancePath()).to.equal('/protocolVersion');
91
+ expect(error.getKeyword()).to.equal('type');
92
+ });
93
+
94
+ it('should be valid', async () => {
95
+ rawStateTransition.protocolVersion = -1;
96
+
97
+ const protocolVersionError = new SomeConsensusError('test');
98
+ const protocolVersionResult = new ValidationResult([
99
+ protocolVersionError,
100
+ ]);
101
+
102
+ validateProtocolVersionMock.returns(protocolVersionResult);
103
+
104
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
105
+
106
+ expectValidationError(result, SomeConsensusError);
107
+
108
+ const [error] = result.getErrors();
109
+
110
+ expect(error).to.equal(protocolVersionError);
111
+
112
+ expect(validateProtocolVersionMock).to.be.calledOnceWith(
113
+ rawStateTransition.protocolVersion,
114
+ );
115
+ });
116
+ });
117
+
118
+ describe('type', () => {
119
+ it('should be present', async () => {
120
+ delete rawStateTransition.type;
121
+
122
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
123
+
124
+ expectJsonSchemaError(result);
125
+
126
+ const [error] = result.getErrors();
127
+
128
+ expect(error.getInstancePath()).to.equal('');
129
+ expect(error.getKeyword()).to.equal('required');
130
+ expect(error.getParams().missingProperty).to.equal('type');
131
+ });
132
+
133
+ it('should be equal to 0', async () => {
134
+ rawStateTransition.type = 666;
135
+
136
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
137
+
138
+ expectJsonSchemaError(result);
139
+
140
+ const [error] = result.getErrors();
141
+
142
+ expect(error.getInstancePath()).to.equal('/type');
143
+ expect(error.getKeyword()).to.equal('const');
144
+ expect(error.getParams().allowedValue).to.equal(0);
145
+ });
146
+ });
147
+
148
+ describe('dataContract', () => {
149
+ it('should be present', async () => {
150
+ delete rawStateTransition.dataContract;
151
+
152
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
153
+
154
+ expectJsonSchemaError(result);
155
+
156
+ const [error] = result.getErrors();
157
+
158
+ expect(error.getInstancePath()).to.equal('');
159
+ expect(error.getKeyword()).to.equal('required');
160
+ expect(error.getParams().missingProperty).to.equal('dataContract');
161
+ });
162
+
163
+ it('should be valid', async () => {
164
+ const dataContractError = new SomeConsensusError('test');
165
+ const dataContractResult = new ValidationResult([
166
+ dataContractError,
167
+ ]);
168
+
169
+ validateDataContractMock.returns(dataContractResult);
170
+
171
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
172
+
173
+ expectValidationError(result);
174
+
175
+ const [error] = result.getErrors();
176
+
177
+ expect(error).to.equal(dataContractError);
178
+
179
+ expect(validateDataContractMock.getCall(0).args).to.have.deep.members([rawDataContract]);
180
+ });
181
+
182
+ it('should return invalid result on invalid Data Contract id', async () => {
183
+ const dataContractResult = new ValidationResult();
184
+
185
+ validateDataContractMock.returns(dataContractResult);
186
+
187
+ const expectedId = rawStateTransition.dataContract.$id;
188
+ rawStateTransition.dataContract.$id = crypto.randomBytes(34);
189
+
190
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
191
+
192
+ expectValidationError(result);
193
+
194
+ const [error] = result.getErrors();
195
+
196
+ expect(error).to.be.an.instanceOf(InvalidDataContractIdError);
197
+ expect(error.getExpectedId()).to.deep.equal(expectedId);
198
+ expect(error.getInvalidId()).to.deep.equal(rawStateTransition.dataContract.$id);
199
+ expect(error.getCode()).to.equal(1011);
200
+ });
201
+ });
202
+
203
+ describe('entropy', () => {
204
+ it('should be present', async () => {
205
+ delete rawStateTransition.entropy;
206
+
207
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
208
+
209
+ expectJsonSchemaError(result);
210
+
211
+ const [error] = result.getErrors();
212
+
213
+ expect(error.getInstancePath()).to.equal('');
214
+ expect(error.getKeyword()).to.equal('required');
215
+ expect(error.getParams().missingProperty).to.equal('entropy');
216
+ });
217
+
218
+ it('should be a byte array', async () => {
219
+ rawStateTransition.entropy = new Array(32).fill('string');
220
+
221
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
222
+
223
+ expectJsonSchemaError(result, 2);
224
+
225
+ const [error, byteArrayError] = result.getErrors();
226
+
227
+ expect(error.getInstancePath()).to.equal('/entropy/0');
228
+ expect(error.getKeyword()).to.equal('type');
229
+
230
+ expect(byteArrayError.getKeyword()).to.equal('byteArray');
231
+ });
232
+
233
+ it('should be no less than 32 bytes', async () => {
234
+ rawStateTransition.entropy = Buffer.alloc(31);
235
+
236
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
237
+
238
+ expectJsonSchemaError(result);
239
+
240
+ const [error] = result.getErrors();
241
+
242
+ expect(error.getInstancePath()).to.equal('/entropy');
243
+ expect(error.getKeyword()).to.equal('minItems');
244
+ expect(error.getParams().limit).to.equal(32);
245
+ });
246
+
247
+ it('should be no longer than 32 bytes', async () => {
248
+ rawStateTransition.entropy = Buffer.alloc(33);
249
+
250
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
251
+
252
+ expectJsonSchemaError(result);
253
+
254
+ const [error] = result.getErrors();
255
+
256
+ expect(error.getInstancePath()).to.equal('/entropy');
257
+ expect(error.getKeyword()).to.equal('maxItems');
258
+ expect(error.getParams().limit).to.equal(32);
259
+ });
260
+ });
261
+
262
+ describe('signature', () => {
263
+ it('should be present', async () => {
264
+ delete rawStateTransition.signature;
265
+
266
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
267
+
268
+ expectJsonSchemaError(result);
269
+
270
+ const [error] = result.getErrors();
271
+
272
+ expect(error.getInstancePath()).to.equal('');
273
+ expect(error.getKeyword()).to.equal('required');
274
+ expect(error.getParams().missingProperty).to.equal('signature');
275
+ });
276
+
277
+ it('should be a byte array', async () => {
278
+ rawStateTransition.signature = new Array(65).fill('string');
279
+
280
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
281
+
282
+ expectJsonSchemaError(result, 2);
283
+
284
+ const [error, byteArrayError] = result.getErrors();
285
+
286
+ expect(error.getInstancePath()).to.equal('/signature/0');
287
+ expect(error.getKeyword()).to.equal('type');
288
+
289
+ expect(byteArrayError.getKeyword()).to.equal('byteArray');
290
+ });
291
+
292
+ it('should be not less than 65 bytes', async () => {
293
+ rawStateTransition.signature = Buffer.alloc(64);
294
+
295
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
296
+
297
+ expectJsonSchemaError(result);
298
+
299
+ const [error] = result.getErrors();
300
+
301
+ expect(error.getInstancePath()).to.equal('/signature');
302
+ expect(error.getKeyword()).to.equal('minItems');
303
+ expect(error.getParams().limit).to.equal(65);
304
+ });
305
+
306
+ it('should be not longer than 96 bytes', async () => {
307
+ rawStateTransition.signature = Buffer.alloc(97);
308
+
309
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
310
+
311
+ expectJsonSchemaError(result);
312
+
313
+ const [error] = result.getErrors();
314
+
315
+ expect(error.getInstancePath()).to.equal('/signature');
316
+ expect(error.getKeyword()).to.equal('maxItems');
317
+ expect(error.getParams().limit).to.equal(96);
318
+ });
319
+ });
320
+
321
+ describe('signaturePublicKeyId', () => {
322
+ it('should be an integer', async () => {
323
+ rawStateTransition.signaturePublicKeyId = 1.4;
324
+
325
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
326
+
327
+ expectJsonSchemaError(result, 1);
328
+
329
+ const [error] = result.getErrors();
330
+
331
+ expect(error.instancePath).to.equal('/signaturePublicKeyId');
332
+ expect(error.getKeyword()).to.equal('type');
333
+ });
334
+
335
+ it('should not be < 0', async () => {
336
+ rawStateTransition.signaturePublicKeyId = -1;
337
+
338
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
339
+
340
+ expectJsonSchemaError(result, 1);
341
+
342
+ const [error] = result.getErrors();
343
+
344
+ expect(error.instancePath).to.equal('/signaturePublicKeyId');
345
+ expect(error.getKeyword()).to.equal('minimum');
346
+ });
347
+ });
348
+
349
+ it('should return valid result', async () => {
350
+ const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
351
+
352
+ expect(result).to.be.an.instanceOf(ValidationResult);
353
+ expect(result.isValid()).to.be.true();
354
+
355
+ expect(validateDataContractMock).to.be.calledOnceWith(rawDataContract);
356
+ });
357
+ });