@dashevo/wasm-dpp 0.25.8 → 0.25.9

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 (95) hide show
  1. package/Cargo.toml +3 -2
  2. package/README.md +1 -1
  3. package/dist/wasm/wasm_dpp.d.ts +808 -712
  4. package/dist/wasm/wasm_dpp.js +853 -452
  5. package/dist/wasm/wasm_dpp_bg.js +1 -1
  6. package/lib/bls/bls.js +48 -0
  7. package/lib/test/fixtures/getChainAssetLockProofFixture.js +20 -1
  8. package/lib/test/fixtures/getDataContractFixture.js +4 -6
  9. package/lib/test/fixtures/getDocumentTransitionsFixture.js +31 -1
  10. package/lib/test/fixtures/getInstantAssetLockProofFixture.js +32 -12
  11. package/lib/test/mocks/getBlsAdapterMock.js +1 -1
  12. package/lib/utils/creditsConverter.js +14 -0
  13. package/lib/utils/hash.js +18 -0
  14. package/lib/wasm/wasm_dpp.d.ts +808 -712
  15. package/package.json +3 -5
  16. package/src/dash_platform_protocol.rs +5 -5
  17. package/src/document/errors/invalid_document_error.rs +5 -0
  18. package/src/document/extended_document.rs +15 -0
  19. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +219 -214
  20. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +1 -1
  21. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +4 -2
  22. package/src/errors/consensus/basic/json_schema_error.rs +35 -5
  23. package/src/identity/identity_facade.rs +7 -5
  24. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +32 -17
  25. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +22 -13
  26. package/src/identity/state_transition/asset_lock_proof/mod.rs +12 -11
  27. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +1 -0
  28. package/src/identity/state_transition/identity_create_transition/to_object.rs +1 -0
  29. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +1 -0
  30. package/src/identity/state_transition/identity_topup_transition/to_object.rs +1 -0
  31. package/src/lib.rs +1 -1
  32. package/src/validation/mod.rs +2 -2
  33. package/src/validation/validation_result.rs +16 -15
  34. package/test/integration/document/DocumentFacade.spec.js +11 -27
  35. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +9 -19
  36. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +2 -2
  37. package/test/integration/document/validation/validateDocumentFactory.spec.js +2 -2
  38. package/test/integration/identity/IdentityFacade.spec.js +1 -2
  39. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +2 -2
  40. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +2 -2
  41. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +6 -8
  42. package/test/unit/document/Document.spec.js +30 -52
  43. package/test/unit/document/DocumentFactory.spec.js +2 -2
  44. package/test/unit/document/errors/InvalidDocumentError.spec.js +9 -9
  45. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +158 -155
  46. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +132 -134
  47. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +3 -3
  48. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +568 -591
  49. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +5 -13
  50. package/test/unit/identity/Identity.spec.js +2 -2
  51. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +9 -28
  52. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +19 -27
  53. package/lib/test/fixtures/getDashPayContractFixture.js +0 -1
  54. package/lib/test/fixtures/getDashPayDocumentFixture.js +0 -1
  55. package/lib/test/fixtures/getDpnsContractFixture.js +0 -1
  56. package/lib/test/fixtures/getDpnsDocumentFixture.js +0 -1
  57. package/lib/test/fixtures/getFeatureFlagsContractFixture.js +0 -1
  58. package/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js +0 -1
  59. package/lib/test/fixtures/getIdentityTopUpTransitionFixtureJs.js +0 -1
  60. package/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js +0 -1
  61. package/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js +0 -1
  62. package/lib/test/fixtures/getPreorderDocumentFixture.js +0 -1
  63. package/lib/test/fixtures/getRawTransactionFixture.js +0 -1
  64. package/lib/test/fixtures/js/generateRandomIdentifier.js +0 -1
  65. package/lib/test/fixtures/js/getChainAssetLockProofFixture.js +0 -1
  66. package/lib/test/fixtures/js/getDataContractFixture.js +0 -1
  67. package/lib/test/fixtures/js/getDocumentTransitionsFixture.js +0 -1
  68. package/lib/test/fixtures/js/getDocumentsFixture.js +0 -1
  69. package/lib/test/fixtures/js/getInstantAssetLockProofFixture.js +0 -1
  70. package/test/integration/DashPlatformProtocol.spec.js +0 -53
  71. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +0 -195
  72. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +0 -500
  73. package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +0 -53
  74. package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +0 -103
  75. package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +0 -84
  76. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -45
  77. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +0 -49
  78. package/test/unit/dataTrigger/DataTrigger.spec.js +0 -132
  79. package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +0 -29
  80. package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +0 -107
  81. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +0 -382
  82. package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +0 -99
  83. package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +0 -113
  84. package/test/unit/dataTrigger/rejectDataTrigger.spec.js +0 -51
  85. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +0 -202
  86. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +0 -256
  87. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +0 -94
  88. package/test/unit/errors/consensus/codes.spec.js +0 -102
  89. package/test/unit/identity/creditsConverter.spec.js +0 -34
  90. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +0 -83
  91. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +0 -138
  92. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +0 -100
  93. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +0 -36
  94. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +0 -63
  95. package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +0 -47
