@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.
- package/.babelrc +5 -0
- package/.editorconfig +13 -0
- package/.eslintignore +1 -0
- package/.eslintrc +15 -0
- package/.mocharc.yml +4 -0
- package/CHANGELOG.md +397 -0
- package/LICENSE +20 -0
- package/README.md +37 -0
- package/karma.conf.js +53 -0
- package/package.json +107 -0
- package/test/.eslintrc +12 -0
- package/test/integration/DashPlatformProtocol.spec.js +53 -0
- package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +148 -0
- package/test/integration/dataContract/DataContractFacade.spec.js +84 -0
- package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +357 -0
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +444 -0
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +2191 -0
- package/test/integration/document/Document.spec.js +90 -0
- package/test/integration/document/DocumentFacade.spec.js +155 -0
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +83 -0
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +1146 -0
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +294 -0
- package/test/integration/document/validation/validateDocumentFactory.spec.js +447 -0
- package/test/integration/error/consensus/createConsensusError.spec.js +21 -0
- package/test/integration/identity/IdentityFacade.spec.js +187 -0
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +422 -0
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +361 -0
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +595 -0
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +299 -0
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +66 -0
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +415 -0
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +134 -0
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +401 -0
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +205 -0
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +127 -0
- package/test/integration/identity/validation/validateIdentityFactory.spec.js +370 -0
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +497 -0
- package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +507 -0
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +418 -0
- package/test/integration/stateTransition/calculateStateTransitionFee.spec.js +35 -0
- package/test/integration/util/generateEntropy.spec.js +17 -0
- package/test/integration/util/serializer.spec.js +24 -0
- package/test/unit/DashPlatformProtocol.spec.js +79 -0
- package/test/unit/Identifier.spec.js +123 -0
- package/test/unit/Metadata.spec.js +37 -0
- package/test/unit/dataContract/DataContract.spec.js +407 -0
- package/test/unit/dataContract/DataContractFactory.spec.js +178 -0
- package/test/unit/dataContract/createDataContract.spec.js +57 -0
- package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +46 -0
- package/test/unit/dataContract/generateDataContractId.spec.js +19 -0
- package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +103 -0
- package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +84 -0
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +160 -0
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +48 -0
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +85 -0
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +158 -0
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +47 -0
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +121 -0
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +111 -0
- package/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js +93 -0
- package/test/unit/dataContract/validation/validateDataContractPatternsFactory.spec.js +64 -0
- package/test/unit/dataTrigger/DataTrigger.spec.js +132 -0
- package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +29 -0
- package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +109 -0
- package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +382 -0
- package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +101 -0
- package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +113 -0
- package/test/unit/dataTrigger/rejectDataTrigger.spec.js +51 -0
- package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +200 -0
- package/test/unit/decodeProtocolEntityFactory.spec.js +75 -0
- package/test/unit/document/Document.spec.js +444 -0
- package/test/unit/document/DocumentFactory.spec.js +376 -0
- package/test/unit/document/errors/InvalidDocumentError.spec.js +46 -0
- package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +66 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +168 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +171 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +25 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +31 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +122 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +75 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +128 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +811 -0
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +279 -0
- package/test/unit/errors/consensus/codes.spec.js +102 -0
- package/test/unit/identity/Identity.spec.js +243 -0
- package/test/unit/identity/IdentityFactory.spec.js +274 -0
- package/test/unit/identity/IdentityPublicKey.spec.js +273 -0
- package/test/unit/identity/creditsConverter.spec.js +34 -0
- package/test/unit/identity/errors/InvalidIdentityError.spec.js +46 -0
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +184 -0
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +90 -0
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +71 -0
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +137 -0
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +108 -0
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +22 -0
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +219 -0
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +149 -0
- package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +21 -0
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +36 -0
- package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +47 -0
- package/test/unit/stateTransition/StateTransitionFactory.spec.js +160 -0
- package/test/unit/stateTransition/createStateTransitionFactory.spec.js +72 -0
- package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +51 -0
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +138 -0
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +372 -0
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +339 -0
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +86 -0
- package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +89 -0
- package/test/unit/version/validateProtocolVersionFactory.spec.js +80 -0
- package/webpack.config.js +49 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
const Identifier = require('../../../lib/identifier/Identifier');
|
|
2
|
+
const Metadata = require('../../../lib/Metadata');
|
|
3
|
+
|
|
4
|
+
const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
|
|
5
|
+
const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture');
|
|
6
|
+
|
|
7
|
+
describe('Document', () => {
|
|
8
|
+
let document;
|
|
9
|
+
let dataContract;
|
|
10
|
+
let metadataFixture;
|
|
11
|
+
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
dataContract = getDataContractFixture();
|
|
14
|
+
[document] = getDocumentsFixture(dataContract).slice(8);
|
|
15
|
+
|
|
16
|
+
metadataFixture = new Metadata(42, 0);
|
|
17
|
+
|
|
18
|
+
document.setMetadata(metadataFixture);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
describe('#toJSON', () => {
|
|
22
|
+
it('should return json document', () => {
|
|
23
|
+
const result = document.toJSON();
|
|
24
|
+
|
|
25
|
+
expect(result).to.deep.equal({
|
|
26
|
+
$protocolVersion: document.getProtocolVersion(),
|
|
27
|
+
$dataContractId: dataContract.getId().toString(),
|
|
28
|
+
$id: document.getId().toString(),
|
|
29
|
+
$ownerId: getDocumentsFixture.ownerId.toString(),
|
|
30
|
+
$revision: 1,
|
|
31
|
+
$type: 'withByteArrays',
|
|
32
|
+
byteArrayField: document.get('byteArrayField').toString('base64'),
|
|
33
|
+
identifierField: document.get('identifierField').toString(),
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
describe('#toObject', () => {
|
|
39
|
+
it('should return raw document', () => {
|
|
40
|
+
const result = document.toObject();
|
|
41
|
+
|
|
42
|
+
expect(result).to.deep.equal({
|
|
43
|
+
$protocolVersion: document.getProtocolVersion(),
|
|
44
|
+
$dataContractId: dataContract.getId(),
|
|
45
|
+
$id: document.getId(),
|
|
46
|
+
$ownerId: getDocumentsFixture.ownerId,
|
|
47
|
+
$revision: 1,
|
|
48
|
+
$type: 'withByteArrays',
|
|
49
|
+
byteArrayField: document.get('byteArrayField'),
|
|
50
|
+
identifierField: document.get('identifierField'),
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('should return raw document with Identifiers', () => {
|
|
55
|
+
const result = document.toObject({ skipIdentifiersConversion: true });
|
|
56
|
+
|
|
57
|
+
expect(result).to.deep.equal({
|
|
58
|
+
$protocolVersion: document.getProtocolVersion(),
|
|
59
|
+
$dataContractId: dataContract.getId(),
|
|
60
|
+
$id: document.getId(),
|
|
61
|
+
$ownerId: getDocumentsFixture.ownerId,
|
|
62
|
+
$revision: 1,
|
|
63
|
+
$type: 'withByteArrays',
|
|
64
|
+
byteArrayField: document.get('byteArrayField'),
|
|
65
|
+
identifierField: document.get('identifierField'),
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
expect(result.$dataContractId).to.be.an.instanceOf(Identifier);
|
|
69
|
+
expect(result.$id).to.be.an.instanceOf(Identifier);
|
|
70
|
+
expect(result.$ownerId).to.be.an.instanceOf(Identifier);
|
|
71
|
+
expect(result.identifierField).to.be.an.instanceOf(Identifier);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
describe('#setMetadata', () => {
|
|
76
|
+
it('should set metadata', () => {
|
|
77
|
+
const otherMetadata = new Metadata(43, 1);
|
|
78
|
+
|
|
79
|
+
document.setMetadata(otherMetadata);
|
|
80
|
+
|
|
81
|
+
expect(document.metadata).to.deep.equal(otherMetadata);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe('#getMetadata', () => {
|
|
86
|
+
it('should get metadata', () => {
|
|
87
|
+
expect(document.getMetadata()).to.deep.equal(metadataFixture);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
});
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
const generateRandomIdentifier = require('../../../lib/test/utils/generateRandomIdentifier');
|
|
2
|
+
const DashPlatformProtocol = require('../../../lib/DashPlatformProtocol');
|
|
3
|
+
|
|
4
|
+
const Document = require('../../../lib/document/Document');
|
|
5
|
+
const DocumentsBatchTransition = require('../../../lib/document/stateTransition/DocumentsBatchTransition/DocumentsBatchTransition');
|
|
6
|
+
|
|
7
|
+
const ValidationResult = require('../../../lib/validation/ValidationResult');
|
|
8
|
+
|
|
9
|
+
const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock');
|
|
10
|
+
|
|
11
|
+
const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
|
|
12
|
+
const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture');
|
|
13
|
+
const getDocumentTransitionsFixture = require('../../../lib/test/fixtures/getDocumentTransitionsFixture');
|
|
14
|
+
|
|
15
|
+
const DataContractNotPresentError = require('../../../lib/errors/consensus/basic/document/DataContractNotPresentError');
|
|
16
|
+
const MissingOptionError = require('../../../lib/errors/MissingOptionError');
|
|
17
|
+
|
|
18
|
+
describe('DocumentFacade', () => {
|
|
19
|
+
let dpp;
|
|
20
|
+
let document;
|
|
21
|
+
let documents;
|
|
22
|
+
let dataContract;
|
|
23
|
+
let ownerId;
|
|
24
|
+
let stateRepositoryMock;
|
|
25
|
+
|
|
26
|
+
beforeEach(async function beforeEach() {
|
|
27
|
+
ownerId = generateRandomIdentifier();
|
|
28
|
+
dataContract = getDataContractFixture(ownerId);
|
|
29
|
+
|
|
30
|
+
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
31
|
+
|
|
32
|
+
stateRepositoryMock.fetchDataContract.resolves(dataContract);
|
|
33
|
+
|
|
34
|
+
dpp = new DashPlatformProtocol({
|
|
35
|
+
stateRepository: stateRepositoryMock,
|
|
36
|
+
});
|
|
37
|
+
await dpp.initialize();
|
|
38
|
+
|
|
39
|
+
documents = getDocumentsFixture(dataContract);
|
|
40
|
+
([document] = documents);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
describe('create', () => {
|
|
44
|
+
it('should create Document', () => {
|
|
45
|
+
const result = dpp.document.create(
|
|
46
|
+
dataContract,
|
|
47
|
+
ownerId,
|
|
48
|
+
document.getType(),
|
|
49
|
+
document.getData(),
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
expect(result).to.be.an.instanceOf(Document);
|
|
53
|
+
|
|
54
|
+
expect(result.getType()).to.equal(document.getType());
|
|
55
|
+
expect(result.getData()).to.deep.equal(document.getData());
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
describe('createFromObject', () => {
|
|
60
|
+
it('should throw MissingOption if stateRepository is not set', async () => {
|
|
61
|
+
dpp = new DashPlatformProtocol();
|
|
62
|
+
await dpp.initialize();
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
await dpp.document.createFromObject(document.toObject());
|
|
66
|
+
|
|
67
|
+
expect.fail('MissingOption should be thrown');
|
|
68
|
+
} catch (e) {
|
|
69
|
+
expect(e).to.be.an.instanceOf(MissingOptionError);
|
|
70
|
+
expect(e.getOptionName()).to.equal('stateRepository');
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('should create Document from plain object', async () => {
|
|
75
|
+
const result = await dpp.document.createFromObject(document.toObject());
|
|
76
|
+
|
|
77
|
+
expect(result).to.be.an.instanceOf(Document);
|
|
78
|
+
|
|
79
|
+
expect(result.toObject()).to.deep.equal(document.toObject());
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe('createFromBuffer', () => {
|
|
84
|
+
it('should throw MissingOption if stateRepository is not set', async () => {
|
|
85
|
+
dpp = new DashPlatformProtocol();
|
|
86
|
+
await dpp.initialize();
|
|
87
|
+
|
|
88
|
+
try {
|
|
89
|
+
await dpp.document.createFromBuffer(document.toObject());
|
|
90
|
+
|
|
91
|
+
expect.fail('MissingOption should be thrown');
|
|
92
|
+
} catch (e) {
|
|
93
|
+
expect(e).to.be.an.instanceOf(MissingOptionError);
|
|
94
|
+
expect(e.getOptionName()).to.equal('stateRepository');
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it('should create Document from serialized', async () => {
|
|
99
|
+
const result = await dpp.document.createFromBuffer(document.toBuffer());
|
|
100
|
+
|
|
101
|
+
expect(result).to.be.an.instanceOf(Document);
|
|
102
|
+
|
|
103
|
+
expect(result.toObject()).to.deep.equal(document.toObject());
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
describe('createStateTransition', () => {
|
|
108
|
+
it('should create DocumentsBatchTransition with passed documents', () => {
|
|
109
|
+
const result = dpp.document.createStateTransition({
|
|
110
|
+
create: documents,
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
expect(result).to.be.instanceOf(DocumentsBatchTransition);
|
|
114
|
+
expect(result.getTransitions()).to.deep.equal(getDocumentTransitionsFixture({
|
|
115
|
+
create: documents,
|
|
116
|
+
}));
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
describe('validate', () => {
|
|
121
|
+
it('should throw MissingOption if stateRepository is not set', async () => {
|
|
122
|
+
dpp = new DashPlatformProtocol();
|
|
123
|
+
await dpp.initialize();
|
|
124
|
+
|
|
125
|
+
try {
|
|
126
|
+
await dpp.document.validate(document);
|
|
127
|
+
|
|
128
|
+
expect.fail('MissingOption should be thrown');
|
|
129
|
+
} catch (e) {
|
|
130
|
+
expect(e).to.be.an.instanceOf(MissingOptionError);
|
|
131
|
+
expect(e.getOptionName()).to.equal('stateRepository');
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it('should validate Document', async () => {
|
|
136
|
+
const result = await dpp.document.validate(document);
|
|
137
|
+
|
|
138
|
+
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
139
|
+
expect(result.isValid()).to.be.true();
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it('should return invalid result if Data Contract is invalid', async () => {
|
|
143
|
+
stateRepositoryMock.fetchDataContract.returns(null);
|
|
144
|
+
|
|
145
|
+
const result = await dpp.document.validate(document);
|
|
146
|
+
|
|
147
|
+
expect(result).to.be.an.instanceOf(ValidationResult);
|
|
148
|
+
expect(result.isValid()).to.be.false();
|
|
149
|
+
|
|
150
|
+
const [error] = result.getErrors();
|
|
151
|
+
|
|
152
|
+
expect(error).to.be.an.instanceOf(DataContractNotPresentError);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
const IdentityPublicKey = require('../../../../../lib/identity/IdentityPublicKey');
|
|
2
|
+
|
|
3
|
+
const getDataContractFixture = require('../../../../../lib/test/fixtures/getDataContractFixture');
|
|
4
|
+
const getDocumentsFixture = require('../../../../../lib/test/fixtures/getDocumentsFixture');
|
|
5
|
+
const DocumentFactory = require('../../../../../lib/document/DocumentFactory');
|
|
6
|
+
const createDPPMock = require('../../../../../lib/test/mocks/createDPPMock');
|
|
7
|
+
|
|
8
|
+
describe('DocumentBatchTransition', () => {
|
|
9
|
+
let stateTransitionFixture;
|
|
10
|
+
let dataContractFixture;
|
|
11
|
+
let documentsFixture;
|
|
12
|
+
let documentFactory;
|
|
13
|
+
let mediumSecurityDocumentFixture;
|
|
14
|
+
let masterSecurityDocumentFixture;
|
|
15
|
+
let noSecurityLevelSpecifiedDocumentFixture;
|
|
16
|
+
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
dataContractFixture = getDataContractFixture();
|
|
19
|
+
|
|
20
|
+
dataContractFixture.documents.niceDocument
|
|
21
|
+
.signatureSecurityLevelRequirement = IdentityPublicKey.SECURITY_LEVELS.MEDIUM;
|
|
22
|
+
dataContractFixture.documents.prettyDocument
|
|
23
|
+
.signatureSecurityLevelRequirement = IdentityPublicKey.SECURITY_LEVELS.MASTER;
|
|
24
|
+
|
|
25
|
+
// 0 is niceDocument,
|
|
26
|
+
// 1 and 2 are pretty documents,
|
|
27
|
+
// 3 and 4 are indexed documents that do not have security level specified
|
|
28
|
+
documentsFixture = getDocumentsFixture(dataContractFixture);
|
|
29
|
+
[
|
|
30
|
+
mediumSecurityDocumentFixture,,
|
|
31
|
+
masterSecurityDocumentFixture,,
|
|
32
|
+
noSecurityLevelSpecifiedDocumentFixture,
|
|
33
|
+
] = documentsFixture;
|
|
34
|
+
|
|
35
|
+
documentFactory = new DocumentFactory(
|
|
36
|
+
createDPPMock(),
|
|
37
|
+
() => {},
|
|
38
|
+
() => {},
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
stateTransitionFixture = documentFactory.createStateTransition({
|
|
42
|
+
create: documentsFixture,
|
|
43
|
+
replace: [],
|
|
44
|
+
delete: [],
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
describe('#getRequiredKeySecurityLevel', () => {
|
|
49
|
+
it('should return the highest security level of all transitions', () => {
|
|
50
|
+
stateTransitionFixture = documentFactory.createStateTransition({
|
|
51
|
+
create: [mediumSecurityDocumentFixture],
|
|
52
|
+
replace: [],
|
|
53
|
+
delete: [],
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// Nice document has medium security level
|
|
57
|
+
expect(stateTransitionFixture.getKeySecurityLevelRequirement())
|
|
58
|
+
.to.be.equal(IdentityPublicKey.SECURITY_LEVELS.MEDIUM);
|
|
59
|
+
|
|
60
|
+
stateTransitionFixture = documentFactory.createStateTransition({
|
|
61
|
+
create: [mediumSecurityDocumentFixture, masterSecurityDocumentFixture],
|
|
62
|
+
replace: [],
|
|
63
|
+
delete: [],
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Should be the highest security level out of MEDIUM and MASTER
|
|
67
|
+
expect(stateTransitionFixture.getKeySecurityLevelRequirement())
|
|
68
|
+
.to.be.equal(IdentityPublicKey.SECURITY_LEVELS.MASTER);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('should return default security level if no document has a security level defined', () => {
|
|
72
|
+
stateTransitionFixture = documentFactory.createStateTransition({
|
|
73
|
+
create: [noSecurityLevelSpecifiedDocumentFixture],
|
|
74
|
+
replace: [],
|
|
75
|
+
delete: [],
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Should be the default level, which is HIGH
|
|
79
|
+
expect(stateTransitionFixture.getKeySecurityLevelRequirement())
|
|
80
|
+
.to.be.equal(IdentityPublicKey.SECURITY_LEVELS.HIGH);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
});
|