@@ -1,84 +0,0 @@
1
- const getPropertyDefinitionByPath = require(
2
- '@dashevo/dpp/lib/dataContract/getPropertyDefinitionByPath',
3
- );
4
-
5
- describe('getPropertyDefinitionByPath', () => {
6
- let schema;
7
-
8
- beforeEach(() => {
9
- schema = {
10
- properties: {
11
- a: {
12
- type: 'string',
13
- },
14
- b: {
15
- type: 'array',
16
- items: {
17
- type: 'object',
18
- properties: {
19
- inner: {
20
- type: 'object',
21
- properties: {
22
- abc: {
23
- type: 'string',
24
- },
25
- },
26
- },
27
- },
28
- },
29
- },
30
- c: {
31
- type: 'object',
32
- properties: {
33
- inner: {
34
- type: 'object',
35
- patternProperties: {
36
- '[a-z]': {
37
- type: 'string',
38
- },
39
- },
40
- },
41
- },
42
- },
43
- },
44
- };
45
- });
46
-
47
- it('should return `undefined` if property not found', () => {
48
- const definition = getPropertyDefinitionByPath(schema, 'nope');
49
-
50
- expect(definition).to.be.undefined();
51
- });
52
-
53
- it('should return definition immediately if path is one-level', () => {
54
- const definition = getPropertyDefinitionByPath(schema, 'a');
55
-
56
- expect(definition).to.deep.equal({
57
- type: 'string',
58
- });
59
- });
60
-
61
- it('should return nested definition from an array', () => {
62
- const definition = getPropertyDefinitionByPath(schema, 'b.inner');
63
-
64
- expect(definition).to.deep.equal(schema.properties.b.items.properties.inner);
65
- });
66
-
67
- it('should return nested definition from object', () => {
68
- const definition = getPropertyDefinitionByPath(schema, 'c.inner');
69
-
70
- expect(definition).to.deep.equal(schema.properties.c.properties.inner);
71
- });
72
-
73
- it('should return `undefined` if path does not match a pattern', () => {
74
- const definition = getPropertyDefinitionByPath(schema, 'c.inner.NOPE');
75
-
76
- expect(definition).to.be.undefined();
77
- });
78
-
79
- it('should return `undefined` if first item in a path is not an object or array', () => {
80
- const definition = getPropertyDefinitionByPath(schema, 'a.someOther');
81
-
82
- expect(definition).to.be.undefined();
83
- });
84
- });
@@ -1,45 +0,0 @@
1
- const getDataContractFixture = require('../../../../../lib/test/fixtures/getDataContractFixture');
2
- const { default: loadWasmDpp } = require('../../../../..');
3
- const { getLatestProtocolVersion } = require('../../../../..');
4
-
5
- describe.skip('applyDataContractCreateTransitionFactory', () => {
6
- let stateTransition;
7
- let dataContract;
8
- let factory;
9
- let DataContractCreateTransition;
10
- let ApplyDataContractCreateTransition;
11
-
12
- let dataContractStored;
13
-
14
- before(async () => {
15
- ({
16
- DataContractCreateTransition,
17
- ApplyDataContractCreateTransition,
18
- } = await loadWasmDpp());
19
- });
20
-
21
- beforeEach(async () => {
22
- dataContract = await getDataContractFixture();
23
-
24
- stateTransition = new DataContractCreateTransition({
25
- protocolVersion: getLatestProtocolVersion(),
26
- dataContract: dataContract.toObject(),
27
- entropy: Buffer.alloc(32),
28
- });
29
-
30
- const stateRepositoryLike = {
31
- createDataContract: async () => {
32
- dataContractStored = true;
33
- },
34
- };
35
-
36
- factory = new ApplyDataContractCreateTransition(stateRepositoryLike);
37
-
38
- dataContractStored = false;
39
- });
40
-
41
- it('should store a data contract from state transition in the repository', async () => {
42
- await factory.applyDataContractCreateTransition(stateTransition);
43
- expect(dataContractStored).to.be.true();
44
- });
45
- });
@@ -1,49 +0,0 @@
1
- const getDataContractFixture = require('../../../../../lib/test/fixtures/getDataContractFixture');
2
-
3
- const { default: loadWasmDpp } = require('../../../../..');
4
- const { getLatestProtocolVersion } = require('../../../../..');
5
-
6
- describe.skip('applyDataContractUpdateTransitionFactory', () => {
7
- let stateTransition;
8
- let dataContract;
9
- let executionContext;
10
- let dataContractStored;
11
- let factory;
12
- let DataContractUpdateTransition;
13
- let ApplyDataContractUpdateTransition;
14
- let StateTransitionExecutionContext;
15
-
16
- before(async () => {
17
- ({
18
- DataContractUpdateTransition,
19
- ApplyDataContractUpdateTransition,
20
- StateTransitionExecutionContext,
21
- } = await loadWasmDpp());
22
- });
23
-
24
- beforeEach(async () => {
25
- dataContract = await getDataContractFixture();
26
-
27
- stateTransition = new DataContractUpdateTransition({
28
- dataContract: dataContract.toObject(),
29
- protocolVersion: getLatestProtocolVersion(),
30
- });
31
-
32
- executionContext = new StateTransitionExecutionContext();
33
-
34
- const stateRepositoryLike = {
35
- updateDataContract: async () => {
36
- dataContractStored = true;
37
- },
38
- };
39
-
40
- factory = new ApplyDataContractUpdateTransition(stateRepositoryLike);
41
-
42
- dataContractStored = false;
43
- });
44
-
45
- it('should store a data contract from state transition in the repository', async () => {
46
- await factory.applyDataContractUpdateTransition(stateTransition, executionContext);
47
- expect(dataContractStored).to.be.true();
48
- });
49
- });
@@ -1,132 +0,0 @@
1
- const bs58 = require('bs58');
2
- const AbstractDocumentTransition = require('@dashevo/dpp/lib/document/stateTransition/DocumentsBatchTransition/documentTransition/AbstractDocumentTransition');
3
- const DataTrigger = require('@dashevo/dpp/lib/dataTrigger/DataTrigger');
4
- const DataTriggerExecutionContext = require('@dashevo/dpp/lib/dataTrigger/DataTriggerExecutionContext');
5
- const getDpnsContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDpnsContractFixture');
6
- const DataTriggerExecutionResult = require('@dashevo/dpp/lib/dataTrigger/DataTriggerExecutionResult');
7
- const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
8
- const DataTriggerExecutionError = require('@dashevo/dpp/lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerExecutionError');
9
- const DataTriggerInvalidResultError = require('@dashevo/dpp/lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerInvalidResultError');
10
-
11
- describe('DataTrigger', () => {
12
- let dataContractMock;
13
- let context;
14
- let triggerStub;
15
- let document;
16
- let topLevelIdentity;
17
-
18
- beforeEach(function beforeEach() {
19
- triggerStub = this.sinonSandbox.stub().resolves(new DataTriggerExecutionResult());
20
- dataContractMock = getDpnsContractFixture();
21
-
22
- ([document] = getDocumentsFixture());
23
-
24
- context = new DataTriggerExecutionContext(
25
- null,
26
- bs58.decode('5zcXZpTLWFwZjKjq3ME5KVavtZa9YUaZESVzrndehBhq'),
27
- dataContractMock,
28
- );
29
-
30
- topLevelIdentity = context.getOwnerId();
31
- });
32
-
33
- it('should check trigger fields', () => {
34
- const trigger = new DataTrigger(
35
- dataContractMock.getId(),
36
- document.getType(),
37
- AbstractDocumentTransition.ACTIONS.CREATE,
38
- triggerStub,
39
- topLevelIdentity,
40
- );
41
-
42
- expect(trigger.dataContractId).to.equal(dataContractMock.getId());
43
- expect(trigger.documentType).to.equal(document.getType());
44
- expect(trigger.transitionAction).to.equal(AbstractDocumentTransition.ACTIONS.CREATE);
45
- expect(trigger.trigger).to.equal(triggerStub);
46
- expect(trigger.topLevelIdentity).to.equal(topLevelIdentity);
47
- });
48
-
49
- describe('#execute', () => {
50
- it('should check trigger execution', async () => {
51
- const trigger = new DataTrigger(
52
- dataContractMock.getId(),
53
- document.getType(),
54
- AbstractDocumentTransition.ACTIONS.CREATE,
55
- triggerStub,
56
- topLevelIdentity,
57
- );
58
-
59
- const result = await trigger.execute(context);
60
-
61
- expect(result).to.be.instanceOf(DataTriggerExecutionResult);
62
- });
63
-
64
- it('should pass through the result of the trigger function', async () => {
65
- const functionResult = new DataTriggerExecutionResult();
66
-
67
- const triggerError = new Error('Trigger error');
68
-
69
- functionResult.addError(triggerError);
70
-
71
- triggerStub.resolves(functionResult);
72
-
73
- const trigger = new DataTrigger(
74
- dataContractMock.getId(),
75
- document.getType(),
76
- AbstractDocumentTransition.ACTIONS.CREATE,
77
- triggerStub,
78
- topLevelIdentity,
79
- );
80
-
81
- const result = await trigger.execute(document, context);
82
-
83
- expect(result).to.deep.equal(functionResult);
84
- expect(result.getErrors()[0]).to.deep.equal(triggerError);
85
- });
86
-
87
- it('should return a result with execution error if trigger function have thrown an error', async () => {
88
- const triggerError = new Error('Trigger error');
89
-
90
- triggerStub.throws(triggerError);
91
-
92
- const trigger = new DataTrigger(
93
- dataContractMock.getId(),
94
- document.getType(),
95
- AbstractDocumentTransition.ACTIONS.CREATE,
96
- triggerStub,
97
- topLevelIdentity,
98
- );
99
-
100
- const result = await trigger.execute(document, context);
101
-
102
- expect(result).to.be.an.instanceOf(DataTriggerExecutionResult);
103
-
104
- const [error] = result.getErrors();
105
-
106
- expect(error).to.be.an.instanceOf(DataTriggerExecutionError);
107
-
108
- expect(error.getExecutionError()).to.equal(triggerError);
109
- });
110
-
111
- it('should return a result with invalid result error if trigger function have not returned any result', async () => {
112
- triggerStub.resolves(null);
113
-
114
- const trigger = new DataTrigger(
115
- dataContractMock.getId(),
116
- document.getType(),
117
- AbstractDocumentTransition.ACTIONS.CREATE,
118
- triggerStub,
119
- topLevelIdentity,
120
- );
121
-
122
- const result = await trigger.execute(document, context);
123
-
124
- expect(result).to.be.an.instanceOf(DataTriggerExecutionResult);
125
-
126
- const [error] = result.getErrors();
127
-
128
- expect(error).to.be.an.instanceOf(DataTriggerInvalidResultError);
129
- expect(error.message).to.equal('Data trigger have not returned any result');
130
- });
131
- });
132
- });
@@ -1,29 +0,0 @@
1
- const bs58 = require('bs58');
2
- const DataTriggerExecutionContext = require('@dashevo/dpp/lib/dataTrigger/DataTriggerExecutionContext');
3
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
4
- const getDpnsContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDpnsContractFixture');
5
- const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
6
-
7
- describe('DataTriggerExecutionContext', () => {
8
- let dataContractMock;
9
- let stateRepositoryMock;
10
-
11
- beforeEach(function beforeEach() {
12
- dataContractMock = getDpnsContractFixture();
13
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
14
- });
15
-
16
- it('should have all getters working', () => {
17
- const ownerId = bs58.decode('5zcXZpTLWFwZjKjq3ME5KVavtZa9YUaZESVzrndehBhq');
18
- const context = new DataTriggerExecutionContext(
19
- stateRepositoryMock,
20
- ownerId,
21
- dataContractMock,
22
- new StateTransitionExecutionContext(),
23
- );
24
-
25
- expect(context.getDataContract()).to.be.deep.equal(dataContractMock);
26
- expect(context.getStateRepository()).to.be.deep.equal(stateRepositoryMock);
27
- expect(context.getOwnerId()).to.be.deep.equal(ownerId);
28
- });
29
- });
@@ -1,107 +0,0 @@
1
- const createContactRequestDataTrigger = require('@dashevo/dpp/lib/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger');
2
-
3
- const DataTriggerExecutionContext = require('@dashevo/dpp/lib/dataTrigger/DataTriggerExecutionContext');
4
- const DataTriggerExecutionResult = require('@dashevo/dpp/lib/dataTrigger/DataTriggerExecutionResult');
5
- const DataTriggerConditionError = require('@dashevo/dpp/lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError');
6
-
7
- const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
8
- const getDocumentTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture');
9
-
10
- const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
11
- const getDashPayContractFixture = require('../../../../lib/test/fixtures/getDashPayContractFixture');
12
- const { getContactRequestDocumentFixture } = require('../../../../lib/test/fixtures/getDashPayDocumentFixture');
13
-
14
- describe('createContactRequestDataTrigger', () => {
15
- let context;
16
- let dashPayIdentity;
17
- let stateRepositoryMock;
18
- let dataContract;
19
- let contactRequestDocument;
20
- let documentTransition;
21
-
22
- beforeEach(function beforeEach() {
23
- contactRequestDocument = getContactRequestDocumentFixture();
24
- dataContract = getDashPayContractFixture();
25
-
26
- [documentTransition] = getDocumentTransitionFixture({
27
- create: [contactRequestDocument],
28
- });
29
-
30
- stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
31
- stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight.resolves(42);
32
-
33
- context = new DataTriggerExecutionContext(
34
- stateRepositoryMock,
35
- contactRequestDocument.getOwnerId(),
36
- dataContract,
37
- new StateTransitionExecutionContext(),
38
- );
39
-
40
- dashPayIdentity = context.getOwnerId();
41
- });
42
-
43
- it('should successfully execute if document is valid', async () => {
44
- contactRequestDocument.data.coreHeightCreatedAt = 40;
45
-
46
- [documentTransition] = getDocumentTransitionFixture({
47
- create: [contactRequestDocument],
48
- });
49
-
50
- const result = await createContactRequestDataTrigger(
51
- documentTransition, context, dashPayIdentity,
52
- );
53
-
54
- expect(result).to.be.an.instanceOf(DataTriggerExecutionResult);
55
- expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.be.calledOnce();
56
- expect(result.isOk()).to.be.true();
57
- });
58
-
59
- it('should successfully execute if document has no `coreHeightCreatedAt` field', async () => {
60
- const result = await createContactRequestDataTrigger(
61
- documentTransition, context, dashPayIdentity,
62
- );
63
-
64
- expect(result).to.be.an.instanceOf(DataTriggerExecutionResult);
65
- expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.be.not.called();
66
- expect(result.isOk()).to.be.true();
67
- });
68
-
69
- it('should fail with out of window error', async () => {
70
- contactRequestDocument.data.coreHeightCreatedAt = 10;
71
-
72
- [documentTransition] = getDocumentTransitionFixture({
73
- create: [contactRequestDocument],
74
- });
75
-
76
- const result = await createContactRequestDataTrigger(
77
- documentTransition, context, dashPayIdentity,
78
- );
79
-
80
- expect(result).to.be.an.instanceOf(DataTriggerExecutionResult);
81
- expect(result.isOk()).to.be.false();
82
-
83
- const [error] = result.getErrors();
84
-
85
- expect(error).to.be.an.instanceOf(DataTriggerConditionError);
86
- expect(error.message).to.equal('Core height 10 is out of block height window from 34 to 50');
87
- });
88
-
89
- it('should successfully execute on dry run', async () => {
90
- contactRequestDocument.data.coreHeightCreatedAt = 10;
91
- [documentTransition] = getDocumentTransitionFixture({
92
- create: [contactRequestDocument],
93
- });
94
-
95
- context.getStateTransitionExecutionContext().enableDryRun();
96
-
97
- const result = await createContactRequestDataTrigger(
98
- documentTransition, context, dashPayIdentity,
99
- );
100
-
101
- context.getStateTransitionExecutionContext().disableDryRun();
102
-
103
- expect(result).to.be.an.instanceOf(DataTriggerExecutionResult);
104
- expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.be.not.called();
105
- expect(result.isOk()).to.be.true();
106
- });
107
- });