From 3eabc72ef9f26c2922eac0716b82c1687a1299f5 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Sun, 22 Aug 2021 19:08:15 +0300 Subject: [PATCH 1/2] feat!: introduce error codes --- lib/dataContract/DataContractFactory.js | 2 +- .../errors/DataContractAlreadyExistsError.js | 13 +- .../errors/InvalidDataContractError.js | 17 +- ...ataContractCreateTransitionBasicFactory.js | 4 +- ...ataContractCreateTransitionStateFactory.js | 2 +- .../validation/validateDataContractFactory.js | 16 +- .../validateDataContractMaxDepthFactory.js | 4 +- lib/dataTrigger/DataTrigger.js | 4 +- .../createContactRequestDataTrigger.js | 2 +- .../dpnsTriggers/createDomainDataTrigger.js | 2 +- .../createFeatureFlagDataTrigger.js | 2 +- lib/dataTrigger/rejectDataTrigger.js | 2 +- lib/decodeProtocolEntityFactory.js | 8 +- lib/document/DocumentFactory.js | 2 +- .../errors/DocumentAlreadyExistsError.js | 13 +- .../errors/DocumentNotProvidedError.js | 13 +- .../errors/IncompatibleRe2PatternError.js | 2 +- lib/document/errors/InvalidActionNameError.js | 9 +- .../errors/InvalidDocumentActionError.js | 12 +- lib/document/errors/InvalidDocumentError.js | 17 +- .../errors/InvalidInitialRevisionError.js | 12 +- lib/document/errors/MismatchOwnerIdsError.js | 9 +- .../errors/NoDocumentsSuppliedError.js | 9 +- .../fetchAndValidateDataContractFactory.js | 4 +- ...ateDocumentsBatchTransitionBasicFactory.js | 26 ++- .../basic/validatePartialCompoundIndices.js | 2 +- .../validation/state/fetchDocumentsFactory.js | 2 +- ...ateDocumentsBatchTransitionStateFactory.js | 20 +-- ...dateDocumentsUniquenessByIndicesFactory.js | 2 +- .../validation/validateDocumentFactory.js | 11 +- ...patibleProtocolVersionIsNotDefinedError.js | 13 +- lib/errors/{ConsensusError.js => DPPError.js} | 4 +- lib/errors/DataContractNotPresentError.js | 10 +- .../IdentityAssetLockProofMismatchError.js | 9 - ...ssetLockProofOutPointIsAlreadyUsedError.js | 23 --- ...ofTransactionOutPointIsAlreadyUsedError.js | 23 --- lib/errors/InvalidCompoundIndexError.js | 33 ---- lib/errors/InvalidDataContractIdError.js | 23 --- lib/errors/InvalidDocumentEntropyError.js | 23 --- lib/errors/InvalidDocumentIdError.js | 23 --- lib/errors/InvalidDocumentTypeError.js | 12 +- ...idIdentityAssetLockProofCoreHeightError.js | 33 ---- ...lidIdentityAssetLockProofSignatureError.js | 9 - ...InvalidRegistrationTransactionTypeError.js | 23 --- ...hDocumentContractIdAndDataContractError.js | 34 ---- lib/errors/MissingOptionError.js | 12 +- ...DocumentsForDifferentDataContractsError.js | 23 --- ...ontainsDocumentsFromDifferentUsersError.js | 23 --- lib/errors/STDuplicateDocumentsError.js | 23 --- lib/errors/UnconfirmedUserError.js | 23 --- lib/errors/consensus/ConsensusError.js | 24 +++ .../consensus/basic/AbstractBasicError.js | 10 ++ .../basic}/InvalidIdentifierError.js | 4 +- .../{ => consensus/basic}/JsonSchemaError.js | 4 +- .../basic/dataContract}/AbstractIndexError.js | 4 +- .../DataContractMaxDepthExceedError.js | 4 +- .../dataContract}/DuplicateIndexError.js | 0 .../dataContract/InvalidCompoundIndexError.js | 20 +++ .../InvalidDataContractIdError.js | 30 ++++ .../InvalidIndexPropertyTypeError.js | 0 .../InvalidIndexedPropertyConstraintError.js | 0 .../SystemPropertyIndexAlreadyPresentError.js | 0 .../UndefinedIndexPropertyError.js | 0 .../UniqueIndicesLimitReachedError.js | 0 .../IncompatibleProtocolVersionError.js | 2 +- .../decode}/ProtocolVersionParsingError.js | 2 +- .../decode}/SerializedObjectParsingError.js | 2 +- .../UnsupportedProtocolVersionError.js | 2 +- .../document/DataContractNotPresentError.js | 23 +++ .../DuplicateDocumentTransitionsError.js | 4 +- .../InconsistentCompoundIndexDataError.js | 4 +- .../InvalidDocumentTransitionActionError.js | 10 +- .../InvalidDocumentTransitionIdError.js | 4 +- .../document/InvalidDocumentTypeError.js | 34 ++++ .../document}/MissingDataContractIdError.js | 7 +- .../MissingDocumentTransitionActionError.js | 4 +- .../MissingDocumentTransitionTypeError.js | 31 ++++ .../document}/MissingDocumentTypeError.js | 7 +- .../DuplicatedIdentityPublicKeyError.js | 4 +- .../DuplicatedIdentityPublicKeyIdError.js | 4 +- .../IdentityAssetLockProofMismatchError.js | 9 + ...tityAssetLockTransactionIsNotFoundError.js | 4 +- ...ckTransactionOutPointAlreadyExistsError.js | 4 +- ...AssetLockTransactionOutputNotFoundError.js | 4 +- ...validAssetLockProofCoreChainHeightError.js | 6 +- ...lidAssetLockProofTransactionHeightError.js | 4 +- .../InvalidIdentityAssetLockProofError.js | 4 +- ...lidIdentityAssetLockProofSignatureError.js | 9 + ...nvalidIdentityAssetLockTransactionError.js | 4 +- ...IdentityAssetLockTransactionOutputError.js | 4 +- .../InvalidIdentityPublicKeyDataError.js | 6 +- .../InvalidStateTransitionTypeError.js | 4 +- .../MissingStateTransitionTypeError.js | 4 +- .../StateTransitionMaxSizeExceededError.js | 4 +- lib/errors/consensus/codes.js | 161 ++++++++++++++++++ lib/errors/consensus/fee/AbstractFeeError.js | 10 ++ .../fee}/BalanceIsNotEnoughError.js | 4 +- .../signature/AbstractSignatureError.js | 10 ++ .../signature}/IdentityNotFoundError.js | 4 +- .../InvalidIdentityPublicKeyTypeError.js | 4 +- .../InvalidStateTransitionSignatureError.js | 4 +- .../signature}/MissingPublicKeyError.js | 7 +- .../consensus/state/AbstractStateError.js | 7 + .../DataContractAlreadyPresentError.js | 4 +- .../dataTrigger}/AbstractDataTriggerError.js | 4 +- .../dataTrigger}/DataTriggerConditionError.js | 0 .../dataTrigger}/DataTriggerExecutionError.js | 0 .../DataTriggerInvalidResultError.js | 0 .../document}/DocumentAlreadyPresentError.js | 4 +- .../state/document}/DocumentNotFoundError.js | 6 +- .../document}/DocumentOwnerIdMismatchError.js | 4 +- .../DocumentTimestampWindowViolationError.js | 4 +- .../DocumentTimestampsMismatchError.js | 4 +- .../state/document}/DuplicateDocumentError.js | 4 +- .../document}/InvalidDocumentRevisionError.js | 4 +- .../identity}/IdentityAlreadyExistsError.js | 4 +- .../IdentityPublicKeyAlreadyExistsError.js | 4 +- lib/identifier/createAndValidateIdentifier.js | 4 +- lib/identifier/errors/IdentifierError.js | 14 +- lib/identity/IdentityFactory.js | 2 +- .../errors/AssetLockOutputNotFoundError.js | 12 +- .../errors/EmptyPublicKeyDataError.js | 12 +- lib/identity/errors/InvalidIdentityError.js | 17 +- .../errors/UnknownAssetLockProofTypeError.js} | 6 +- ...ateIdentityCreateTransitionStateFactory.js | 2 +- ...dateIdentityPublicKeysUniquenessFactory.js | 2 +- ...dateIdentityTopUpTransitionBasicFactory.js | 13 -- ...dateChainAssetLockProofStructureFactory.js | 6 +- .../fetchAssetLockTransactionOutputFactory.js | 4 +- ...teInstantAssetLockProofStructureFactory.js | 6 +- .../validateAssetLockTransactionFactory.js | 8 +- .../validateIdentityExistenceFactory.js | 2 +- .../validation/validatePublicKeysFactory.js | 6 +- .../AbstractStateTransitionIdentitySigned.js | 6 +- lib/stateTransition/StateTransitionFacade.js | 1 - lib/stateTransition/StateTransitionFactory.js | 2 +- .../createStateTransitionFactory.js | 8 +- .../InvalidIdentityPublicKeyTypeError.js | 22 +++ .../errors/InvalidSignaturePublicKeyError.js | 8 +- .../errors/InvalidSignatureTypeError.js | 23 --- .../errors/InvalidStateTransitionError.js | 17 +- .../errors/InvalidStateTransitionTypeError.js | 23 +++ .../errors/MissingDataContractIdError.js | 31 ++++ .../errors/PublicKeyMismatchError.js | 13 +- .../errors/StateTransitionIsNotSignedError.js | 13 +- .../errors/WrongStateTransitionTypeError.js | 13 +- .../validateStateTransitionBasicFactory.js | 6 +- .../validateStateTransitionFeeFactory.js | 6 +- ...StateTransitionIdentitySignatureFactory.js | 6 +- ...idateStateTransitionKeySignatureFactory.js | 2 +- .../validateStateTransitionStateFactory.js | 12 +- lib/test/expect/expectError.js | 4 +- .../errors/MaxEncodedBytesReachedError.js | 9 +- lib/validation/JsonSchemaValidator.js | 2 +- ...ntractCreateTransitionBasicFactory.spec.js | 8 +- .../validateDataContractFactory.spec.js | 14 +- .../document/DocumentFacade.spec.js | 2 +- ...cumentsBatchTransitionBasicFactory.spec.js | 51 +++--- .../validateDocumentFactory.spec.js | 20 +-- ...entityCreateTransitionBasicFactory.spec.js | 2 +- ...dentityTopUpTransitionBasicFactory.spec.js | 33 +--- ...hainAssetLockProofStructureFactory.spec.js | 8 +- ...hAssetLockTransactionOutputFactory.spec.js | 4 +- ...tantAssetLockProofStructureFactory.spec.js | 8 +- ...alidateAssetLockTransactionFactory.spec.js | 8 +- .../validateIdentityFactory.spec.js | 2 +- .../validatePublicKeysFactory.spec.js | 6 +- ...tractStateTransitionIdentitySigned.spec.js | 4 +- .../StateTransitionFacade.spec.js | 2 +- .../dataContract/DataContractFactory.spec.js | 4 +- ...ntractCreateTransitionStateFactory.spec.js | 2 +- ...alidateDataContractMaxDepthFactory.spec.js | 4 +- test/unit/dataTrigger/DataTrigger.spec.js | 4 +- .../createContactRequestDataTrigger.spec.js | 2 +- .../createDomainDataTrigger.spec.js | 2 +- .../createFeatureFlagDataTrigger.spec.js | 2 +- test/unit/decodeProtocolEntityFactory.spec.js | 12 +- test/unit/document/DocumentFactory.spec.js | 4 +- ...etchAndValidateDataContractFactory.spec.js | 4 +- .../validatePartialCompoundIndices.spec.js | 2 +- ...cumentsBatchTransitionStateFactory.spec.js | 43 ++--- ...ocumentsUniquenessByIndicesFactory.spec.js | 2 +- test/unit/identity/IdentityFactory.spec.js | 4 +- ...entityCreateTransitionStateFactory.spec.js | 2 +- ...dentityPublicKeysUniquenessFactory.spec.js | 2 +- .../validateIdentityExistenceFactory.spec.js | 2 +- .../StateTransitionFactory.spec.js | 4 +- .../createStateTransitionFactory.spec.js | 4 +- ...alidateStateTransitionBasicFactory.spec.js | 8 +- .../validateStateTransitionFeeFactory.spec.js | 9 +- ...TransitionIdentitySignatureFactory.spec.js | 8 +- ...StateTransitionKeySignatureFactory.spec.js | 2 +- ...alidateStateTransitionStateFactory.spec.js | 19 ++- 193 files changed, 904 insertions(+), 975 deletions(-) rename lib/errors/{ConsensusError.js => DPPError.js} (78%) delete mode 100644 lib/errors/IdentityAssetLockProofMismatchError.js delete mode 100644 lib/errors/IdentityAssetLockProofOutPointIsAlreadyUsedError.js delete mode 100644 lib/errors/IdentityAssetLockProofTransactionOutPointIsAlreadyUsedError.js delete mode 100644 lib/errors/InvalidCompoundIndexError.js delete mode 100644 lib/errors/InvalidDataContractIdError.js delete mode 100644 lib/errors/InvalidDocumentEntropyError.js delete mode 100644 lib/errors/InvalidDocumentIdError.js delete mode 100644 lib/errors/InvalidIdentityAssetLockProofCoreHeightError.js delete mode 100644 lib/errors/InvalidIdentityAssetLockProofSignatureError.js delete mode 100644 lib/errors/InvalidRegistrationTransactionTypeError.js delete mode 100644 lib/errors/MismatchDocumentContractIdAndDataContractError.js delete mode 100644 lib/errors/STContainsDocumentsForDifferentDataContractsError.js delete mode 100644 lib/errors/STContainsDocumentsFromDifferentUsersError.js delete mode 100644 lib/errors/STDuplicateDocumentsError.js delete mode 100644 lib/errors/UnconfirmedUserError.js create mode 100644 lib/errors/consensus/ConsensusError.js create mode 100644 lib/errors/consensus/basic/AbstractBasicError.js rename lib/errors/{ => consensus/basic}/InvalidIdentifierError.js (82%) rename lib/errors/{ => consensus/basic}/JsonSchemaError.js (52%) rename lib/errors/{ => consensus/basic/dataContract}/AbstractIndexError.js (87%) rename lib/errors/{ => consensus/basic/dataContract}/DataContractMaxDepthExceedError.js (63%) rename lib/errors/{ => consensus/basic/dataContract}/DuplicateIndexError.js (100%) create mode 100644 lib/errors/consensus/basic/dataContract/InvalidCompoundIndexError.js create mode 100644 lib/errors/consensus/basic/dataContract/InvalidDataContractIdError.js rename lib/errors/{ => consensus/basic/dataContract}/InvalidIndexPropertyTypeError.js (100%) rename lib/errors/{ => consensus/basic/dataContract}/InvalidIndexedPropertyConstraintError.js (100%) rename lib/errors/{ => consensus/basic/dataContract}/SystemPropertyIndexAlreadyPresentError.js (100%) rename lib/errors/{ => consensus/basic/dataContract}/UndefinedIndexPropertyError.js (100%) rename lib/errors/{ => consensus/basic/dataContract}/UniqueIndicesLimitReachedError.js (100%) rename lib/errors/{ => consensus/basic/decode}/IncompatibleProtocolVersionError.js (94%) rename lib/errors/{ => consensus/basic/decode}/ProtocolVersionParsingError.js (91%) rename lib/errors/{ => consensus/basic/decode}/SerializedObjectParsingError.js (91%) rename lib/errors/{ => consensus/basic/decode}/UnsupportedProtocolVersionError.js (94%) create mode 100644 lib/errors/consensus/basic/document/DataContractNotPresentError.js rename lib/errors/{ => consensus/basic/document}/DuplicateDocumentTransitionsError.js (83%) rename lib/errors/{ => consensus/basic/document}/InconsistentCompoundIndexDataError.js (80%) rename lib/errors/{ => consensus/basic/document}/InvalidDocumentTransitionActionError.js (69%) rename lib/errors/{ => consensus/basic/document}/InvalidDocumentTransitionIdError.js (81%) create mode 100644 lib/errors/consensus/basic/document/InvalidDocumentTypeError.js rename lib/errors/{ => consensus/basic/document}/MissingDataContractIdError.js (62%) rename lib/errors/{ => consensus/basic/document}/MissingDocumentTransitionActionError.js (75%) create mode 100644 lib/errors/consensus/basic/document/MissingDocumentTransitionTypeError.js rename lib/errors/{ => consensus/basic/document}/MissingDocumentTypeError.js (61%) rename lib/errors/{ => consensus/basic/identity}/DuplicatedIdentityPublicKeyError.js (74%) rename lib/errors/{ => consensus/basic/identity}/DuplicatedIdentityPublicKeyIdError.js (74%) create mode 100644 lib/errors/consensus/basic/identity/IdentityAssetLockProofMismatchError.js rename lib/errors/{ => consensus/basic/identity}/IdentityAssetLockTransactionIsNotFoundError.js (70%) rename lib/errors/{ => consensus/basic/identity}/IdentityAssetLockTransactionOutPointAlreadyExistsError.js (81%) rename lib/errors/{ => consensus/basic/identity}/IdentityAssetLockTransactionOutputNotFoundError.js (71%) rename lib/errors/{ => consensus/basic/identity}/InvalidAssetLockProofCoreChainHeightError.js (79%) rename lib/errors/{ => consensus/basic/identity}/InvalidAssetLockProofTransactionHeightError.js (83%) rename lib/errors/{ => consensus/basic/identity}/InvalidIdentityAssetLockProofError.js (57%) create mode 100644 lib/errors/consensus/basic/identity/InvalidIdentityAssetLockProofSignatureError.js rename lib/errors/{ => consensus/basic/identity}/InvalidIdentityAssetLockTransactionError.js (58%) rename lib/errors/{ => consensus/basic/identity}/InvalidIdentityAssetLockTransactionOutputError.js (72%) rename lib/errors/{ => consensus/basic/identity}/InvalidIdentityPublicKeyDataError.js (76%) rename lib/errors/{ => consensus/basic/stateTransition}/InvalidStateTransitionTypeError.js (77%) rename lib/errors/{ => consensus/basic/stateTransition}/MissingStateTransitionTypeError.js (75%) rename lib/errors/{ => consensus/basic/stateTransition}/StateTransitionMaxSizeExceededError.js (81%) create mode 100644 lib/errors/consensus/codes.js create mode 100644 lib/errors/consensus/fee/AbstractFeeError.js rename lib/errors/{ => consensus/fee}/BalanceIsNotEnoughError.js (72%) create mode 100644 lib/errors/consensus/signature/AbstractSignatureError.js rename lib/errors/{ => consensus/signature}/IdentityNotFoundError.js (70%) rename lib/errors/{ => consensus/signature}/InvalidIdentityPublicKeyTypeError.js (68%) rename lib/errors/{ => consensus/signature}/InvalidStateTransitionSignatureError.js (75%) rename lib/errors/{ => consensus/signature}/MissingPublicKeyError.js (61%) create mode 100644 lib/errors/consensus/state/AbstractStateError.js rename lib/errors/{ => consensus/state/dataContract}/DataContractAlreadyPresentError.js (73%) rename lib/errors/{ => consensus/state/dataContract/dataTrigger}/AbstractDataTriggerError.js (82%) rename lib/errors/{ => consensus/state/dataContract/dataTrigger}/DataTriggerConditionError.js (100%) rename lib/errors/{ => consensus/state/dataContract/dataTrigger}/DataTriggerExecutionError.js (100%) rename lib/errors/{ => consensus/state/dataContract/dataTrigger}/DataTriggerInvalidResultError.js (100%) rename lib/errors/{ => consensus/state/document}/DocumentAlreadyPresentError.js (84%) rename lib/errors/{ => consensus/state/document}/DocumentNotFoundError.js (70%) rename lib/errors/{ => consensus/state/document}/DocumentOwnerIdMismatchError.js (85%) rename lib/errors/{ => consensus/state/document}/DocumentTimestampWindowViolationError.js (87%) rename lib/errors/{ => consensus/state/document}/DocumentTimestampsMismatchError.js (77%) rename lib/errors/{ => consensus/state/document}/DuplicateDocumentError.js (85%) rename lib/errors/{ => consensus/state/document}/InvalidDocumentRevisionError.js (83%) rename lib/errors/{ => consensus/state/identity}/IdentityAlreadyExistsError.js (77%) rename lib/errors/{ => consensus/state/identity}/IdentityPublicKeyAlreadyExistsError.js (72%) rename lib/{errors/UnknownAssetLockProofError.js => identity/errors/UnknownAssetLockProofTypeError.js} (58%) create mode 100644 lib/stateTransition/errors/InvalidIdentityPublicKeyTypeError.js delete mode 100644 lib/stateTransition/errors/InvalidSignatureTypeError.js create mode 100644 lib/stateTransition/errors/InvalidStateTransitionTypeError.js create mode 100644 lib/stateTransition/errors/MissingDataContractIdError.js diff --git a/lib/dataContract/DataContractFactory.js b/lib/dataContract/DataContractFactory.js index 272e49ac2..67fb0203c 100644 --- a/lib/dataContract/DataContractFactory.js +++ b/lib/dataContract/DataContractFactory.js @@ -6,7 +6,7 @@ const generateDataContractId = require('./generateDataContractId'); const DataContractCreateTransition = require('./stateTransition/DataContractCreateTransition/DataContractCreateTransition'); const generateEntropy = require('../util/generateEntropy'); -const ConsensusError = require('../errors/ConsensusError'); +const ConsensusError = require('../errors/consensus/ConsensusError'); class DataContractFactory { /** diff --git a/lib/dataContract/errors/DataContractAlreadyExistsError.js b/lib/dataContract/errors/DataContractAlreadyExistsError.js index db6045464..07fd9ee72 100644 --- a/lib/dataContract/errors/DataContractAlreadyExistsError.js +++ b/lib/dataContract/errors/DataContractAlreadyExistsError.js @@ -1,18 +1,13 @@ -class DataContractAlreadyExistsError extends Error { +const DPPError = require('../../errors/DPPError'); + +class DataContractAlreadyExistsError extends DPPError { /** * @param {AbstractStateTransition} stateTransition */ constructor(stateTransition) { - super(); - - this.name = this.constructor.name; - this.message = 'Data contract already exists'; + super('Data contract already exists'); this.stateTransition = stateTransition; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/dataContract/errors/InvalidDataContractError.js b/lib/dataContract/errors/InvalidDataContractError.js index 6ed0f9a65..559d604d0 100644 --- a/lib/dataContract/errors/InvalidDataContractError.js +++ b/lib/dataContract/errors/InvalidDataContractError.js @@ -1,23 +1,20 @@ -class InvalidDataContractError extends Error { +const DPPError = require('../../errors/DPPError'); + +class InvalidDataContractError extends DPPError { /** * @param {ConsensusError[]} errors * @param {RawDataContract} rawDataContract */ constructor(errors, rawDataContract) { - super(); - - this.name = this.constructor.name; - this.message = `Invalid Data Contract: "${errors[0].message}"`; + let message = `Invalid Data Contract: "${errors[0].message}"`; if (errors.length > 1) { - this.message = `${this.message} and ${errors.length - 1} more`; + message = `${message} and ${errors.length - 1} more`; } + super(message); + this.errors = errors; this.rawDataContract = rawDataContract; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.js b/lib/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.js index 0b4524173..1210c91de 100644 --- a/lib/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.js +++ b/lib/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.js @@ -1,4 +1,4 @@ -const InvalidDataContractIdError = require('../../../../../errors/InvalidDataContractIdError'); +const InvalidDataContractIdError = require('../../../../../errors/consensus/basic/dataContract/InvalidDataContractIdError'); const generateDataContractId = require('../../../../generateDataContractId'); @@ -48,7 +48,7 @@ function validateDataContractCreateTransitionBasicFactory( if (!generatedId.equals(rawDataContract.$id)) { result.addError( - new InvalidDataContractIdError(rawDataContract), + new InvalidDataContractIdError(generatedId, rawDataContract.$id), ); } diff --git a/lib/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.js b/lib/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.js index eef5e0d1f..6f39bd8ff 100644 --- a/lib/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.js +++ b/lib/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.js @@ -1,6 +1,6 @@ const ValidationResult = require('../../../../../validation/ValidationResult'); -const DataContractAlreadyPresentError = require('../../../../../errors/DataContractAlreadyPresentError'); +const DataContractAlreadyPresentError = require('../../../../../errors/consensus/state/dataContract/DataContractAlreadyPresentError'); /** * diff --git a/lib/dataContract/validation/validateDataContractFactory.js b/lib/dataContract/validation/validateDataContractFactory.js index 630059dcb..dfd7f73be 100644 --- a/lib/dataContract/validation/validateDataContractFactory.js +++ b/lib/dataContract/validation/validateDataContractFactory.js @@ -5,13 +5,13 @@ const DataContract = require('../DataContract'); const baseDocumentSchema = require('../../../schema/document/documentBase.json'); -const DuplicateIndexError = require('../../errors/DuplicateIndexError'); -const UndefinedIndexPropertyError = require('../../errors/UndefinedIndexPropertyError'); -const InvalidIndexPropertyTypeError = require('../../errors/InvalidIndexPropertyTypeError'); -const SystemPropertyIndexAlreadyPresentError = require('../../errors/SystemPropertyIndexAlreadyPresentError'); -const UniqueIndicesLimitReachedError = require('../../errors/UniqueIndicesLimitReachedError'); -const InvalidIndexedPropertyConstraintError = require('../../errors/InvalidIndexedPropertyConstraintError'); -const InvalidCompoundIndexError = require('../../errors/InvalidCompoundIndexError'); +const DuplicateIndexError = require('../../errors/consensus/basic/dataContract/DuplicateIndexError'); +const UndefinedIndexPropertyError = require('../../errors/consensus/basic/dataContract/UndefinedIndexPropertyError'); +const InvalidIndexPropertyTypeError = require('../../errors/consensus/basic/dataContract/InvalidIndexPropertyTypeError'); +const SystemPropertyIndexAlreadyPresentError = require('../../errors/consensus/basic/dataContract/SystemPropertyIndexAlreadyPresentError'); +const UniqueIndicesLimitReachedError = require('../../errors/consensus/basic/dataContract/UniqueIndicesLimitReachedError'); +const InvalidIndexedPropertyConstraintError = require('../../errors/consensus/basic/dataContract/InvalidIndexedPropertyConstraintError'); +const InvalidCompoundIndexError = require('../../errors/consensus/basic/dataContract/InvalidCompoundIndexError'); const getPropertyDefinitionByPathFactory = require('../getPropertyDefinitionByPathFactory'); @@ -246,7 +246,7 @@ module.exports = function validateDataContractFactory( if (!allAreRequired && !allAreNotRequired) { result.addError( - new InvalidCompoundIndexError(documentType, indexDefinition), + new InvalidCompoundIndexError(rawDataContract, documentType, indexDefinition), ); } } diff --git a/lib/dataContract/validation/validateDataContractMaxDepthFactory.js b/lib/dataContract/validation/validateDataContractMaxDepthFactory.js index c0c6dc701..7e0e0d6a2 100644 --- a/lib/dataContract/validation/validateDataContractMaxDepthFactory.js +++ b/lib/dataContract/validation/validateDataContractMaxDepthFactory.js @@ -1,7 +1,7 @@ const lodashCloneDeep = require('lodash.clonedeep'); const ValidationResult = require('../../validation/ValidationResult'); -const JsonSchemaError = require('../../errors/JsonSchemaError'); -const DataContractMaxDepthExceedError = require('../../errors/DataContractMaxDepthExceedError'); +const JsonSchemaError = require('../../errors/consensus/basic/JsonSchemaError'); +const DataContractMaxDepthExceedError = require('../../errors/consensus/basic/dataContract/DataContractMaxDepthExceedError'); /** * Check that JSON Schema max depth is less than max value diff --git a/lib/dataTrigger/DataTrigger.js b/lib/dataTrigger/DataTrigger.js index 77665ecd4..6d377a1e1 100644 --- a/lib/dataTrigger/DataTrigger.js +++ b/lib/dataTrigger/DataTrigger.js @@ -1,6 +1,6 @@ const DataTriggerExecutionResult = require('./DataTriggerExecutionResult'); -const DataTriggerExecutionError = require('../errors/DataTriggerExecutionError'); -const DataTriggerInvalidResultError = require('../errors/DataTriggerInvalidResultError'); +const DataTriggerExecutionError = require('../errors/consensus/state/dataContract/dataTrigger/DataTriggerExecutionError'); +const DataTriggerInvalidResultError = require('../errors/consensus/state/dataContract/dataTrigger/DataTriggerInvalidResultError'); class DataTrigger { /** diff --git a/lib/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.js b/lib/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.js index adcb9958a..73c9943a6 100644 --- a/lib/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.js +++ b/lib/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.js @@ -1,5 +1,5 @@ const DataTriggerExecutionResult = require('../DataTriggerExecutionResult'); -const DataTriggerConditionError = require('../../errors/DataTriggerConditionError'); +const DataTriggerConditionError = require('../../errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError'); const BLOCKS_WINDOW_SIZE = 8; diff --git a/lib/dataTrigger/dpnsTriggers/createDomainDataTrigger.js b/lib/dataTrigger/dpnsTriggers/createDomainDataTrigger.js index cbca7f62e..ea200a277 100644 --- a/lib/dataTrigger/dpnsTriggers/createDomainDataTrigger.js +++ b/lib/dataTrigger/dpnsTriggers/createDomainDataTrigger.js @@ -1,7 +1,7 @@ const hash = require('../../util/hash'); const DataTriggerExecutionResult = require('../DataTriggerExecutionResult'); -const DataTriggerConditionError = require('../../errors/DataTriggerConditionError'); +const DataTriggerConditionError = require('../../errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError'); const MAX_PRINTABLE_DOMAIN_NAME_LENGTH = 253; diff --git a/lib/dataTrigger/featureFlagsDataTriggers/createFeatureFlagDataTrigger.js b/lib/dataTrigger/featureFlagsDataTriggers/createFeatureFlagDataTrigger.js index 8f1a8a041..5ef2bfd52 100644 --- a/lib/dataTrigger/featureFlagsDataTriggers/createFeatureFlagDataTrigger.js +++ b/lib/dataTrigger/featureFlagsDataTriggers/createFeatureFlagDataTrigger.js @@ -1,6 +1,6 @@ const Long = require('long'); -const DataTriggerConditionError = require('../../errors/DataTriggerConditionError'); +const DataTriggerConditionError = require('../../errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError'); const DataTriggerExecutionResult = require('../DataTriggerExecutionResult'); /** diff --git a/lib/dataTrigger/rejectDataTrigger.js b/lib/dataTrigger/rejectDataTrigger.js index 169ed4112..fee0e8489 100644 --- a/lib/dataTrigger/rejectDataTrigger.js +++ b/lib/dataTrigger/rejectDataTrigger.js @@ -1,5 +1,5 @@ const DataTriggerExecutionResult = require('./DataTriggerExecutionResult'); -const DataTriggerConditionError = require('../errors/DataTriggerConditionError'); +const DataTriggerConditionError = require('../errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError'); /** * Data trigger for domain deletion process diff --git a/lib/decodeProtocolEntityFactory.js b/lib/decodeProtocolEntityFactory.js index 4e14b4b00..9744b2b8a 100644 --- a/lib/decodeProtocolEntityFactory.js +++ b/lib/decodeProtocolEntityFactory.js @@ -1,7 +1,7 @@ -const ProtocolVersionParsingError = require('./errors/ProtocolVersionParsingError'); -const SerializedObjectParsingError = require('./errors/SerializedObjectParsingError'); -const UnsupportedProtocolVersionError = require('./errors/UnsupportedProtocolVersionError'); -const IncompatibleProtocolVersionError = require('./errors/IncompatibleProtocolVersionError'); +const ProtocolVersionParsingError = require('./errors/consensus/basic/decode/ProtocolVersionParsingError'); +const SerializedObjectParsingError = require('./errors/consensus/basic/decode/SerializedObjectParsingError'); +const UnsupportedProtocolVersionError = require('./errors/consensus/basic/decode/UnsupportedProtocolVersionError'); +const IncompatibleProtocolVersionError = require('./errors/consensus/basic/decode/IncompatibleProtocolVersionError'); const CompatibleProtocolVersionIsNotDefinedError = require('./errors/CompatibleProtocolVersionIsNotDefinedError'); const { decode } = require('./util/serializer'); diff --git a/lib/document/DocumentFactory.js b/lib/document/DocumentFactory.js index 7de97666a..b1718acb0 100644 --- a/lib/document/DocumentFactory.js +++ b/lib/document/DocumentFactory.js @@ -8,7 +8,7 @@ const DocumentsBatchTransition = require('./stateTransition/DocumentsBatchTransi const AbstractDocumentTransition = require('./stateTransition/DocumentsBatchTransition/documentTransition/AbstractDocumentTransition'); const DocumentCreateTransition = require('./stateTransition/DocumentsBatchTransition/documentTransition/DocumentCreateTransition'); -const ConsensusError = require('../errors/ConsensusError'); +const ConsensusError = require('../errors/consensus/ConsensusError'); const InvalidActionNameError = require('./errors/InvalidActionNameError'); const NoDocumentsSuppliedError = require('./errors/NoDocumentsSuppliedError'); const MismatchOwnerIdsError = require('./errors/MismatchOwnerIdsError'); diff --git a/lib/document/errors/DocumentAlreadyExistsError.js b/lib/document/errors/DocumentAlreadyExistsError.js index 7364ef3ba..ac567daa0 100644 --- a/lib/document/errors/DocumentAlreadyExistsError.js +++ b/lib/document/errors/DocumentAlreadyExistsError.js @@ -1,18 +1,13 @@ -class DocumentAlreadyExistsError extends Error { +const DPPError = require('../../errors/DPPError'); + +class DocumentAlreadyExistsError extends DPPError { /** * @param {DocumentCreateTransition} documentTransition */ constructor(documentTransition) { - super(); - - this.name = this.constructor.name; - this.message = 'Document already exists'; + super('Document already exists'); this.documentTransition = documentTransition; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/document/errors/DocumentNotProvidedError.js b/lib/document/errors/DocumentNotProvidedError.js index 7ad2222f8..23e80dd42 100644 --- a/lib/document/errors/DocumentNotProvidedError.js +++ b/lib/document/errors/DocumentNotProvidedError.js @@ -1,18 +1,13 @@ -class DocumentNotProvidedError extends Error { +const DPPError = require('../../errors/DPPError'); + +class DocumentNotProvidedError extends DPPError { /** * @param {DocumentCreateTransition} documentTransition */ constructor(documentTransition) { - super(); - - this.name = this.constructor.name; - this.message = 'Document was not provided for apply of state transition'; + super('Document was not provided for apply of state transition'); this.documentTransition = documentTransition; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/document/errors/IncompatibleRe2PatternError.js b/lib/document/errors/IncompatibleRe2PatternError.js index 93b9e734f..66538260e 100644 --- a/lib/document/errors/IncompatibleRe2PatternError.js +++ b/lib/document/errors/IncompatibleRe2PatternError.js @@ -1,4 +1,4 @@ -const ConsensusError = require('../../errors/ConsensusError'); +const ConsensusError = require('../../errors/consensus/ConsensusError'); class IncompatibleRe2PatternError extends ConsensusError { /** diff --git a/lib/document/errors/InvalidActionNameError.js b/lib/document/errors/InvalidActionNameError.js index 039a15e56..a6e2c6cd7 100644 --- a/lib/document/errors/InvalidActionNameError.js +++ b/lib/document/errors/InvalidActionNameError.js @@ -1,12 +1,11 @@ -class InvalidActionNameError extends Error { +const DPPError = require('../../errors/DPPError'); + +class InvalidActionNameError extends DPPError { /** * @param {string[]} actions */ constructor(actions) { - super(); - - this.name = this.constructor.name; - this.message = 'Invalid document action submitted'; + super('Invalid document action submitted'); this.actions = actions; } diff --git a/lib/document/errors/InvalidDocumentActionError.js b/lib/document/errors/InvalidDocumentActionError.js index c5d5c3517..4e475004d 100644 --- a/lib/document/errors/InvalidDocumentActionError.js +++ b/lib/document/errors/InvalidDocumentActionError.js @@ -1,19 +1,15 @@ -class InvalidDocumentActionError extends Error { +const DPPError = require('../../errors/DPPError'); + +class InvalidDocumentActionError extends DPPError { /** * @param { * DocumentCreateTransition|DocumentReplaceTransition|DocumentDeleteTransition * } documentTransition */ constructor(documentTransition) { - super(); + super(`Invalid Document action ${documentTransition.getAction()}`); - this.name = this.constructor.name; - this.message = `Invalid Document action ${documentTransition.getAction()}`; this.documentTransition = documentTransition; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/document/errors/InvalidDocumentError.js b/lib/document/errors/InvalidDocumentError.js index d6101c53f..296900522 100644 --- a/lib/document/errors/InvalidDocumentError.js +++ b/lib/document/errors/InvalidDocumentError.js @@ -1,23 +1,20 @@ -class InvalidDocumentError extends Error { +const DPPError = require('../../errors/DPPError'); + +class InvalidDocumentError extends DPPError { /** * @param {ConsensusError[]} errors * @param {RawDocument} rawDocument */ constructor(errors, rawDocument) { - super(); - - this.name = this.constructor.name; - this.message = `Invalid Document: "${errors[0].message}"`; + let message = `Invalid Document: "${errors[0].message}"`; if (errors.length > 1) { - this.message = `${this.message} and ${errors.length - 1} more`; + message = `${message} and ${errors.length - 1} more`; } + super(message); + this.errors = errors; this.rawDocument = rawDocument; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/document/errors/InvalidInitialRevisionError.js b/lib/document/errors/InvalidInitialRevisionError.js index 13166763d..ba0aacae1 100644 --- a/lib/document/errors/InvalidInitialRevisionError.js +++ b/lib/document/errors/InvalidInitialRevisionError.js @@ -1,17 +1,13 @@ -class InvalidInitialRevisionError extends Error { +const DPPError = require('../../errors/DPPError'); + +class InvalidInitialRevisionError extends DPPError { /** * @param {Document} document */ constructor(document) { - super(); + super(`Invalid Document initial revision ${document.getRevision()}`); - this.name = this.constructor.name; - this.message = `Invalid Document initial revision ${document.getRevision()}`; this.document = document; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/document/errors/MismatchOwnerIdsError.js b/lib/document/errors/MismatchOwnerIdsError.js index 31d65f063..6769e116c 100644 --- a/lib/document/errors/MismatchOwnerIdsError.js +++ b/lib/document/errors/MismatchOwnerIdsError.js @@ -1,12 +1,11 @@ -class MismatchOwnerIdsError extends Error { +const DPPError = require('../../errors/DPPError'); + +class MismatchOwnerIdsError extends DPPError { /** * @param {Document[]} documents */ constructor(documents) { - super(); - - this.name = this.constructor.name; - this.message = 'Documents have mixed owner ids'; + super('Documents have mixed owner ids'); this.documents = documents; } diff --git a/lib/document/errors/NoDocumentsSuppliedError.js b/lib/document/errors/NoDocumentsSuppliedError.js index 0b11f8b79..328d7e5f0 100644 --- a/lib/document/errors/NoDocumentsSuppliedError.js +++ b/lib/document/errors/NoDocumentsSuppliedError.js @@ -1,9 +1,8 @@ -class NoDocumentsSuppliedError extends Error { - constructor() { - super(); +const DPPError = require('../../errors/DPPError'); - this.name = this.constructor.name; - this.message = 'No documents were supplied to state transition'; +class NoDocumentsSuppliedError extends DPPError { + constructor() { + super('No documents were supplied to state transition'); } } diff --git a/lib/document/fetchAndValidateDataContractFactory.js b/lib/document/fetchAndValidateDataContractFactory.js index 2c33b80c8..ca2bf3ec2 100644 --- a/lib/document/fetchAndValidateDataContractFactory.js +++ b/lib/document/fetchAndValidateDataContractFactory.js @@ -1,5 +1,5 @@ -const MissingDataContractIdError = require('../errors/MissingDataContractIdError'); -const DataContractNotPresentError = require('../errors/DataContractNotPresentError'); +const MissingDataContractIdError = require('../errors/consensus/basic/document/MissingDataContractIdError'); +const DataContractNotPresentError = require('../errors/consensus/basic/document/DataContractNotPresentError'); const createAndValidateIdentifier = require('../identifier/createAndValidateIdentifier'); diff --git a/lib/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.js b/lib/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.js index b4769abbc..592b75916 100644 --- a/lib/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.js +++ b/lib/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.js @@ -2,14 +2,14 @@ const ValidationResult = require('../../../../../validation/ValidationResult'); const AbstractDocumentTransition = require('../../documentTransition/AbstractDocumentTransition'); -const DataContractNotPresentError = require('../../../../../errors/DataContractNotPresentError'); -const InvalidDocumentTransitionIdError = require('../../../../../errors/InvalidDocumentTransitionIdError'); -const DuplicateDocumentTransitionsError = require('../../../../../errors/DuplicateDocumentTransitionsError'); -const MissingDocumentTypeError = require('../../../../../errors/MissingDocumentTypeError'); -const InvalidDocumentTypeError = require('../../../../../errors/InvalidDocumentTypeError'); -const InvalidDocumentTransitionActionError = require('../../../../../errors/InvalidDocumentTransitionActionError'); -const MissingDocumentTransitionActionError = require('../../../../../errors/MissingDocumentTransitionActionError'); -const MissingDataContractIdError = require('../../../../../errors/MissingDataContractIdError'); +const DataContractNotPresentError = require('../../../../../errors/consensus/basic/document/DataContractNotPresentError'); +const InvalidDocumentTransitionIdError = require('../../../../../errors/consensus/basic/document/InvalidDocumentTransitionIdError'); +const DuplicateDocumentTransitionsError = require('../../../../../errors/consensus/basic/document/DuplicateDocumentTransitionsError'); +const MissingDocumentTransitionTypeError = require('../../../../../errors/consensus/basic/document/MissingDocumentTransitionTypeError'); +const InvalidDocumentTypeError = require('../../../../../errors/consensus/basic/document/InvalidDocumentTypeError'); +const InvalidDocumentTransitionActionError = require('../../../../../errors/consensus/basic/document/InvalidDocumentTransitionActionError'); +const MissingDocumentTransitionActionError = require('../../../../../errors/consensus/basic/document/MissingDocumentTransitionActionError'); +const MissingDataContractIdError = require('../../../../../errors/consensus/basic/document/MissingDataContractIdError'); const Identifier = require('../../../../../identifier/Identifier'); const baseTransitionSchema = require('../../../../../../schema/document/stateTransition/documentTransition/base.json'); @@ -84,7 +84,7 @@ function validateDocumentsBatchTransitionBasicFactory( // Validate $type if (!Object.prototype.hasOwnProperty.call(rawDocumentTransition, '$type')) { result.addError( - new MissingDocumentTypeError(rawDocumentTransition), + new MissingDocumentTransitionTypeError(rawDocumentTransition), ); return; @@ -164,11 +164,9 @@ function validateDocumentsBatchTransitionBasicFactory( break; default: - result.addError( - new InvalidDocumentTransitionActionError( - rawDocumentTransition.$action, - rawDocumentTransition, - ), + throw new InvalidDocumentTransitionActionError( + rawDocumentTransition.$action, + rawDocumentTransition, ); } }); diff --git a/lib/document/stateTransition/DocumentsBatchTransition/validation/basic/validatePartialCompoundIndices.js b/lib/document/stateTransition/DocumentsBatchTransition/validation/basic/validatePartialCompoundIndices.js index 192ff7573..ee75319fe 100644 --- a/lib/document/stateTransition/DocumentsBatchTransition/validation/basic/validatePartialCompoundIndices.js +++ b/lib/document/stateTransition/DocumentsBatchTransition/validation/basic/validatePartialCompoundIndices.js @@ -2,7 +2,7 @@ const lodashGet = require('lodash.get'); const ValidationResult = require('../../../../../validation/ValidationResult'); -const InconsistentCompoundIndexDataError = require('../../../../../errors/InconsistentCompoundIndexDataError'); +const InconsistentCompoundIndexDataError = require('../../../../../errors/consensus/basic/document/InconsistentCompoundIndexDataError'); /** * @typedef validatePartialCompoundIndices diff --git a/lib/document/stateTransition/DocumentsBatchTransition/validation/state/fetchDocumentsFactory.js b/lib/document/stateTransition/DocumentsBatchTransition/validation/state/fetchDocumentsFactory.js index e0324c8c4..3a16edc3e 100644 --- a/lib/document/stateTransition/DocumentsBatchTransition/validation/state/fetchDocumentsFactory.js +++ b/lib/document/stateTransition/DocumentsBatchTransition/validation/state/fetchDocumentsFactory.js @@ -8,7 +8,7 @@ function fetchDocumentsFactory(stateRepository) { * @param {DocumentCreateTransition[] * |DocumentReplaceTransition[] * |DocumentDeleteTransition[]} documentTransitions - * @return {Document[]} + * @return {Promise} */ async function fetchDocuments(documentTransitions) { // Group document transitions by contracts and types diff --git a/lib/document/stateTransition/DocumentsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.js b/lib/document/stateTransition/DocumentsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.js index 68ce01d30..69a00157d 100644 --- a/lib/document/stateTransition/DocumentsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.js +++ b/lib/document/stateTransition/DocumentsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.js @@ -2,17 +2,17 @@ const DataTriggerExecutionContext = require('../../../../../dataTrigger/DataTrig const ValidationResult = require('../../../../../validation/ValidationResult'); -const DocumentAlreadyPresentError = require('../../../../../errors/DocumentAlreadyPresentError'); -const DocumentNotFoundError = require('../../../../../errors/DocumentNotFoundError'); -const DocumentOwnerIdMismatchError = require('../../../../../errors/DocumentOwnerIdMismatchError'); -const InvalidDocumentRevisionError = require('../../../../../errors/InvalidDocumentRevisionError'); +const DocumentAlreadyPresentError = require('../../../../../errors/consensus/state/document/DocumentAlreadyPresentError'); +const DocumentNotFoundError = require('../../../../../errors/consensus/state/document/DocumentNotFoundError'); +const DocumentOwnerIdMismatchError = require('../../../../../errors/consensus/state/document/DocumentOwnerIdMismatchError'); +const InvalidDocumentRevisionError = require('../../../../../errors/consensus/state/document/InvalidDocumentRevisionError'); const InvalidDocumentActionError = require('../../../../errors/InvalidDocumentActionError'); const DataContractNotPresentError = require('../../../../../errors/DataContractNotPresentError'); const DocumentTimestampWindowViolationError = require( - '../../../../../errors/DocumentTimestampWindowViolationError', + '../../../../../errors/consensus/state/document/DocumentTimestampWindowViolationError', ); const DocumentTimestampsMismatchError = require( - '../../../../../errors/DocumentTimestampsMismatchError', + '../../../../../errors/consensus/state/document/DocumentTimestampsMismatchError', ); const AbstractDocumentTransition = require('../../documentTransition/AbstractDocumentTransition'); @@ -37,7 +37,9 @@ function validateDocumentsBatchTransitionStateFactory( * * @param {Identifier} dataContractId * @param {Identifier} ownerId - * @param {AbstractDocumentTransition} documentTransitions + * @param {DocumentCreateTransition[] + * |DocumentReplaceTransition[] + * |DocumentDeleteTransition[]} documentTransitions * @return {Promise} */ async function validateDocumentTransitions(dataContractId, ownerId, documentTransitions) { @@ -47,9 +49,7 @@ function validateDocumentsBatchTransitionStateFactory( const dataContract = await stateRepository.fetchDataContract(dataContractId); if (!dataContract) { - result.addError( - new DataContractNotPresentError(dataContractId), - ); + throw new DataContractNotPresentError(dataContractId); } if (!result.isValid()) { diff --git a/lib/document/stateTransition/DocumentsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.js b/lib/document/stateTransition/DocumentsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.js index 44a730cd9..7cc1572d1 100644 --- a/lib/document/stateTransition/DocumentsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.js +++ b/lib/document/stateTransition/DocumentsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.js @@ -1,5 +1,5 @@ const ValidationResult = require('../../../../../validation/ValidationResult'); -const DuplicateDocumentError = require('../../../../../errors/DuplicateDocumentError'); +const DuplicateDocumentError = require('../../../../../errors/consensus/state/document/DuplicateDocumentError'); const AbstractDocumentTransition = require('../../documentTransition/AbstractDocumentTransition'); /** diff --git a/lib/document/validation/validateDocumentFactory.js b/lib/document/validation/validateDocumentFactory.js index 4047824c6..fedd6670c 100644 --- a/lib/document/validation/validateDocumentFactory.js +++ b/lib/document/validation/validateDocumentFactory.js @@ -4,9 +4,8 @@ const ValidationResult = require('../../validation/ValidationResult'); const convertBuffersToArrays = require('../../util/convertBuffersToArrays'); -const InvalidDocumentTypeError = require('../../errors/InvalidDocumentTypeError'); -const MissingDocumentTypeError = require('../../errors/MissingDocumentTypeError'); -const MismatchDocumentContractIdAndDataContractError = require('../../errors/MismatchDocumentContractIdAndDataContractError'); +const InvalidDocumentTypeError = require('../../errors/consensus/basic/document/InvalidDocumentTypeError'); +const MissingDocumentTypeError = require('../../errors/consensus/basic/document/MissingDocumentTypeError'); /** * @param {JsonSchemaValidator} validator @@ -68,12 +67,6 @@ module.exports = function validateDocumentFactory( return result; } - if (!rawDocument.$dataContractId.equals(dataContract.getId())) { - result.addError( - new MismatchDocumentContractIdAndDataContractError(rawDocument, dataContract), - ); - } - return result; } diff --git a/lib/errors/CompatibleProtocolVersionIsNotDefinedError.js b/lib/errors/CompatibleProtocolVersionIsNotDefinedError.js index b6441b4fe..4651ee8ce 100644 --- a/lib/errors/CompatibleProtocolVersionIsNotDefinedError.js +++ b/lib/errors/CompatibleProtocolVersionIsNotDefinedError.js @@ -1,18 +1,13 @@ -class CompatibleProtocolVersionIsNotDefinedError extends Error { +const DPPError = require('./DPPError'); + +class CompatibleProtocolVersionIsNotDefinedError extends DPPError { /** * @param {number} currentProtocolVersion */ constructor(currentProtocolVersion) { - super(); - - this.name = this.constructor.name; - this.message = `Compatible version is not defined for protocol version ${currentProtocolVersion}`; + super(`Compatible version is not defined for protocol version ${currentProtocolVersion}`); this.currentProtocolVersion = currentProtocolVersion; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/errors/ConsensusError.js b/lib/errors/DPPError.js similarity index 78% rename from lib/errors/ConsensusError.js rename to lib/errors/DPPError.js index 7a47701ae..07b73e738 100644 --- a/lib/errors/ConsensusError.js +++ b/lib/errors/DPPError.js @@ -1,4 +1,4 @@ -class ConsensusError extends Error { +class DPPError extends Error { /** * @param {string} message */ @@ -14,4 +14,4 @@ class ConsensusError extends Error { } } -module.exports = ConsensusError; +module.exports = DPPError; diff --git a/lib/errors/DataContractNotPresentError.js b/lib/errors/DataContractNotPresentError.js index e1cd2dd53..7e1dd51ef 100644 --- a/lib/errors/DataContractNotPresentError.js +++ b/lib/errors/DataContractNotPresentError.js @@ -1,11 +1,11 @@ -const ConsensusError = require('./ConsensusError'); +const DPPError = require('./DPPError'); -class DataContractNotPresentError extends ConsensusError { +class DataContractNotPresentError extends DPPError { /** - * @param {Identifier|Buffer} dataContractId + * @param {Identifier} dataContractId */ constructor(dataContractId) { - super('Data Contract is not present with Data Contract ID specified in ST Packet'); + super('Data Contract is not present'); this.dataContractId = dataContractId; } @@ -13,7 +13,7 @@ class DataContractNotPresentError extends ConsensusError { /** * Get Data Contract ID * - * @return {Buffer} + * @return {Identifier} */ getDataContractId() { return this.dataContractId; diff --git a/lib/errors/IdentityAssetLockProofMismatchError.js b/lib/errors/IdentityAssetLockProofMismatchError.js deleted file mode 100644 index cd4dd9e5d..000000000 --- a/lib/errors/IdentityAssetLockProofMismatchError.js +++ /dev/null @@ -1,9 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class IdentityAssetLockProofMismatchError extends ConsensusError { - constructor() { - super('Asset lock proof mismatch'); - } -} - -module.exports = IdentityAssetLockProofMismatchError; diff --git a/lib/errors/IdentityAssetLockProofOutPointIsAlreadyUsedError.js b/lib/errors/IdentityAssetLockProofOutPointIsAlreadyUsedError.js deleted file mode 100644 index 2927afdd1..000000000 --- a/lib/errors/IdentityAssetLockProofOutPointIsAlreadyUsedError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class IdentityAssetLockProofOutPointIsAlreadyUsedError extends ConsensusError { - /** - * - * @param {Buffer} outPoint - */ - constructor(outPoint) { - super('Asset lock proof outPoint was already used'); - - this.outPoint = outPoint; - } - - /** - * - * @returns {Buffer} - */ - getOutPoint() { - return this.outPoint; - } -} - -module.exports = IdentityAssetLockProofOutPointIsAlreadyUsedError; diff --git a/lib/errors/IdentityAssetLockProofTransactionOutPointIsAlreadyUsedError.js b/lib/errors/IdentityAssetLockProofTransactionOutPointIsAlreadyUsedError.js deleted file mode 100644 index 408edd436..000000000 --- a/lib/errors/IdentityAssetLockProofTransactionOutPointIsAlreadyUsedError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class IdentityAssetLockProofTransactionOutPointIsAlreadyUsedError extends ConsensusError { - /** - * - * @param {Buffer} outPoint - */ - constructor(outPoint) { - super('Asset lock proof transaction outPoint was already used'); - - this.outPoint = outPoint; - } - - /** - * - * @returns {Buffer} - */ - getOutPoint() { - return this.outPoint; - } -} - -module.exports = IdentityAssetLockProofTransactionOutPointIsAlreadyUsedError; diff --git a/lib/errors/InvalidCompoundIndexError.js b/lib/errors/InvalidCompoundIndexError.js deleted file mode 100644 index 64e200532..000000000 --- a/lib/errors/InvalidCompoundIndexError.js +++ /dev/null @@ -1,33 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class InvalidCompoundIndexError extends ConsensusError { - /** - * - * @param {string} documentType - * @param {Object} indexDefinition - */ - constructor(documentType, indexDefinition) { - super('All or none of unique compound index properties must be set'); - - this.documentType = documentType; - this.indexDefinition = indexDefinition; - } - - /** - * - * @return {Object} - */ - getIndexDefinition() { - return this.indexDefinition; - } - - /** - * - * @return {string} - */ - getDocumentType() { - return this.documentType; - } -} - -module.exports = InvalidCompoundIndexError; diff --git a/lib/errors/InvalidDataContractIdError.js b/lib/errors/InvalidDataContractIdError.js deleted file mode 100644 index e60ace63b..000000000 --- a/lib/errors/InvalidDataContractIdError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class InvalidDataContractIdError extends ConsensusError { - /** - * @param {RawDataContract} rawDataContract - */ - constructor(rawDataContract) { - super('Invalid DataContract id'); - - this.rawDataContract = rawDataContract; - } - - /** - * Get raw DataContract - * - * @return {RawDataContract} - */ - getRawDataContract() { - return this.rawDataContract; - } -} - -module.exports = InvalidDataContractIdError; diff --git a/lib/errors/InvalidDocumentEntropyError.js b/lib/errors/InvalidDocumentEntropyError.js deleted file mode 100644 index 939ac1701..000000000 --- a/lib/errors/InvalidDocumentEntropyError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class InvalidDocumentEntropyError extends ConsensusError { - /** - * @param {RawDocument} rawDocument - */ - constructor(rawDocument) { - super('Invalid Document entropy'); - - this.rawDocument = rawDocument; - } - - /** - * Get raw Document - * - * @return {RawDocument} - */ - getRawDocument() { - return this.rawDocument; - } -} - -module.exports = InvalidDocumentEntropyError; diff --git a/lib/errors/InvalidDocumentIdError.js b/lib/errors/InvalidDocumentIdError.js deleted file mode 100644 index 8c0fd91de..000000000 --- a/lib/errors/InvalidDocumentIdError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class InvalidDocumentIdError extends ConsensusError { - /** - * @param {RawDocument} rawDocument - */ - constructor(rawDocument) { - super('Invalid Document ID'); - - this.rawDocument = rawDocument; - } - - /** - * Get raw Document - * - * @return {RawDocument} - */ - getRawDocument() { - return this.rawDocument; - } -} - -module.exports = InvalidDocumentIdError; diff --git a/lib/errors/InvalidDocumentTypeError.js b/lib/errors/InvalidDocumentTypeError.js index 910228f38..38f6f104b 100644 --- a/lib/errors/InvalidDocumentTypeError.js +++ b/lib/errors/InvalidDocumentTypeError.js @@ -1,21 +1,15 @@ -const ConsensusError = require('./ConsensusError'); +const DPPError = require('./DPPError'); -class InvalidDocumentTypeError extends ConsensusError { +class InvalidDocumentTypeError extends DPPError { /** * @param {string} type * @param {DataContract} dataContract */ constructor(type, dataContract) { - super(`Contract doesn't contain type ${type}`); - - this.name = this.constructor.name; + super(`Data Contract doesn't define document with type ${type}`); this.type = type; this.dataContract = dataContract; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/errors/InvalidIdentityAssetLockProofCoreHeightError.js b/lib/errors/InvalidIdentityAssetLockProofCoreHeightError.js deleted file mode 100644 index 45c82e727..000000000 --- a/lib/errors/InvalidIdentityAssetLockProofCoreHeightError.js +++ /dev/null @@ -1,33 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class InvalidIdentityAssetLockProofCoreHeightError extends ConsensusError { - /** - * - * @param {number} proofCoreChainLockedHeight - * @param {number} currentCoreChainLockedHeight - */ - constructor(proofCoreChainLockedHeight, currentCoreChainLockedHeight) { - super(`Asset Lock proof core height ${proofCoreChainLockedHeight} is greater than current consensus core height ${currentCoreChainLockedHeight}.`); - - this.proofCoreChainLockedHeight = proofCoreChainLockedHeight; - this.currentCoreChainLockedHeight = currentCoreChainLockedHeight; - } - - /** - * - * @returns {number} - */ - getProofCoreChainLockedHeight() { - return this.proofCoreChainLockedHeight; - } - - /** - * - * @returns {number} - */ - getCurrentCoreChainLockedHeight() { - return this.currentCoreChainLockedHeight; - } -} - -module.exports = InvalidIdentityAssetLockProofCoreHeightError; diff --git a/lib/errors/InvalidIdentityAssetLockProofSignatureError.js b/lib/errors/InvalidIdentityAssetLockProofSignatureError.js deleted file mode 100644 index 3b5305c30..000000000 --- a/lib/errors/InvalidIdentityAssetLockProofSignatureError.js +++ /dev/null @@ -1,9 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class InvalidIdentityAssetLockProofSignatureError extends ConsensusError { - constructor() { - super('Invalid Asset lock proof signature'); - } -} - -module.exports = InvalidIdentityAssetLockProofSignatureError; diff --git a/lib/errors/InvalidRegistrationTransactionTypeError.js b/lib/errors/InvalidRegistrationTransactionTypeError.js deleted file mode 100644 index b78d2942c..000000000 --- a/lib/errors/InvalidRegistrationTransactionTypeError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class InvalidRegistrationTransactionTypeError extends ConsensusError { - /** - * @param {Object} rawTransaction - */ - constructor(rawTransaction) { - super(`Expected registration transaction but received transaction with type ${rawTransaction.type}.`); - - this.rawTransaction = rawTransaction; - } - - /** - * Get raw transaction - * - * @return {Object} - */ - getRawTransaction() { - return this.rawTransaction; - } -} - -module.exports = InvalidRegistrationTransactionTypeError; diff --git a/lib/errors/MismatchDocumentContractIdAndDataContractError.js b/lib/errors/MismatchDocumentContractIdAndDataContractError.js deleted file mode 100644 index b4f5d9009..000000000 --- a/lib/errors/MismatchDocumentContractIdAndDataContractError.js +++ /dev/null @@ -1,34 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class MismatchDocumentContractIdAndDataContractError extends ConsensusError { - /** - * @param {RawDocument} rawDocument - * @param {DataContract} dataContract - */ - constructor(rawDocument, dataContract) { - super('Mismatch Document contract ID and Data Contract'); - - this.dataContract = dataContract; - this.rawDocument = rawDocument; - } - - /** - * Get raw Document - * - * @return {RawDocument} - */ - getRawDocument() { - return this.rawDocument; - } - - /** - * Get Data Contract - * - * @return {DataContract} - */ - getDataContract() { - return this.dataContract; - } -} - -module.exports = MismatchDocumentContractIdAndDataContractError; diff --git a/lib/errors/MissingOptionError.js b/lib/errors/MissingOptionError.js index 16adf8277..a25b2885a 100644 --- a/lib/errors/MissingOptionError.js +++ b/lib/errors/MissingOptionError.js @@ -1,18 +1,14 @@ -class MissingOptionError extends Error { +const DPPError = require('./DPPError'); + +class MissingOptionError extends DPPError { /** * @param {string} optionName * @param {string} message */ constructor(optionName, message) { - super(); + super(message); - this.name = this.constructor.name; this.optionName = optionName; - this.message = message; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/errors/STContainsDocumentsForDifferentDataContractsError.js b/lib/errors/STContainsDocumentsForDifferentDataContractsError.js deleted file mode 100644 index d251dd337..000000000 --- a/lib/errors/STContainsDocumentsForDifferentDataContractsError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class STContainsDocumentsForDifferentDataContractsError extends ConsensusError { - /** - * @param {RawDocument[]} rawDocuments - */ - constructor(rawDocuments) { - super('State Transition contains documents for different Data Contracts'); - - this.rawDocuments = rawDocuments; - } - - /** - * Get documents from different users - * - * @return {RawDocument[]} - */ - getRawDocuments() { - return this.rawDocuments; - } -} - -module.exports = STContainsDocumentsForDifferentDataContractsError; diff --git a/lib/errors/STContainsDocumentsFromDifferentUsersError.js b/lib/errors/STContainsDocumentsFromDifferentUsersError.js deleted file mode 100644 index e21f2385a..000000000 --- a/lib/errors/STContainsDocumentsFromDifferentUsersError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class STContainsDocumentsFromDifferentUsersError extends ConsensusError { - /** - * @param {RawDocument[]} rawDocuments - */ - constructor(rawDocuments) { - super('State Transition contains documents from different users'); - - this.rawDocuments = rawDocuments; - } - - /** - * Get documents from different users - * - * @return {RawDocument[]} - */ - getRawDocuments() { - return this.rawDocuments; - } -} - -module.exports = STContainsDocumentsFromDifferentUsersError; diff --git a/lib/errors/STDuplicateDocumentsError.js b/lib/errors/STDuplicateDocumentsError.js deleted file mode 100644 index 082ae750f..000000000 --- a/lib/errors/STDuplicateDocumentsError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class STDuplicateDocumentsError extends ConsensusError { - /** - * @param {RawDocument[]} duplicatedDocuments - */ - constructor(duplicatedDocuments) { - super('Duplicated Document in State Transition'); - - this.duplicatedDocuments = duplicatedDocuments; - } - - /** - * Get Duplicated Documents - * - * @return {RawDocument[]} - */ - getDuplicatedDocuments() { - return this.duplicatedDocuments; - } -} - -module.exports = STDuplicateDocumentsError; diff --git a/lib/errors/UnconfirmedUserError.js b/lib/errors/UnconfirmedUserError.js deleted file mode 100644 index 143bc667e..000000000 --- a/lib/errors/UnconfirmedUserError.js +++ /dev/null @@ -1,23 +0,0 @@ -const ConsensusError = require('./ConsensusError'); - -class UnconfirmedUserError extends ConsensusError { - /** - * @param {Object} registrationTransaction - */ - constructor(registrationTransaction) { - super('User has less than 6 confirmation'); - - this.registrationTransaction = registrationTransaction; - } - - /** - * Get registration transaction - * - * @return {Object} - */ - getRegistrationTransaction() { - return this.registrationTransaction; - } -} - -module.exports = UnconfirmedUserError; diff --git a/lib/errors/consensus/ConsensusError.js b/lib/errors/consensus/ConsensusError.js new file mode 100644 index 000000000..6827d036c --- /dev/null +++ b/lib/errors/consensus/ConsensusError.js @@ -0,0 +1,24 @@ +const DPPError = require('../DPPError'); + +class ConsensusError extends DPPError { + /** + * @return {number} + */ + getCode() { + // Mitigate recursive dependency + + // eslint-disable-next-line global-require + const codes = require('./codes'); + + const code = Object.keys(codes) + .find((c) => this.constructor === codes[c]); + + if (!code) { + throw new Error('Error code is not defined'); + } + + return parseInt(code, 10); + } +} + +module.exports = ConsensusError; diff --git a/lib/errors/consensus/basic/AbstractBasicError.js b/lib/errors/consensus/basic/AbstractBasicError.js new file mode 100644 index 000000000..10284f130 --- /dev/null +++ b/lib/errors/consensus/basic/AbstractBasicError.js @@ -0,0 +1,10 @@ +const ConsensusError = require('../ConsensusError'); + +/** + * @abstract + */ +class AbstractBasicError extends ConsensusError { + +} + +module.exports = AbstractBasicError; diff --git a/lib/errors/InvalidIdentifierError.js b/lib/errors/consensus/basic/InvalidIdentifierError.js similarity index 82% rename from lib/errors/InvalidIdentifierError.js rename to lib/errors/consensus/basic/InvalidIdentifierError.js index 9bbf733d6..b11002872 100644 --- a/lib/errors/InvalidIdentifierError.js +++ b/lib/errors/consensus/basic/InvalidIdentifierError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('./AbstractBasicError'); -class InvalidIdentifierError extends ConsensusError { +class InvalidIdentifierError extends AbstractBasicError { /** * @param {string} identifierName * @param {IdentifierError} error diff --git a/lib/errors/JsonSchemaError.js b/lib/errors/consensus/basic/JsonSchemaError.js similarity index 52% rename from lib/errors/JsonSchemaError.js rename to lib/errors/consensus/basic/JsonSchemaError.js index d0d78df14..b526f0398 100644 --- a/lib/errors/JsonSchemaError.js +++ b/lib/errors/consensus/basic/JsonSchemaError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('./AbstractBasicError'); -class JsonSchemaError extends ConsensusError { +class JsonSchemaError extends AbstractBasicError { constructor(error) { super(error.message); diff --git a/lib/errors/AbstractIndexError.js b/lib/errors/consensus/basic/dataContract/AbstractIndexError.js similarity index 87% rename from lib/errors/AbstractIndexError.js rename to lib/errors/consensus/basic/dataContract/AbstractIndexError.js index 174eeb0b6..3e3fe86e4 100644 --- a/lib/errors/AbstractIndexError.js +++ b/lib/errors/consensus/basic/dataContract/AbstractIndexError.js @@ -1,10 +1,10 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); /** * @class * @abstract */ -class AbstractIndexError extends ConsensusError { +class AbstractIndexError extends AbstractBasicError { /** * @param {string} message * @param {RawDataContract} rawDataContract diff --git a/lib/errors/DataContractMaxDepthExceedError.js b/lib/errors/consensus/basic/dataContract/DataContractMaxDepthExceedError.js similarity index 63% rename from lib/errors/DataContractMaxDepthExceedError.js rename to lib/errors/consensus/basic/dataContract/DataContractMaxDepthExceedError.js index 08b43cd64..e8874294c 100644 --- a/lib/errors/DataContractMaxDepthExceedError.js +++ b/lib/errors/consensus/basic/dataContract/DataContractMaxDepthExceedError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class DataContractMaxDepthExceedError extends ConsensusError { +class DataContractMaxDepthExceedError extends AbstractBasicError { constructor() { super(`JSON Schema depth is greater than ${DataContractMaxDepthExceedError.MAX_DEPTH}`); } diff --git a/lib/errors/DuplicateIndexError.js b/lib/errors/consensus/basic/dataContract/DuplicateIndexError.js similarity index 100% rename from lib/errors/DuplicateIndexError.js rename to lib/errors/consensus/basic/dataContract/DuplicateIndexError.js diff --git a/lib/errors/consensus/basic/dataContract/InvalidCompoundIndexError.js b/lib/errors/consensus/basic/dataContract/InvalidCompoundIndexError.js new file mode 100644 index 000000000..20f6d317f --- /dev/null +++ b/lib/errors/consensus/basic/dataContract/InvalidCompoundIndexError.js @@ -0,0 +1,20 @@ +const AbstractIndexError = require('./AbstractIndexError'); + +class InvalidCompoundIndexError extends AbstractIndexError { + /** + * + * @param {RawDataContract} rawDataContract + * @param {string} documentType + * @param {Object} indexDefinition + */ + constructor(rawDataContract, documentType, indexDefinition) { + super( + 'All or none of unique compound index properties must be set', + rawDataContract, + documentType, + indexDefinition, + ); + } +} + +module.exports = InvalidCompoundIndexError; diff --git a/lib/errors/consensus/basic/dataContract/InvalidDataContractIdError.js b/lib/errors/consensus/basic/dataContract/InvalidDataContractIdError.js new file mode 100644 index 000000000..8e459e360 --- /dev/null +++ b/lib/errors/consensus/basic/dataContract/InvalidDataContractIdError.js @@ -0,0 +1,30 @@ +const AbstractBasicError = require('../AbstractBasicError'); + +class InvalidDataContractIdError extends AbstractBasicError { + /** + * @param {Buffer} expectedId + * @param {Buffer} invalidId + */ + constructor(expectedId, invalidId) { + super(`DataContract ID must be ${expectedId.toString('hex')}, got ${invalidId.toString('hex')}`); + + this.expectedId = expectedId; + this.invalidId = invalidId; + } + + /** + * @return {Buffer} + */ + getExpectedId() { + return this.expectedId; + } + + /** + * @return {Buffer} + */ + getInvalidId() { + return this.invalidId; + } +} + +module.exports = InvalidDataContractIdError; diff --git a/lib/errors/InvalidIndexPropertyTypeError.js b/lib/errors/consensus/basic/dataContract/InvalidIndexPropertyTypeError.js similarity index 100% rename from lib/errors/InvalidIndexPropertyTypeError.js rename to lib/errors/consensus/basic/dataContract/InvalidIndexPropertyTypeError.js diff --git a/lib/errors/InvalidIndexedPropertyConstraintError.js b/lib/errors/consensus/basic/dataContract/InvalidIndexedPropertyConstraintError.js similarity index 100% rename from lib/errors/InvalidIndexedPropertyConstraintError.js rename to lib/errors/consensus/basic/dataContract/InvalidIndexedPropertyConstraintError.js diff --git a/lib/errors/SystemPropertyIndexAlreadyPresentError.js b/lib/errors/consensus/basic/dataContract/SystemPropertyIndexAlreadyPresentError.js similarity index 100% rename from lib/errors/SystemPropertyIndexAlreadyPresentError.js rename to lib/errors/consensus/basic/dataContract/SystemPropertyIndexAlreadyPresentError.js diff --git a/lib/errors/UndefinedIndexPropertyError.js b/lib/errors/consensus/basic/dataContract/UndefinedIndexPropertyError.js similarity index 100% rename from lib/errors/UndefinedIndexPropertyError.js rename to lib/errors/consensus/basic/dataContract/UndefinedIndexPropertyError.js diff --git a/lib/errors/UniqueIndicesLimitReachedError.js b/lib/errors/consensus/basic/dataContract/UniqueIndicesLimitReachedError.js similarity index 100% rename from lib/errors/UniqueIndicesLimitReachedError.js rename to lib/errors/consensus/basic/dataContract/UniqueIndicesLimitReachedError.js diff --git a/lib/errors/IncompatibleProtocolVersionError.js b/lib/errors/consensus/basic/decode/IncompatibleProtocolVersionError.js similarity index 94% rename from lib/errors/IncompatibleProtocolVersionError.js rename to lib/errors/consensus/basic/decode/IncompatibleProtocolVersionError.js index 7983d1862..e6b52ff1e 100644 --- a/lib/errors/IncompatibleProtocolVersionError.js +++ b/lib/errors/consensus/basic/decode/IncompatibleProtocolVersionError.js @@ -1,4 +1,4 @@ -const ConsensusError = require('./ConsensusError'); +const ConsensusError = require('../../ConsensusError'); class IncompatibleProtocolVersionError extends ConsensusError { /** diff --git a/lib/errors/ProtocolVersionParsingError.js b/lib/errors/consensus/basic/decode/ProtocolVersionParsingError.js similarity index 91% rename from lib/errors/ProtocolVersionParsingError.js rename to lib/errors/consensus/basic/decode/ProtocolVersionParsingError.js index e53de1def..aabc7cb6f 100644 --- a/lib/errors/ProtocolVersionParsingError.js +++ b/lib/errors/consensus/basic/decode/ProtocolVersionParsingError.js @@ -1,4 +1,4 @@ -const ConsensusError = require('./ConsensusError'); +const ConsensusError = require('../../ConsensusError'); class ProtocolVersionParsingError extends ConsensusError { /** diff --git a/lib/errors/SerializedObjectParsingError.js b/lib/errors/consensus/basic/decode/SerializedObjectParsingError.js similarity index 91% rename from lib/errors/SerializedObjectParsingError.js rename to lib/errors/consensus/basic/decode/SerializedObjectParsingError.js index 25c857bf5..751a12da6 100644 --- a/lib/errors/SerializedObjectParsingError.js +++ b/lib/errors/consensus/basic/decode/SerializedObjectParsingError.js @@ -1,4 +1,4 @@ -const ConsensusError = require('./ConsensusError'); +const ConsensusError = require('../../ConsensusError'); class SerializedObjectParsingError extends ConsensusError { /** diff --git a/lib/errors/UnsupportedProtocolVersionError.js b/lib/errors/consensus/basic/decode/UnsupportedProtocolVersionError.js similarity index 94% rename from lib/errors/UnsupportedProtocolVersionError.js rename to lib/errors/consensus/basic/decode/UnsupportedProtocolVersionError.js index 8492ba0a8..2438abdd1 100644 --- a/lib/errors/UnsupportedProtocolVersionError.js +++ b/lib/errors/consensus/basic/decode/UnsupportedProtocolVersionError.js @@ -1,4 +1,4 @@ -const ConsensusError = require('./ConsensusError'); +const ConsensusError = require('../../ConsensusError'); class UnsupportedProtocolVersionError extends ConsensusError { /** diff --git a/lib/errors/consensus/basic/document/DataContractNotPresentError.js b/lib/errors/consensus/basic/document/DataContractNotPresentError.js new file mode 100644 index 000000000..a54158f60 --- /dev/null +++ b/lib/errors/consensus/basic/document/DataContractNotPresentError.js @@ -0,0 +1,23 @@ +const AbstractBasicError = require('../AbstractBasicError'); + +class DataContractNotPresentError extends AbstractBasicError { + /** + * @param {Identifier|Buffer} dataContractId + */ + constructor(dataContractId) { + super('Data Contract with specified ID is not present'); + + this.dataContractId = dataContractId; + } + + /** + * Get Data Contract ID + * + * @return {Identifier|Buffer} + */ + getDataContractId() { + return this.dataContractId; + } +} + +module.exports = DataContractNotPresentError; diff --git a/lib/errors/DuplicateDocumentTransitionsError.js b/lib/errors/consensus/basic/document/DuplicateDocumentTransitionsError.js similarity index 83% rename from lib/errors/DuplicateDocumentTransitionsError.js rename to lib/errors/consensus/basic/document/DuplicateDocumentTransitionsError.js index 8b566e5cb..b92ebca6f 100644 --- a/lib/errors/DuplicateDocumentTransitionsError.js +++ b/lib/errors/consensus/basic/document/DuplicateDocumentTransitionsError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class DuplicateDocumentTransitionsError extends ConsensusError { +class DuplicateDocumentTransitionsError extends AbstractBasicError { /** * @param { * Array. diff --git a/lib/errors/InconsistentCompoundIndexDataError.js b/lib/errors/consensus/basic/document/InconsistentCompoundIndexDataError.js similarity index 80% rename from lib/errors/InconsistentCompoundIndexDataError.js rename to lib/errors/consensus/basic/document/InconsistentCompoundIndexDataError.js index ebe282f16..f223436bf 100644 --- a/lib/errors/InconsistentCompoundIndexDataError.js +++ b/lib/errors/consensus/basic/document/InconsistentCompoundIndexDataError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InconsistentCompoundIndexDataError extends ConsensusError { +class InconsistentCompoundIndexDataError extends AbstractBasicError { /** * * @param {string} documentType diff --git a/lib/errors/InvalidDocumentTransitionActionError.js b/lib/errors/consensus/basic/document/InvalidDocumentTransitionActionError.js similarity index 69% rename from lib/errors/InvalidDocumentTransitionActionError.js rename to lib/errors/consensus/basic/document/InvalidDocumentTransitionActionError.js index c4506b985..9c6c6428a 100644 --- a/lib/errors/InvalidDocumentTransitionActionError.js +++ b/lib/errors/consensus/basic/document/InvalidDocumentTransitionActionError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InvalidDocumentTransitionActionError extends ConsensusError { +class InvalidDocumentTransitionActionError extends AbstractBasicError { /** * @param {*} action * @param {Object} rawDocumentTransition @@ -8,14 +8,8 @@ class InvalidDocumentTransitionActionError extends ConsensusError { constructor(action, rawDocumentTransition) { super(`Document transition action ${action} is not supported`); - this.name = this.constructor.name; - this.action = action; this.rawDocumentTransition = rawDocumentTransition; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/errors/InvalidDocumentTransitionIdError.js b/lib/errors/consensus/basic/document/InvalidDocumentTransitionIdError.js similarity index 81% rename from lib/errors/InvalidDocumentTransitionIdError.js rename to lib/errors/consensus/basic/document/InvalidDocumentTransitionIdError.js index 7a7401616..010ec359d 100644 --- a/lib/errors/InvalidDocumentTransitionIdError.js +++ b/lib/errors/consensus/basic/document/InvalidDocumentTransitionIdError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InvalidDocumentTransitionIdError extends ConsensusError { +class InvalidDocumentTransitionIdError extends AbstractBasicError { /** * @param { * RawDocumentCreateTransition|RawDocumentReplaceTransition|RawDocumentDeleteTransition diff --git a/lib/errors/consensus/basic/document/InvalidDocumentTypeError.js b/lib/errors/consensus/basic/document/InvalidDocumentTypeError.js new file mode 100644 index 000000000..8e40c5d7e --- /dev/null +++ b/lib/errors/consensus/basic/document/InvalidDocumentTypeError.js @@ -0,0 +1,34 @@ +const AbstractBasicError = require('../AbstractBasicError'); + +class InvalidDocumentTypeError extends AbstractBasicError { + /** + * @param {string} type + * @param {DataContract} dataContract + */ + constructor(type, dataContract) { + super(`Data Contract doesn't define document with type ${type}`); + + this.type = type; + this.dataContract = dataContract; + } + + /** + * Get type + * + * @return {string} + */ + getType() { + return this.type; + } + + /** + * Get Data Contract + * + * @return {DataContract} + */ + getDataContract() { + return this.dataContract; + } +} + +module.exports = InvalidDocumentTypeError; diff --git a/lib/errors/MissingDataContractIdError.js b/lib/errors/consensus/basic/document/MissingDataContractIdError.js similarity index 62% rename from lib/errors/MissingDataContractIdError.js rename to lib/errors/consensus/basic/document/MissingDataContractIdError.js index 3a9b9c96b..cfad5a08e 100644 --- a/lib/errors/MissingDataContractIdError.js +++ b/lib/errors/consensus/basic/document/MissingDataContractIdError.js @@ -1,6 +1,9 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class MissingDataContractIdError extends ConsensusError { +class MissingDataContractIdError extends AbstractBasicError { + /** + * @param {RawDocument} rawDocument + */ constructor(rawDocument) { super('$dataContractId is not present'); diff --git a/lib/errors/MissingDocumentTransitionActionError.js b/lib/errors/consensus/basic/document/MissingDocumentTransitionActionError.js similarity index 75% rename from lib/errors/MissingDocumentTransitionActionError.js rename to lib/errors/consensus/basic/document/MissingDocumentTransitionActionError.js index afd7c9485..5126e8835 100644 --- a/lib/errors/MissingDocumentTransitionActionError.js +++ b/lib/errors/consensus/basic/document/MissingDocumentTransitionActionError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class MissingDocumentTransitionActionError extends ConsensusError { +class MissingDocumentTransitionActionError extends AbstractBasicError { /** * @param {AbstractDocumentTransition} rawDocumentTransition */ diff --git a/lib/errors/consensus/basic/document/MissingDocumentTransitionTypeError.js b/lib/errors/consensus/basic/document/MissingDocumentTransitionTypeError.js new file mode 100644 index 000000000..19f3c108e --- /dev/null +++ b/lib/errors/consensus/basic/document/MissingDocumentTransitionTypeError.js @@ -0,0 +1,31 @@ +const AbstractBasicError = require('../AbstractBasicError'); + +class MissingDocumentTransitionTypeError extends AbstractBasicError { + /** + * @param { + * RawDocumentCreateTransition| + * RawDocumentReplaceTransition| + * RawDocumentDeleteTransition + * } rawDocumentTransition + */ + constructor(rawDocumentTransition) { + super('$type is not present'); + + this.rawDocumentTransition = rawDocumentTransition; + } + + /** + * Get Raw Document Transition + * + * @return { + * RawDocumentCreateTransition| + * RawDocumentReplaceTransition| + * RawDocumentDeleteTransition + * } + */ + getRawDocument() { + return this.rawDocumentTransition; + } +} + +module.exports = MissingDocumentTransitionTypeError; diff --git a/lib/errors/MissingDocumentTypeError.js b/lib/errors/consensus/basic/document/MissingDocumentTypeError.js similarity index 61% rename from lib/errors/MissingDocumentTypeError.js rename to lib/errors/consensus/basic/document/MissingDocumentTypeError.js index 0b0aa5200..713c89a52 100644 --- a/lib/errors/MissingDocumentTypeError.js +++ b/lib/errors/consensus/basic/document/MissingDocumentTypeError.js @@ -1,6 +1,9 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class MissingDocumentTypeError extends ConsensusError { +class MissingDocumentTypeError extends AbstractBasicError { + /** + * @param {RawDocument} rawDocument + */ constructor(rawDocument) { super('$type is not present'); diff --git a/lib/errors/DuplicatedIdentityPublicKeyError.js b/lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyError.js similarity index 74% rename from lib/errors/DuplicatedIdentityPublicKeyError.js rename to lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyError.js index 48c571d65..8a9b27b29 100644 --- a/lib/errors/DuplicatedIdentityPublicKeyError.js +++ b/lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class DuplicatedIdentityPublicKeyError extends ConsensusError { +class DuplicatedIdentityPublicKeyError extends AbstractBasicError { /** * @param {RawIdentityPublicKey[]} rawPublicKeys */ diff --git a/lib/errors/DuplicatedIdentityPublicKeyIdError.js b/lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyIdError.js similarity index 74% rename from lib/errors/DuplicatedIdentityPublicKeyIdError.js rename to lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyIdError.js index 86b22cd6b..a1a92809d 100644 --- a/lib/errors/DuplicatedIdentityPublicKeyIdError.js +++ b/lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyIdError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class DuplicatedIdentityPublicKeyIdError extends ConsensusError { +class DuplicatedIdentityPublicKeyIdError extends AbstractBasicError { /** * @param {RawIdentityPublicKey[]} rawPublicKeys */ diff --git a/lib/errors/consensus/basic/identity/IdentityAssetLockProofMismatchError.js b/lib/errors/consensus/basic/identity/IdentityAssetLockProofMismatchError.js new file mode 100644 index 000000000..4cfaa8c0a --- /dev/null +++ b/lib/errors/consensus/basic/identity/IdentityAssetLockProofMismatchError.js @@ -0,0 +1,9 @@ +const AbstractBasicError = require('../AbstractBasicError'); + +class IdentityAssetLockProofMismatchError extends AbstractBasicError { + constructor() { + super('Asset lock proof mismatch'); + } +} + +module.exports = IdentityAssetLockProofMismatchError; diff --git a/lib/errors/IdentityAssetLockTransactionIsNotFoundError.js b/lib/errors/consensus/basic/identity/IdentityAssetLockTransactionIsNotFoundError.js similarity index 70% rename from lib/errors/IdentityAssetLockTransactionIsNotFoundError.js rename to lib/errors/consensus/basic/identity/IdentityAssetLockTransactionIsNotFoundError.js index 5d4c475a3..2d30c0d07 100644 --- a/lib/errors/IdentityAssetLockTransactionIsNotFoundError.js +++ b/lib/errors/consensus/basic/identity/IdentityAssetLockTransactionIsNotFoundError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class IdentityAssetLockTransactionIsNotFoundError extends ConsensusError { +class IdentityAssetLockTransactionIsNotFoundError extends AbstractBasicError { /** * * @param {Buffer} outPoint diff --git a/lib/errors/IdentityAssetLockTransactionOutPointAlreadyExistsError.js b/lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutPointAlreadyExistsError.js similarity index 81% rename from lib/errors/IdentityAssetLockTransactionOutPointAlreadyExistsError.js rename to lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutPointAlreadyExistsError.js index 95c234a67..b0154a656 100644 --- a/lib/errors/IdentityAssetLockTransactionOutPointAlreadyExistsError.js +++ b/lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutPointAlreadyExistsError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class IdentityAssetLockTransactionOutPointAlreadyExistsError extends ConsensusError { +class IdentityAssetLockTransactionOutPointAlreadyExistsError extends AbstractBasicError { /** * @param {Buffer} outPoint */ diff --git a/lib/errors/IdentityAssetLockTransactionOutputNotFoundError.js b/lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutputNotFoundError.js similarity index 71% rename from lib/errors/IdentityAssetLockTransactionOutputNotFoundError.js rename to lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutputNotFoundError.js index 81fe36a89..d54086bb1 100644 --- a/lib/errors/IdentityAssetLockTransactionOutputNotFoundError.js +++ b/lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutputNotFoundError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class IdentityAssetLockTransactionOutputNotFoundError extends ConsensusError { +class IdentityAssetLockTransactionOutputNotFoundError extends AbstractBasicError { /** * @param {number} outputIndex */ diff --git a/lib/errors/InvalidAssetLockProofCoreChainHeightError.js b/lib/errors/consensus/basic/identity/InvalidAssetLockProofCoreChainHeightError.js similarity index 79% rename from lib/errors/InvalidAssetLockProofCoreChainHeightError.js rename to lib/errors/consensus/basic/identity/InvalidAssetLockProofCoreChainHeightError.js index ab859f7fb..ab31da194 100644 --- a/lib/errors/InvalidAssetLockProofCoreChainHeightError.js +++ b/lib/errors/consensus/basic/identity/InvalidAssetLockProofCoreChainHeightError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InvalidIdentityAssetLockProofCoreHeightError extends ConsensusError { +class InvalidAssetLockProofCoreChainHeightError extends AbstractBasicError { /** * * @param {number} proofCoreChainLockedHeight @@ -30,4 +30,4 @@ class InvalidIdentityAssetLockProofCoreHeightError extends ConsensusError { } } -module.exports = InvalidIdentityAssetLockProofCoreHeightError; +module.exports = InvalidAssetLockProofCoreChainHeightError; diff --git a/lib/errors/InvalidAssetLockProofTransactionHeightError.js b/lib/errors/consensus/basic/identity/InvalidAssetLockProofTransactionHeightError.js similarity index 83% rename from lib/errors/InvalidAssetLockProofTransactionHeightError.js rename to lib/errors/consensus/basic/identity/InvalidAssetLockProofTransactionHeightError.js index 76f564c62..510fe98b3 100644 --- a/lib/errors/InvalidAssetLockProofTransactionHeightError.js +++ b/lib/errors/consensus/basic/identity/InvalidAssetLockProofTransactionHeightError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InvalidAssetLockProofTransactionHeightError extends ConsensusError { +class InvalidAssetLockProofTransactionHeightError extends AbstractBasicError { /** * * @param {number} proofCoreChainLockedHeight diff --git a/lib/errors/InvalidIdentityAssetLockProofError.js b/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockProofError.js similarity index 57% rename from lib/errors/InvalidIdentityAssetLockProofError.js rename to lib/errors/consensus/basic/identity/InvalidIdentityAssetLockProofError.js index e28674c89..a43e6ec2a 100644 --- a/lib/errors/InvalidIdentityAssetLockProofError.js +++ b/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockProofError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InvalidIdentityAssetLockProofError extends ConsensusError { +class InvalidIdentityAssetLockProofError extends AbstractBasicError { /** * @param {string} message */ diff --git a/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockProofSignatureError.js b/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockProofSignatureError.js new file mode 100644 index 000000000..c97e96293 --- /dev/null +++ b/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockProofSignatureError.js @@ -0,0 +1,9 @@ +const AbstractBasicError = require('../AbstractBasicError'); + +class InvalidIdentityAssetLockProofSignatureError extends AbstractBasicError { + constructor() { + super('Invalid Asset lock proof signature'); + } +} + +module.exports = InvalidIdentityAssetLockProofSignatureError; diff --git a/lib/errors/InvalidIdentityAssetLockTransactionError.js b/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionError.js similarity index 58% rename from lib/errors/InvalidIdentityAssetLockTransactionError.js rename to lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionError.js index cf2cb8d65..7962b4a4c 100644 --- a/lib/errors/InvalidIdentityAssetLockTransactionError.js +++ b/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InvalidIdentityAssetLockTransactionError extends ConsensusError { +class InvalidIdentityAssetLockTransactionError extends AbstractBasicError { /** * @param {string} message */ diff --git a/lib/errors/InvalidIdentityAssetLockTransactionOutputError.js b/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionOutputError.js similarity index 72% rename from lib/errors/InvalidIdentityAssetLockTransactionOutputError.js rename to lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionOutputError.js index e6407ef88..af5abc0b9 100644 --- a/lib/errors/InvalidIdentityAssetLockTransactionOutputError.js +++ b/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionOutputError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InvalidIdentityAssetLockTransactionOutputError extends ConsensusError { +class InvalidIdentityAssetLockTransactionOutputError extends AbstractBasicError { /** * @param {string} message * @param {Object} output diff --git a/lib/errors/InvalidIdentityPublicKeyDataError.js b/lib/errors/consensus/basic/identity/InvalidIdentityPublicKeyDataError.js similarity index 76% rename from lib/errors/InvalidIdentityPublicKeyDataError.js rename to lib/errors/consensus/basic/identity/InvalidIdentityPublicKeyDataError.js index 69daf51dd..15edc6aca 100644 --- a/lib/errors/InvalidIdentityPublicKeyDataError.js +++ b/lib/errors/consensus/basic/identity/InvalidIdentityPublicKeyDataError.js @@ -1,8 +1,8 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InvalidIdentityPublicKeyDataError extends ConsensusError { +class InvalidIdentityPublicKeyDataError extends AbstractBasicError { /** - * @param {RawIdenityPublicKey} publicKey + * @param {RawIdentityPublicKey} publicKey * @param {Error} validationError */ constructor(publicKey, validationError) { diff --git a/lib/errors/InvalidStateTransitionTypeError.js b/lib/errors/consensus/basic/stateTransition/InvalidStateTransitionTypeError.js similarity index 77% rename from lib/errors/InvalidStateTransitionTypeError.js rename to lib/errors/consensus/basic/stateTransition/InvalidStateTransitionTypeError.js index c8f003a17..b7bbddb0e 100644 --- a/lib/errors/InvalidStateTransitionTypeError.js +++ b/lib/errors/consensus/basic/stateTransition/InvalidStateTransitionTypeError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class InvalidStateTransitionTypeError extends ConsensusError { +class InvalidStateTransitionTypeError extends AbstractBasicError { /** * @param {RawStateTransition} rawStateTransition */ diff --git a/lib/errors/MissingStateTransitionTypeError.js b/lib/errors/consensus/basic/stateTransition/MissingStateTransitionTypeError.js similarity index 75% rename from lib/errors/MissingStateTransitionTypeError.js rename to lib/errors/consensus/basic/stateTransition/MissingStateTransitionTypeError.js index 4775852f8..27675f805 100644 --- a/lib/errors/MissingStateTransitionTypeError.js +++ b/lib/errors/consensus/basic/stateTransition/MissingStateTransitionTypeError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class MissingStateTransitionTypeError extends ConsensusError { +class MissingStateTransitionTypeError extends AbstractBasicError { /** * @param {RawStateTransition} rawStateTransition */ diff --git a/lib/errors/StateTransitionMaxSizeExceededError.js b/lib/errors/consensus/basic/stateTransition/StateTransitionMaxSizeExceededError.js similarity index 81% rename from lib/errors/StateTransitionMaxSizeExceededError.js rename to lib/errors/consensus/basic/stateTransition/StateTransitionMaxSizeExceededError.js index f69ca1b94..779a797e9 100644 --- a/lib/errors/StateTransitionMaxSizeExceededError.js +++ b/lib/errors/consensus/basic/stateTransition/StateTransitionMaxSizeExceededError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractBasicError = require('../AbstractBasicError'); -class StateTransitionMaxSizeExceededError extends ConsensusError { +class StateTransitionMaxSizeExceededError extends AbstractBasicError { /** * @param {RawDataContractCreateTransition|RawDocumentsBatchTransition} rawStateTransition * @param {number} maxSizeKBytes diff --git a/lib/errors/consensus/codes.js b/lib/errors/consensus/codes.js new file mode 100644 index 000000000..7083d5e7d --- /dev/null +++ b/lib/errors/consensus/codes.js @@ -0,0 +1,161 @@ +const ProtocolVersionParsingError = require('./basic/decode/ProtocolVersionParsingError'); +const UnsupportedProtocolVersionError = require('./basic/decode/UnsupportedProtocolVersionError'); +const IncompatibleProtocolVersionError = require('./basic/decode/IncompatibleProtocolVersionError'); +const SerializedObjectParsingError = require('./basic/decode/SerializedObjectParsingError'); +const JsonSchemaError = require('./basic/JsonSchemaError'); +const InvalidIdentifierError = require('./basic/InvalidIdentifierError'); +const DataContractMaxDepthExceedError = require('./basic/dataContract/DataContractMaxDepthExceedError'); +const DuplicateIndexError = require('./basic/dataContract/DuplicateIndexError'); +const InvalidCompoundIndexError = require('./basic/dataContract/InvalidCompoundIndexError'); +const InvalidDataContractIdError = require('./basic/dataContract/InvalidDataContractIdError'); +const InvalidIndexedPropertyConstraintError = require('./basic/dataContract/InvalidIndexedPropertyConstraintError'); +const InvalidIndexPropertyTypeError = require('./basic/dataContract/InvalidIndexPropertyTypeError'); +const SystemPropertyIndexAlreadyPresentError = require('./basic/dataContract/SystemPropertyIndexAlreadyPresentError'); +const UndefinedIndexPropertyError = require('./basic/dataContract/UndefinedIndexPropertyError'); +const UniqueIndicesLimitReachedError = require('./basic/dataContract/UniqueIndicesLimitReachedError'); +const DuplicateDocumentTransitionsError = require('./basic/document/DuplicateDocumentTransitionsError'); +const InconsistentCompoundIndexDataError = require('./basic/document/InconsistentCompoundIndexDataError'); +const InvalidDocumentTransitionActionError = require('./basic/document/InvalidDocumentTransitionActionError'); +const InvalidDocumentTransitionIdError = require('./basic/document/InvalidDocumentTransitionIdError'); +const DataContractNotPresentError = require('./basic/document/DataContractNotPresentError'); +const InvalidDocumentTypeError = require('./basic/document/InvalidDocumentTypeError'); +const MissingDataContractIdError = require('./basic/document/MissingDataContractIdError'); +const MissingDocumentTransitionActionError = require('./basic/document/MissingDocumentTransitionActionError'); +const MissingDocumentTransitionTypeError = require('./basic/document/MissingDocumentTransitionTypeError'); +const MissingDocumentTypeError = require('./basic/document/MissingDocumentTypeError'); +const DuplicatedIdentityPublicKeyError = require('./basic/identity/DuplicatedIdentityPublicKeyError'); +const DuplicatedIdentityPublicKeyIdError = require('./basic/identity/DuplicatedIdentityPublicKeyIdError'); +const IdentityAssetLockProofMismatchError = require('./basic/identity/IdentityAssetLockProofMismatchError'); +const IdentityAssetLockTransactionIsNotFoundError = require('./basic/identity/IdentityAssetLockTransactionIsNotFoundError'); +const IdentityAssetLockTransactionOutPointAlreadyExistsError = require('./basic/identity/IdentityAssetLockTransactionOutPointAlreadyExistsError'); +const IdentityAssetLockTransactionOutputNotFoundError = require('./basic/identity/IdentityAssetLockTransactionOutputNotFoundError'); +const InvalidAssetLockProofCoreChainHeightError = require('./basic/identity/InvalidAssetLockProofCoreChainHeightError'); +const InvalidAssetLockProofTransactionHeightError = require('./basic/identity/InvalidAssetLockProofTransactionHeightError'); +const InvalidIdentityAssetLockProofError = require('./basic/identity/InvalidIdentityAssetLockProofError'); +const InvalidIdentityAssetLockProofSignatureError = require('./basic/identity/InvalidIdentityAssetLockProofSignatureError'); +const InvalidIdentityAssetLockTransactionError = require('./basic/identity/InvalidIdentityAssetLockTransactionError'); +const InvalidIdentityAssetLockTransactionOutputError = require('./basic/identity/InvalidIdentityAssetLockTransactionOutputError'); +const InvalidIdentityPublicKeyDataError = require('./basic/identity/InvalidIdentityPublicKeyDataError'); +const InvalidStateTransitionTypeError = require('./basic/stateTransition/InvalidStateTransitionTypeError'); +const MissingStateTransitionTypeError = require('./basic/stateTransition/MissingStateTransitionTypeError'); +const StateTransitionMaxSizeExceededError = require('./basic/stateTransition/StateTransitionMaxSizeExceededError'); + +const IdentityNotFoundError = require('./signature/IdentityNotFoundError'); +const InvalidIdentityPublicKeyTypeError = require('./signature/InvalidIdentityPublicKeyTypeError'); +const InvalidStateTransitionSignatureError = require('./signature/InvalidStateTransitionSignatureError'); +const MissingPublicKeyError = require('./signature/MissingPublicKeyError'); + +const BalanceIsNotEnoughError = require('./fee/BalanceIsNotEnoughError'); + +const DataContractAlreadyPresentError = require('./state/dataContract/DataContractAlreadyPresentError'); +const DataTriggerConditionError = require('./state/dataContract/dataTrigger/DataTriggerConditionError'); +const DataTriggerExecutionError = require('./state/dataContract/dataTrigger/DataTriggerExecutionError'); +const DataTriggerInvalidResultError = require('./state/dataContract/dataTrigger/DataTriggerInvalidResultError'); +const DocumentAlreadyPresentError = require('./state/document/DocumentAlreadyPresentError'); +const DocumentNotFoundError = require('./state/document/DocumentNotFoundError'); +const DocumentOwnerIdMismatchError = require('./state/document/DocumentOwnerIdMismatchError'); +const DocumentTimestampsMismatchError = require('./state/document/DocumentTimestampsMismatchError'); +const DocumentTimestampWindowViolationError = require('./state/document/DocumentTimestampWindowViolationError'); +const DuplicateDocumentError = require('./state/document/DuplicateDocumentError'); +const InvalidDocumentRevisionError = require('./state/document/InvalidDocumentRevisionError'); +const IdentityAlreadyExistsError = require('./state/identity/IdentityAlreadyExistsError'); +const IdentityPublicKeyAlreadyExistsError = require('./state/identity/IdentityPublicKeyAlreadyExistsError'); + +const codes = { + /** + * Basic + */ + + // Decoding + 1000: ProtocolVersionParsingError, + 1001: UnsupportedProtocolVersionError, + 1002: IncompatibleProtocolVersionError, + 1003: SerializedObjectParsingError, + + // General + 1004: JsonSchemaError, + 1005: InvalidIdentifierError, + + // Data Contract + 1006: DataContractMaxDepthExceedError, + 1007: DuplicateIndexError, + 1008: InvalidCompoundIndexError, + 1009: InvalidDataContractIdError, + 1010: InvalidIndexedPropertyConstraintError, + 1011: InvalidIndexPropertyTypeError, + 1012: SystemPropertyIndexAlreadyPresentError, + 1013: UndefinedIndexPropertyError, + 1014: UniqueIndicesLimitReachedError, + + // Document + 1015: DataContractNotPresentError, + 1016: DuplicateDocumentTransitionsError, + 1017: InconsistentCompoundIndexDataError, + 1018: InvalidDocumentTransitionActionError, + 1019: InvalidDocumentTransitionIdError, + 1020: InvalidDocumentTypeError, + 1021: MissingDataContractIdError, + 1022: MissingDocumentTransitionActionError, + 1023: MissingDocumentTransitionTypeError, + 1024: MissingDocumentTypeError, + + // Identity + 1025: DuplicatedIdentityPublicKeyError, + 1026: DuplicatedIdentityPublicKeyIdError, + 1027: IdentityAssetLockProofMismatchError, + 1028: IdentityAssetLockTransactionIsNotFoundError, + 1029: IdentityAssetLockTransactionOutPointAlreadyExistsError, + 1030: IdentityAssetLockTransactionOutputNotFoundError, + 1031: InvalidAssetLockProofCoreChainHeightError, + 1032: InvalidAssetLockProofTransactionHeightError, + 1033: InvalidIdentityAssetLockProofError, + 1034: InvalidIdentityAssetLockProofSignatureError, + 1035: InvalidIdentityAssetLockTransactionError, + 1036: InvalidIdentityAssetLockTransactionOutputError, + 1037: InvalidIdentityPublicKeyDataError, + + // State Transition + 1038: InvalidStateTransitionTypeError, + 1039: MissingStateTransitionTypeError, + 1040: StateTransitionMaxSizeExceededError, + + /** + * Signature + */ + + 2000: IdentityNotFoundError, + 2001: InvalidIdentityPublicKeyTypeError, + 2002: InvalidStateTransitionSignatureError, + 2003: MissingPublicKeyError, + + /** + * Fee + */ + + 3000: BalanceIsNotEnoughError, + + /** + * State + */ + + // Data Contract + 4000: DataContractAlreadyPresentError, + 4001: DataTriggerConditionError, + 4002: DataTriggerExecutionError, + 4003: DataTriggerInvalidResultError, + + // Document + 4004: DocumentAlreadyPresentError, + 4005: DocumentNotFoundError, + 4006: DocumentOwnerIdMismatchError, + 4007: DocumentTimestampsMismatchError, + 4008: DocumentTimestampWindowViolationError, + 4009: DuplicateDocumentError, + 4010: InvalidDocumentRevisionError, + + // Identity + 4011: IdentityAlreadyExistsError, + 4012: IdentityPublicKeyAlreadyExistsError, +}; + +module.exports = codes; diff --git a/lib/errors/consensus/fee/AbstractFeeError.js b/lib/errors/consensus/fee/AbstractFeeError.js new file mode 100644 index 000000000..e9873582a --- /dev/null +++ b/lib/errors/consensus/fee/AbstractFeeError.js @@ -0,0 +1,10 @@ +const ConsensusError = require('../ConsensusError'); + +/** + * @abstract + */ +class AbstractFeeError extends ConsensusError { + +} + +module.exports = AbstractFeeError; diff --git a/lib/errors/BalanceIsNotEnoughError.js b/lib/errors/consensus/fee/BalanceIsNotEnoughError.js similarity index 72% rename from lib/errors/BalanceIsNotEnoughError.js rename to lib/errors/consensus/fee/BalanceIsNotEnoughError.js index 225e3f2f0..992b801f7 100644 --- a/lib/errors/BalanceIsNotEnoughError.js +++ b/lib/errors/consensus/fee/BalanceIsNotEnoughError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractFeeError = require('./AbstractFeeError'); -class BalanceIsNotEnoughError extends ConsensusError { +class BalanceIsNotEnoughError extends AbstractFeeError { /** * * @param {number} balance diff --git a/lib/errors/consensus/signature/AbstractSignatureError.js b/lib/errors/consensus/signature/AbstractSignatureError.js new file mode 100644 index 000000000..182dbc734 --- /dev/null +++ b/lib/errors/consensus/signature/AbstractSignatureError.js @@ -0,0 +1,10 @@ +const ConsensusError = require('../ConsensusError'); + +/** + * @abstract + */ +class AbstractSignatureError extends ConsensusError { + +} + +module.exports = AbstractSignatureError; diff --git a/lib/errors/IdentityNotFoundError.js b/lib/errors/consensus/signature/IdentityNotFoundError.js similarity index 70% rename from lib/errors/IdentityNotFoundError.js rename to lib/errors/consensus/signature/IdentityNotFoundError.js index 85120181a..c3528a6c3 100644 --- a/lib/errors/IdentityNotFoundError.js +++ b/lib/errors/consensus/signature/IdentityNotFoundError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractSignatureError = require('./AbstractSignatureError'); -class IdentityNotFoundError extends ConsensusError { +class IdentityNotFoundError extends AbstractSignatureError { /** * @param {Buffer} identityId */ diff --git a/lib/errors/InvalidIdentityPublicKeyTypeError.js b/lib/errors/consensus/signature/InvalidIdentityPublicKeyTypeError.js similarity index 68% rename from lib/errors/InvalidIdentityPublicKeyTypeError.js rename to lib/errors/consensus/signature/InvalidIdentityPublicKeyTypeError.js index 7b3a56b4d..e1e1da823 100644 --- a/lib/errors/InvalidIdentityPublicKeyTypeError.js +++ b/lib/errors/consensus/signature/InvalidIdentityPublicKeyTypeError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractSignatureError = require('./AbstractSignatureError'); -class InvalidIdentityPublicKeyTypeError extends ConsensusError { +class InvalidIdentityPublicKeyTypeError extends AbstractSignatureError { /** * @param {number} type */ diff --git a/lib/errors/InvalidStateTransitionSignatureError.js b/lib/errors/consensus/signature/InvalidStateTransitionSignatureError.js similarity index 75% rename from lib/errors/InvalidStateTransitionSignatureError.js rename to lib/errors/consensus/signature/InvalidStateTransitionSignatureError.js index e8dedbc55..fcfaea471 100644 --- a/lib/errors/InvalidStateTransitionSignatureError.js +++ b/lib/errors/consensus/signature/InvalidStateTransitionSignatureError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractSignatureError = require('./AbstractSignatureError'); -class InvalidStateTransitionSignatureError extends ConsensusError { +class InvalidStateTransitionSignatureError extends AbstractSignatureError { /** * @param {AbstractStateTransition} stateTransition */ diff --git a/lib/errors/MissingPublicKeyError.js b/lib/errors/consensus/signature/MissingPublicKeyError.js similarity index 61% rename from lib/errors/MissingPublicKeyError.js rename to lib/errors/consensus/signature/MissingPublicKeyError.js index 7a1bb374b..fa1a4e1cf 100644 --- a/lib/errors/MissingPublicKeyError.js +++ b/lib/errors/consensus/signature/MissingPublicKeyError.js @@ -1,6 +1,9 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractSignatureError = require('./AbstractSignatureError'); -class MissingPublicKeyError extends ConsensusError { +class MissingPublicKeyError extends AbstractSignatureError { + /** + * @param {number} publicKeyId + */ constructor(publicKeyId) { super("Public key with such id doesn't exist"); diff --git a/lib/errors/consensus/state/AbstractStateError.js b/lib/errors/consensus/state/AbstractStateError.js new file mode 100644 index 000000000..b78d50939 --- /dev/null +++ b/lib/errors/consensus/state/AbstractStateError.js @@ -0,0 +1,7 @@ +const ConsensusError = require('../ConsensusError'); + +class AbstractStateError extends ConsensusError { + +} + +module.exports = AbstractStateError; diff --git a/lib/errors/DataContractAlreadyPresentError.js b/lib/errors/consensus/state/dataContract/DataContractAlreadyPresentError.js similarity index 73% rename from lib/errors/DataContractAlreadyPresentError.js rename to lib/errors/consensus/state/dataContract/DataContractAlreadyPresentError.js index f68dcb252..737e9cc46 100644 --- a/lib/errors/DataContractAlreadyPresentError.js +++ b/lib/errors/consensus/state/dataContract/DataContractAlreadyPresentError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -class DataContractAlreadyPresentError extends ConsensusError { +class DataContractAlreadyPresentError extends AbstractStateError { /** * @param {DataContract} dataContract */ diff --git a/lib/errors/AbstractDataTriggerError.js b/lib/errors/consensus/state/dataContract/dataTrigger/AbstractDataTriggerError.js similarity index 82% rename from lib/errors/AbstractDataTriggerError.js rename to lib/errors/consensus/state/dataContract/dataTrigger/AbstractDataTriggerError.js index 24c493a2f..8d7a95ac7 100644 --- a/lib/errors/AbstractDataTriggerError.js +++ b/lib/errors/consensus/state/dataContract/dataTrigger/AbstractDataTriggerError.js @@ -1,9 +1,9 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../../AbstractStateError'); /** * @abstract */ -class AbstractDataTriggerError extends ConsensusError { +class AbstractDataTriggerError extends AbstractStateError { /** * @param {string} message * @param {DataContract} dataContract diff --git a/lib/errors/DataTriggerConditionError.js b/lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError.js similarity index 100% rename from lib/errors/DataTriggerConditionError.js rename to lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError.js diff --git a/lib/errors/DataTriggerExecutionError.js b/lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerExecutionError.js similarity index 100% rename from lib/errors/DataTriggerExecutionError.js rename to lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerExecutionError.js diff --git a/lib/errors/DataTriggerInvalidResultError.js b/lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerInvalidResultError.js similarity index 100% rename from lib/errors/DataTriggerInvalidResultError.js rename to lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerInvalidResultError.js diff --git a/lib/errors/DocumentAlreadyPresentError.js b/lib/errors/consensus/state/document/DocumentAlreadyPresentError.js similarity index 84% rename from lib/errors/DocumentAlreadyPresentError.js rename to lib/errors/consensus/state/document/DocumentAlreadyPresentError.js index d92c32816..4e2164bd4 100644 --- a/lib/errors/DocumentAlreadyPresentError.js +++ b/lib/errors/consensus/state/document/DocumentAlreadyPresentError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -class DocumentAlreadyPresentError extends ConsensusError { +class DocumentAlreadyPresentError extends AbstractStateError { /** * @param {DocumentCreateTransition} documentTransition * @param {Document} fetchedDocument diff --git a/lib/errors/DocumentNotFoundError.js b/lib/errors/consensus/state/document/DocumentNotFoundError.js similarity index 70% rename from lib/errors/DocumentNotFoundError.js rename to lib/errors/consensus/state/document/DocumentNotFoundError.js index 77a32fff6..f71f97418 100644 --- a/lib/errors/DocumentNotFoundError.js +++ b/lib/errors/consensus/state/document/DocumentNotFoundError.js @@ -1,8 +1,8 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -const AbstractDocumentTransition = require('../document/stateTransition/DocumentsBatchTransition/documentTransition/AbstractDocumentTransition'); +const AbstractDocumentTransition = require('../../../../document/stateTransition/DocumentsBatchTransition/documentTransition/AbstractDocumentTransition'); -class DocumentNotFoundError extends ConsensusError { +class DocumentNotFoundError extends AbstractStateError { /** * @param {DocumentReplaceTransition * |DocumentDeleteTransition} documentTransition diff --git a/lib/errors/DocumentOwnerIdMismatchError.js b/lib/errors/consensus/state/document/DocumentOwnerIdMismatchError.js similarity index 85% rename from lib/errors/DocumentOwnerIdMismatchError.js rename to lib/errors/consensus/state/document/DocumentOwnerIdMismatchError.js index 6c3418f60..14dfe5c2f 100644 --- a/lib/errors/DocumentOwnerIdMismatchError.js +++ b/lib/errors/consensus/state/document/DocumentOwnerIdMismatchError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -class DocumentOwnerIdMismatchError extends ConsensusError { +class DocumentOwnerIdMismatchError extends AbstractStateError { /** * @param {DocumentReplaceTransition * |DocumentDeleteTransition} documentTransition diff --git a/lib/errors/DocumentTimestampWindowViolationError.js b/lib/errors/consensus/state/document/DocumentTimestampWindowViolationError.js similarity index 87% rename from lib/errors/DocumentTimestampWindowViolationError.js rename to lib/errors/consensus/state/document/DocumentTimestampWindowViolationError.js index 9e67f4d32..abeb8cf2c 100644 --- a/lib/errors/DocumentTimestampWindowViolationError.js +++ b/lib/errors/consensus/state/document/DocumentTimestampWindowViolationError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -class DocumentTimestampWindowViolationError extends ConsensusError { +class DocumentTimestampWindowViolationError extends AbstractStateError { /** * @param {string} timestampName * @param {DocumentCreateTransition diff --git a/lib/errors/DocumentTimestampsMismatchError.js b/lib/errors/consensus/state/document/DocumentTimestampsMismatchError.js similarity index 77% rename from lib/errors/DocumentTimestampsMismatchError.js rename to lib/errors/consensus/state/document/DocumentTimestampsMismatchError.js index 0b77e4141..bf14f39ee 100644 --- a/lib/errors/DocumentTimestampsMismatchError.js +++ b/lib/errors/consensus/state/document/DocumentTimestampsMismatchError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -class DocumentTimestampsMismatchError extends ConsensusError { +class DocumentTimestampsMismatchError extends AbstractStateError { /** * @param {DocumentCreateTransition} documentTransition */ diff --git a/lib/errors/DuplicateDocumentError.js b/lib/errors/consensus/state/document/DuplicateDocumentError.js similarity index 85% rename from lib/errors/DuplicateDocumentError.js rename to lib/errors/consensus/state/document/DuplicateDocumentError.js index 4a8a6c0b9..1788639f1 100644 --- a/lib/errors/DuplicateDocumentError.js +++ b/lib/errors/consensus/state/document/DuplicateDocumentError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -class DuplicateDocumentError extends ConsensusError { +class DuplicateDocumentError extends AbstractStateError { /** * @param {DocumentCreateTransition|DocumentReplaceTransition} documentTransition * @param {Object} indexDefinition diff --git a/lib/errors/InvalidDocumentRevisionError.js b/lib/errors/consensus/state/document/InvalidDocumentRevisionError.js similarity index 83% rename from lib/errors/InvalidDocumentRevisionError.js rename to lib/errors/consensus/state/document/InvalidDocumentRevisionError.js index 6dfe1fe3d..33401d98c 100644 --- a/lib/errors/InvalidDocumentRevisionError.js +++ b/lib/errors/consensus/state/document/InvalidDocumentRevisionError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -class InvalidDocumentRevisionError extends ConsensusError { +class InvalidDocumentRevisionError extends AbstractStateError { /** * @param {DocumentReplaceTransition} documentTransition * @param {Document} fetchedDocument diff --git a/lib/errors/IdentityAlreadyExistsError.js b/lib/errors/consensus/state/identity/IdentityAlreadyExistsError.js similarity index 77% rename from lib/errors/IdentityAlreadyExistsError.js rename to lib/errors/consensus/state/identity/IdentityAlreadyExistsError.js index de6a1a5d3..01d5f1c72 100644 --- a/lib/errors/IdentityAlreadyExistsError.js +++ b/lib/errors/consensus/state/identity/IdentityAlreadyExistsError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -class IdentityAlreadyExistsError extends ConsensusError { +class IdentityAlreadyExistsError extends AbstractStateError { /** * @param {IdentityCreateTransition} stateTransition */ diff --git a/lib/errors/IdentityPublicKeyAlreadyExistsError.js b/lib/errors/consensus/state/identity/IdentityPublicKeyAlreadyExistsError.js similarity index 72% rename from lib/errors/IdentityPublicKeyAlreadyExistsError.js rename to lib/errors/consensus/state/identity/IdentityPublicKeyAlreadyExistsError.js index 103db35c9..699ecc809 100644 --- a/lib/errors/IdentityPublicKeyAlreadyExistsError.js +++ b/lib/errors/consensus/state/identity/IdentityPublicKeyAlreadyExistsError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const AbstractStateError = require('../AbstractStateError'); -class IdentityPublicKeyAlreadyExistsError extends ConsensusError { +class IdentityPublicKeyAlreadyExistsError extends AbstractStateError { /** * @param {string} publicKeyHash */ diff --git a/lib/identifier/createAndValidateIdentifier.js b/lib/identifier/createAndValidateIdentifier.js index 496369347..7e37ca749 100644 --- a/lib/identifier/createAndValidateIdentifier.js +++ b/lib/identifier/createAndValidateIdentifier.js @@ -1,5 +1,5 @@ const Identifier = require('./Identifier'); -const InvalidIdentifierError = require('../errors/InvalidIdentifierError'); +const InvalidIdentifierError = require('../errors/consensus/basic/InvalidIdentifierError'); const IdentifierError = require('./errors/IdentifierError'); /** @@ -14,7 +14,7 @@ function createAndValidateIdentifier(name, buffer, result) { } catch (e) { if (e instanceof IdentifierError) { result.addError( - new InvalidIdentifierError('$dataContractId', e), + new InvalidIdentifierError(name, e), ); return undefined; diff --git a/lib/identifier/errors/IdentifierError.js b/lib/identifier/errors/IdentifierError.js index 669b059c1..e539c0f21 100644 --- a/lib/identifier/errors/IdentifierError.js +++ b/lib/identifier/errors/IdentifierError.js @@ -1,17 +1,7 @@ -class IdentifierError extends Error { - /** - * @param {string} message - */ - constructor(message) { - super(); +const DPPError = require('../../errors/DPPError'); - this.name = this.constructor.name; - this.message = message; +class IdentifierError extends DPPError { - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } } module.exports = IdentifierError; diff --git a/lib/identity/IdentityFactory.js b/lib/identity/IdentityFactory.js index 2108d91a7..e4bada26c 100644 --- a/lib/identity/IdentityFactory.js +++ b/lib/identity/IdentityFactory.js @@ -7,7 +7,7 @@ const IdentityTopUpTransition = require('./stateTransition/IdentityTopUpTransiti const InvalidIdentityError = require('./errors/InvalidIdentityError'); const InstantAssetLockProof = require('./stateTransition/assetLockProof/instant/InstantAssetLockProof'); const ChainAssetLockProof = require('./stateTransition/assetLockProof/chain/ChainAssetLockProof'); -const ConsensusError = require('../errors/ConsensusError'); +const ConsensusError = require('../errors/consensus/ConsensusError'); class IdentityFactory { /** diff --git a/lib/identity/errors/AssetLockOutputNotFoundError.js b/lib/identity/errors/AssetLockOutputNotFoundError.js index 891f01910..a7f36e475 100644 --- a/lib/identity/errors/AssetLockOutputNotFoundError.js +++ b/lib/identity/errors/AssetLockOutputNotFoundError.js @@ -1,12 +1,8 @@ -class AssetLockOutputNotFoundError extends Error { - constructor() { - super(); - - this.message = 'Asset Lock transaction output not found'; +const DPPError = require('../../errors/DPPError'); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } +class AssetLockOutputNotFoundError extends DPPError { + constructor() { + super('Asset Lock transaction output not found'); } } diff --git a/lib/identity/errors/EmptyPublicKeyDataError.js b/lib/identity/errors/EmptyPublicKeyDataError.js index d6829bec7..480689c6b 100644 --- a/lib/identity/errors/EmptyPublicKeyDataError.js +++ b/lib/identity/errors/EmptyPublicKeyDataError.js @@ -1,12 +1,8 @@ -class EmptyPublicKeyDataError extends Error { - constructor() { - super(); - - this.message = 'Public key data is not set'; +const DPPError = require('../../errors/DPPError'); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } +class EmptyPublicKeyDataError extends DPPError { + constructor() { + super('Public key data is not set'); } } diff --git a/lib/identity/errors/InvalidIdentityError.js b/lib/identity/errors/InvalidIdentityError.js index 12329638a..a2683a687 100644 --- a/lib/identity/errors/InvalidIdentityError.js +++ b/lib/identity/errors/InvalidIdentityError.js @@ -1,23 +1,20 @@ -class InvalidIdentityError extends Error { +const DPPError = require('../../errors/DPPError'); + +class InvalidIdentityError extends DPPError { /** * @param {ConsensusError[]} errors * @param {RawIdentity} rawIdentity */ constructor(errors, rawIdentity) { - super(); - - this.name = this.constructor.name; - this.message = `Invalid Identity: "${errors[0].message}"`; + let message = `Invalid Identity: "${errors[0].message}"`; if (errors.length > 1) { - this.message = `${this.message} and ${errors.length - 1} more`; + message = `${message} and ${errors.length - 1} more`; } + super(message); + this.errors = errors; this.rawIdentity = rawIdentity; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/errors/UnknownAssetLockProofError.js b/lib/identity/errors/UnknownAssetLockProofTypeError.js similarity index 58% rename from lib/errors/UnknownAssetLockProofError.js rename to lib/identity/errors/UnknownAssetLockProofTypeError.js index 4f68832a7..758707c57 100644 --- a/lib/errors/UnknownAssetLockProofError.js +++ b/lib/identity/errors/UnknownAssetLockProofTypeError.js @@ -1,6 +1,6 @@ -const ConsensusError = require('./ConsensusError'); +const DPPError = require('../../errors/DPPError'); -class UnknownAssetLockProofError extends ConsensusError { +class UnknownAssetLockProofTypeError extends DPPError { /** * * @param {number} type @@ -20,4 +20,4 @@ class UnknownAssetLockProofError extends ConsensusError { } } -module.exports = UnknownAssetLockProofError; +module.exports = UnknownAssetLockProofTypeError; diff --git a/lib/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.js b/lib/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.js index bba8c2b05..f7eb13de3 100644 --- a/lib/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.js +++ b/lib/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.js @@ -1,6 +1,6 @@ const ValidationResult = require('../../../../../validation/ValidationResult'); -const IdentityAlreadyExistsError = require('../../../../../errors/IdentityAlreadyExistsError'); +const IdentityAlreadyExistsError = require('../../../../../errors/consensus/state/identity/IdentityAlreadyExistsError'); /** * @param {StateRepository} stateRepository diff --git a/lib/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityPublicKeysUniquenessFactory.js b/lib/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityPublicKeysUniquenessFactory.js index 6121549eb..2cf979c37 100644 --- a/lib/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityPublicKeysUniquenessFactory.js +++ b/lib/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityPublicKeysUniquenessFactory.js @@ -1,7 +1,7 @@ const ValidationResult = require('../../../../../validation/ValidationResult'); const IdentityPublicKeyAlreadyExistsError = require( - '../../../../../errors/IdentityPublicKeyAlreadyExistsError', + '../../../../../errors/consensus/state/identity/IdentityPublicKeyAlreadyExistsError', ); /** diff --git a/lib/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.js b/lib/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.js index 9ca3d453c..98e1f096f 100644 --- a/lib/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.js +++ b/lib/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.js @@ -1,17 +1,14 @@ const identityTopUpTransitionSchema = require('../../../../../../schema/identity/stateTransition/identityTopUp.json'); const convertBuffersToArrays = require('../../../../../util/convertBuffersToArrays'); -const Identifier = require('../../../../../identifier/Identifier'); /** * @param {JsonSchemaValidator} jsonSchemaValidator - * @param {validateIdentityExistence} validateIdentityExistence * @param {Object.} proofValidationFunctionsByType * @return {validateIdentityTopUpTransitionBasic} */ function validateIdentityTopUpTransitionBasicFactory( jsonSchemaValidator, - validateIdentityExistence, proofValidationFunctionsByType, ) { /** @@ -29,16 +26,6 @@ function validateIdentityTopUpTransitionBasicFactory( return result; } - result.merge( - await validateIdentityExistence( - new Identifier(rawStateTransition.identityId), - ), - ); - - if (!result.isValid()) { - return result; - } - const proofValidationFunction = proofValidationFunctionsByType[ rawStateTransition.assetLockProof.type ]; diff --git a/lib/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.js b/lib/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.js index a7c98a382..57df5b1c8 100644 --- a/lib/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.js +++ b/lib/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.js @@ -2,9 +2,9 @@ const { Transaction } = require('@dashevo/dashcore-lib'); const chainAssetLockProofSchema = require('../../../../../schema/identity/stateTransition/assetLockProof/chainAssetLockProof.json'); const convertBuffersToArrays = require('../../../../util/convertBuffersToArrays'); -const InvalidAssetLockProofCoreChainHeightError = require('../../../../errors/InvalidAssetLockProofCoreChainHeightError'); -const IdentityAssetLockTransactionIsNotFoundError = require('../../../../errors/IdentityAssetLockTransactionIsNotFoundError'); -const InvalidAssetLockProofTransactionHeightError = require('../../../../errors/InvalidAssetLockProofTransactionHeightError'); +const InvalidAssetLockProofCoreChainHeightError = require('../../../../errors/consensus/basic/identity/InvalidAssetLockProofCoreChainHeightError'); +const IdentityAssetLockTransactionIsNotFoundError = require('../../../../errors/consensus/basic/identity/IdentityAssetLockTransactionIsNotFoundError'); +const InvalidAssetLockProofTransactionHeightError = require('../../../../errors/consensus/basic/identity/InvalidAssetLockProofTransactionHeightError'); /** * @param {JsonSchemaValidator} jsonSchemaValidator diff --git a/lib/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.js b/lib/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.js index f6e0f6251..bc41513b5 100644 --- a/lib/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.js +++ b/lib/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.js @@ -1,8 +1,8 @@ const { Transaction } = require('@dashevo/dashcore-lib'); const InstantAssetLockProof = require('./instant/InstantAssetLockProof'); const ChainAssetLockProof = require('./chain/ChainAssetLockProof'); -const IdentityAssetLockTransactionIsNotFoundError = require('../../../errors/IdentityAssetLockTransactionIsNotFoundError'); -const UnknownAssetLockProofError = require('../../../errors/UnknownAssetLockProofError'); +const IdentityAssetLockTransactionIsNotFoundError = require('../../../errors/consensus/basic/identity/IdentityAssetLockTransactionIsNotFoundError'); +const UnknownAssetLockProofError = require('../../errors/UnknownAssetLockProofTypeError'); /** * @param {StateRepository} stateRepository diff --git a/lib/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.js b/lib/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.js index 833e463d3..81f7a2386 100644 --- a/lib/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.js +++ b/lib/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.js @@ -3,9 +3,9 @@ const { InstantLock } = require('@dashevo/dashcore-lib'); const instantAssetLockProofSchema = require('../../../../../schema/identity/stateTransition/assetLockProof/instantAssetLockProof.json'); const convertBuffersToArrays = require('../../../../util/convertBuffersToArrays'); -const InvalidIdentityAssetLockProofError = require('../../../../errors/InvalidIdentityAssetLockProofError'); -const IdentityAssetLockProofMismatchError = require('../../../../errors/IdentityAssetLockProofMismatchError'); -const InvalidIdentityAssetLockProofSignatureError = require('../../../../errors/InvalidIdentityAssetLockProofSignatureError'); +const InvalidIdentityAssetLockProofError = require('../../../../errors/consensus/basic/identity/InvalidIdentityAssetLockProofError'); +const IdentityAssetLockProofMismatchError = require('../../../../errors/consensus/basic/identity/IdentityAssetLockProofMismatchError'); +const InvalidIdentityAssetLockProofSignatureError = require('../../../../errors/consensus/basic/identity/InvalidIdentityAssetLockProofSignatureError'); /** * @param {JsonSchemaValidator} jsonSchemaValidator diff --git a/lib/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.js b/lib/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.js index e5f498ddd..07199ab3b 100644 --- a/lib/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.js +++ b/lib/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.js @@ -1,10 +1,10 @@ const { Transaction } = require('@dashevo/dashcore-lib'); -const InvalidIdentityAssetLockTransactionError = require('../../../errors/InvalidIdentityAssetLockTransactionError'); -const IdentityAssetLockTransactionOutputNotFoundError = require('../../../errors/IdentityAssetLockTransactionOutputNotFoundError'); -const InvalidIdentityAssetLockTransactionOutputError = require('../../../errors/InvalidIdentityAssetLockTransactionOutputError'); +const InvalidIdentityAssetLockTransactionError = require('../../../errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionError'); +const IdentityAssetLockTransactionOutputNotFoundError = require('../../../errors/consensus/basic/identity/IdentityAssetLockTransactionOutputNotFoundError'); +const InvalidIdentityAssetLockTransactionOutputError = require('../../../errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionOutputError'); const ValidationResult = require('../../../validation/ValidationResult'); -const IdentityAssetLockTransactionOutPointAlreadyExistsError = require('../../../errors/IdentityAssetLockTransactionOutPointAlreadyExistsError'); +const IdentityAssetLockTransactionOutPointAlreadyExistsError = require('../../../errors/consensus/basic/identity/IdentityAssetLockTransactionOutPointAlreadyExistsError'); /** * diff --git a/lib/identity/validation/validateIdentityExistenceFactory.js b/lib/identity/validation/validateIdentityExistenceFactory.js index df725f63b..ea09d24ec 100644 --- a/lib/identity/validation/validateIdentityExistenceFactory.js +++ b/lib/identity/validation/validateIdentityExistenceFactory.js @@ -1,5 +1,5 @@ const ValidationResult = require('../../validation/ValidationResult'); -const IdentityNotFoundError = require('../../errors/IdentityNotFoundError'); +const IdentityNotFoundError = require('../../errors/consensus/signature/IdentityNotFoundError'); /** * @param {StateRepository} stateRepository diff --git a/lib/identity/validation/validatePublicKeysFactory.js b/lib/identity/validation/validatePublicKeysFactory.js index 8df7f46ed..15778f13d 100644 --- a/lib/identity/validation/validatePublicKeysFactory.js +++ b/lib/identity/validation/validatePublicKeysFactory.js @@ -7,14 +7,14 @@ const convertBuffersToArrays = require('../../util/convertBuffersToArrays'); const publicKeySchema = require('../../../schema/identity/publicKey.json'); const InvalidIdentityPublicKeyDataError = require( - '../../errors/InvalidIdentityPublicKeyDataError', + '../../errors/consensus/basic/identity/InvalidIdentityPublicKeyDataError', ); const DuplicatedIdentityPublicKeyError = require( - '../../errors/DuplicatedIdentityPublicKeyError', + '../../errors/consensus/basic/identity/DuplicatedIdentityPublicKeyError', ); const DuplicatedIdentityPublicKeyIdError = require( - '../../errors/DuplicatedIdentityPublicKeyIdError', + '../../errors/consensus/basic/identity/DuplicatedIdentityPublicKeyIdError', ); /** diff --git a/lib/stateTransition/AbstractStateTransitionIdentitySigned.js b/lib/stateTransition/AbstractStateTransitionIdentitySigned.js index 85eef081d..44175dc2d 100644 --- a/lib/stateTransition/AbstractStateTransitionIdentitySigned.js +++ b/lib/stateTransition/AbstractStateTransitionIdentitySigned.js @@ -6,11 +6,10 @@ const { const AbstractStateTransition = require('./AbstractStateTransition'); const IdentityPublicKey = require('../identity/IdentityPublicKey'); -const InvalidSignatureTypeError = require('./errors/InvalidSignatureTypeError'); const InvalidSignaturePublicKeyError = require('./errors/InvalidSignaturePublicKeyError'); const StateTransitionIsNotSignedError = require('./errors/StateTransitionIsNotSignedError'); const PublicKeyMismatchError = require('./errors/PublicKeyMismatchError'); -const InvalidIdentityPublicKeyTypeError = require('../errors/InvalidIdentityPublicKeyTypeError'); +const InvalidIdentityPublicKeyTypeError = require('./errors/InvalidIdentityPublicKeyTypeError'); /** * @abstract @@ -70,9 +69,8 @@ class AbstractStateTransitionIdentitySigned extends AbstractStateTransition { this.signByPrivateKey(privateKeyModel); break; case IdentityPublicKey.TYPES.BLS12_381: - throw new InvalidIdentityPublicKeyTypeError(identityPublicKey.getType()); default: - throw new InvalidSignatureTypeError(identityPublicKey.getType()); + throw new InvalidIdentityPublicKeyTypeError(identityPublicKey.getType()); } this.signaturePublicKeyId = identityPublicKey.getId(); diff --git a/lib/stateTransition/StateTransitionFacade.js b/lib/stateTransition/StateTransitionFacade.js index 39737bfa2..60557f60e 100644 --- a/lib/stateTransition/StateTransitionFacade.js +++ b/lib/stateTransition/StateTransitionFacade.js @@ -167,7 +167,6 @@ class StateTransitionFacade { const validateIdentityTopUpTransitionBasic = ( validateIdentityTopUpTransitionBasicFactory( validator, - validateIdentityExistence, proofValidationFunctionsByType, ) ); diff --git a/lib/stateTransition/StateTransitionFactory.js b/lib/stateTransition/StateTransitionFactory.js index b6cbfb561..29cea4152 100644 --- a/lib/stateTransition/StateTransitionFactory.js +++ b/lib/stateTransition/StateTransitionFactory.js @@ -1,5 +1,5 @@ const InvalidStateTransitionError = require('./errors/InvalidStateTransitionError'); -const ConsensusError = require('../errors/ConsensusError'); +const ConsensusError = require('../errors/consensus/ConsensusError'); class StateTransitionFactory { /** diff --git a/lib/stateTransition/createStateTransitionFactory.js b/lib/stateTransition/createStateTransitionFactory.js index 0e2c74381..4a4f57dfa 100644 --- a/lib/stateTransition/createStateTransitionFactory.js +++ b/lib/stateTransition/createStateTransitionFactory.js @@ -5,9 +5,9 @@ const DataContractCreateTransition = require('../dataContract/stateTransition/Da const IdentityCreateTransition = require('../identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition'); const IdentityTopUpTransition = require('../identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition'); -const InvalidStateTransitionTypeError = require('../errors/InvalidStateTransitionTypeError'); +const InvalidStateTransitionTypeError = require('./errors/InvalidStateTransitionTypeError'); const DataContractNotPresentError = require('../errors/DataContractNotPresentError'); -const MissingDataContractIdError = require('../errors/MissingDataContractIdError'); +const MissingDataContractIdError = require('./errors/MissingDataContractIdError'); const Identifier = require('../identifier/Identifier'); @@ -30,7 +30,7 @@ function createStateTransitionFactory(stateRepository) { */ async function createStateTransition(rawStateTransition) { if (!typesToClasses[rawStateTransition.type]) { - throw new InvalidStateTransitionTypeError(rawStateTransition); + throw new InvalidStateTransitionTypeError(rawStateTransition.type); } if (rawStateTransition.type === types.DOCUMENTS_BATCH) { @@ -45,7 +45,7 @@ function createStateTransitionFactory(stateRepository) { const dataContract = await stateRepository.fetchDataContract(dataContractId); if (!dataContract) { - throw new DataContractNotPresentError(rawStateTransition.$dataContractId); + throw new DataContractNotPresentError(dataContractId); } return dataContract; diff --git a/lib/stateTransition/errors/InvalidIdentityPublicKeyTypeError.js b/lib/stateTransition/errors/InvalidIdentityPublicKeyTypeError.js new file mode 100644 index 000000000..72b97f509 --- /dev/null +++ b/lib/stateTransition/errors/InvalidIdentityPublicKeyTypeError.js @@ -0,0 +1,22 @@ +const DPPError = require('../../errors/DPPError'); + +class InvalidIdentityPublicKeyTypeError extends DPPError { + /** + * + * @param {number} publicKeyType + */ + constructor(publicKeyType) { + super('Invalid signature type'); + + this.publicKeyType = publicKeyType; + } + + /** + * @returns {number} + */ + getPublicKeyType() { + return this.publicKeyType; + } +} + +module.exports = InvalidIdentityPublicKeyTypeError; diff --git a/lib/stateTransition/errors/InvalidSignaturePublicKeyError.js b/lib/stateTransition/errors/InvalidSignaturePublicKeyError.js index f98098c02..4ff0885d8 100644 --- a/lib/stateTransition/errors/InvalidSignaturePublicKeyError.js +++ b/lib/stateTransition/errors/InvalidSignaturePublicKeyError.js @@ -1,13 +1,13 @@ -class InvalidSignaturePublicKeyError extends Error { +const DPPError = require('../../errors/DPPError'); + +class InvalidSignaturePublicKeyError extends DPPError { /** * * @param {Buffer} signaturePublicKey */ constructor(signaturePublicKey) { - super(); + super('Invalid signature public key'); - this.name = this.constructor.name; - this.message = 'Invalid signature public key'; this.publicKey = signaturePublicKey; } diff --git a/lib/stateTransition/errors/InvalidSignatureTypeError.js b/lib/stateTransition/errors/InvalidSignatureTypeError.js deleted file mode 100644 index 488e340a6..000000000 --- a/lib/stateTransition/errors/InvalidSignatureTypeError.js +++ /dev/null @@ -1,23 +0,0 @@ -class InvalidSignatureTypeError extends Error { - /** - * - * @param {number} signatureType - */ - constructor(signatureType) { - super(); - - this.name = this.constructor.name; - this.message = 'Invalid signature type'; - this.signatureType = signatureType; - } - - /** - * - * @returns {number} - */ - getSignatureType() { - return this.signatureType; - } -} - -module.exports = InvalidSignatureTypeError; diff --git a/lib/stateTransition/errors/InvalidStateTransitionError.js b/lib/stateTransition/errors/InvalidStateTransitionError.js index db0258c8a..c44852b22 100644 --- a/lib/stateTransition/errors/InvalidStateTransitionError.js +++ b/lib/stateTransition/errors/InvalidStateTransitionError.js @@ -1,23 +1,20 @@ -class InvalidStateTransitionError extends Error { +const DPPError = require('../../errors/DPPError'); + +class InvalidStateTransitionError extends DPPError { /** * @param {ConsensusError[]} errors * @param {RawStateTransition} [rawStateTransition] */ constructor(errors, rawStateTransition = undefined) { - super(); - - this.name = this.constructor.name; - this.message = `Invalid State Transition: "${errors[0].message}"`; + let message = `Invalid State Transition: "${errors[0].message}"`; if (errors.length > 1) { - this.message = `${this.message} and ${errors.length - 1} more`; + message = `${message} and ${errors.length - 1} more`; } + super(message); + this.errors = errors; this.rawStateTransition = rawStateTransition; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/stateTransition/errors/InvalidStateTransitionTypeError.js b/lib/stateTransition/errors/InvalidStateTransitionTypeError.js new file mode 100644 index 000000000..1137d6fc1 --- /dev/null +++ b/lib/stateTransition/errors/InvalidStateTransitionTypeError.js @@ -0,0 +1,23 @@ +const DPPError = require('../../errors/DPPError'); + +class InvalidStateTransitionTypeError extends DPPError { + /** + * @param {number} type + */ + constructor(type) { + super(`Invalid State Transition type ${type}`); + + this.type = type; + } + + /** + * Get State Transition type + * + * @return {number} + */ + getType() { + return this.type; + } +} + +module.exports = InvalidStateTransitionTypeError; diff --git a/lib/stateTransition/errors/MissingDataContractIdError.js b/lib/stateTransition/errors/MissingDataContractIdError.js new file mode 100644 index 000000000..ff5a82d96 --- /dev/null +++ b/lib/stateTransition/errors/MissingDataContractIdError.js @@ -0,0 +1,31 @@ +const DPPError = require('../../errors/DPPError'); + +class MissingDataContractIdError extends DPPError { + /** + * @param { + * RawDocumentCreateTransition| + * RawDocumentReplaceTransition| + * RawDocumentDeleteTransition + * } rawDocumentTransition + */ + constructor(rawDocumentTransition) { + super('$dataContractId is not present'); + + this.rawDocumentTransition = rawDocumentTransition; + } + + /** + * Get Raw Document Transition + * + * @return { + * RawDocumentCreateTransition| + * RawDocumentReplaceTransition| + * RawDocumentDeleteTransition + * } + */ + getRawDocument() { + return this.rawDocument; + } +} + +module.exports = MissingDataContractIdError; diff --git a/lib/stateTransition/errors/PublicKeyMismatchError.js b/lib/stateTransition/errors/PublicKeyMismatchError.js index 5788b7095..eedf62b56 100644 --- a/lib/stateTransition/errors/PublicKeyMismatchError.js +++ b/lib/stateTransition/errors/PublicKeyMismatchError.js @@ -1,19 +1,14 @@ -class PublicKeyMismatchError extends Error { +const DPPError = require('../../errors/DPPError'); + +class PublicKeyMismatchError extends DPPError { /** * * @param {IdentityPublicKey} publicKey */ constructor(publicKey) { - super(); - - this.name = this.constructor.name; - this.message = 'Public key mismatched'; + super('Public key mismatched'); this.publicKey = publicKey; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/stateTransition/errors/StateTransitionIsNotSignedError.js b/lib/stateTransition/errors/StateTransitionIsNotSignedError.js index 016d9acf6..915f5bbd9 100644 --- a/lib/stateTransition/errors/StateTransitionIsNotSignedError.js +++ b/lib/stateTransition/errors/StateTransitionIsNotSignedError.js @@ -1,19 +1,14 @@ -class StateTransitionIsNotSignedError extends Error { +const DPPError = require('../../errors/DPPError'); + +class StateTransitionIsNotSignedError extends DPPError { /** * * @param {AbstractStateTransition} stateTransition */ constructor(stateTransition) { - super(); - - this.name = this.constructor.name; - this.message = 'State Transition is not signed'; + super('State Transition is not signed'); this.stateTransition = stateTransition; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/stateTransition/errors/WrongStateTransitionTypeError.js b/lib/stateTransition/errors/WrongStateTransitionTypeError.js index 3b0dc1ae2..21040e54c 100644 --- a/lib/stateTransition/errors/WrongStateTransitionTypeError.js +++ b/lib/stateTransition/errors/WrongStateTransitionTypeError.js @@ -1,18 +1,13 @@ -class WrongStateTransitionTypeError extends Error { +const DPPError = require('../../errors/DPPError'); + +class WrongStateTransitionTypeError extends DPPError { /** * @param {AbstractStateTransition} stateTransition */ constructor(stateTransition) { - super(); - - this.name = this.constructor.name; - this.message = 'Can\'t apply a state transition to a model, wrong state transition type'; + super('Can\'t apply a state transition to a model, wrong state transition type'); this.stateTransition = stateTransition; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } } /** diff --git a/lib/stateTransition/validation/validateStateTransitionBasicFactory.js b/lib/stateTransition/validation/validateStateTransitionBasicFactory.js index 9de3e46db..c66df7435 100644 --- a/lib/stateTransition/validation/validateStateTransitionBasicFactory.js +++ b/lib/stateTransition/validation/validateStateTransitionBasicFactory.js @@ -1,8 +1,8 @@ const ValidationResult = require('../../validation/ValidationResult'); -const MissingStateTransitionTypeError = require('../../errors/MissingStateTransitionTypeError'); -const InvalidStateTransitionTypeError = require('../../errors/InvalidStateTransitionTypeError'); -const StateTransitionMaxSizeExceededError = require('../../errors/StateTransitionMaxSizeExceededError'); +const MissingStateTransitionTypeError = require('../../errors/consensus/basic/stateTransition/MissingStateTransitionTypeError'); +const InvalidStateTransitionTypeError = require('../../errors/consensus/basic/stateTransition/InvalidStateTransitionTypeError'); +const StateTransitionMaxSizeExceededError = require('../../errors/consensus/basic/stateTransition/StateTransitionMaxSizeExceededError'); const MaxEncodedBytesReachedError = require('../../util/errors/MaxEncodedBytesReachedError'); /** diff --git a/lib/stateTransition/validation/validateStateTransitionFeeFactory.js b/lib/stateTransition/validation/validateStateTransitionFeeFactory.js index 0c002381b..83e8e523a 100644 --- a/lib/stateTransition/validation/validateStateTransitionFeeFactory.js +++ b/lib/stateTransition/validation/validateStateTransitionFeeFactory.js @@ -1,7 +1,7 @@ const ValidationResult = require('../../validation/ValidationResult'); -const InvalidStateTransitionTypeError = require('../../errors/InvalidStateTransitionTypeError'); -const BalanceIsNotEnoughError = require('../../errors/BalanceIsNotEnoughError'); +const InvalidStateTransitionTypeError = require('../errors/InvalidStateTransitionTypeError'); +const BalanceIsNotEnoughError = require('../../errors/consensus/fee/BalanceIsNotEnoughError'); const stateTransitionTypes = require('../stateTransitionTypes'); const { convertSatoshiToCredits } = require('../../identity/creditsConverter'); @@ -55,7 +55,7 @@ function validateStateTransitionFeeFactory( break; } default: - throw new InvalidStateTransitionTypeError(stateTransition.toObject()); + throw new InvalidStateTransitionTypeError(stateTransition.getType()); } if (balance < feeSize) { diff --git a/lib/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.js b/lib/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.js index da239021b..a448e01a4 100644 --- a/lib/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.js +++ b/lib/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.js @@ -1,7 +1,7 @@ const IdentityPublicKey = require('../../identity/IdentityPublicKey'); -const InvalidIdentityPublicKeyTypeError = require('../../errors/InvalidIdentityPublicKeyTypeError'); -const InvalidStateTransitionSignatureError = require('../../errors/InvalidStateTransitionSignatureError'); -const MissingPublicKeyError = require('../../errors/MissingPublicKeyError'); +const InvalidIdentityPublicKeyTypeError = require('../../errors/consensus/signature/InvalidIdentityPublicKeyTypeError'); +const InvalidStateTransitionSignatureError = require('../../errors/consensus/signature/InvalidStateTransitionSignatureError'); +const MissingPublicKeyError = require('../../errors/consensus/signature/MissingPublicKeyError'); /** * Validate state transition signature diff --git a/lib/stateTransition/validation/validateStateTransitionKeySignatureFactory.js b/lib/stateTransition/validation/validateStateTransitionKeySignatureFactory.js index 791c0610c..5255fa83e 100644 --- a/lib/stateTransition/validation/validateStateTransitionKeySignatureFactory.js +++ b/lib/stateTransition/validation/validateStateTransitionKeySignatureFactory.js @@ -1,4 +1,4 @@ -const InvalidStateTransitionSignatureError = require('../../errors/InvalidStateTransitionSignatureError'); +const InvalidStateTransitionSignatureError = require('../../errors/consensus/signature/InvalidStateTransitionSignatureError'); const ValidationResult = require('../../validation/ValidationResult'); diff --git a/lib/stateTransition/validation/validateStateTransitionStateFactory.js b/lib/stateTransition/validation/validateStateTransitionStateFactory.js index 88636d93e..9bfbedd02 100644 --- a/lib/stateTransition/validation/validateStateTransitionStateFactory.js +++ b/lib/stateTransition/validation/validateStateTransitionStateFactory.js @@ -1,6 +1,4 @@ -const ValidationResult = require('../../validation/ValidationResult'); - -const InvalidStateTransitionTypeError = require('../../errors/InvalidStateTransitionTypeError'); +const InvalidStateTransitionTypeError = require('../errors/InvalidStateTransitionTypeError'); /** * @param {Object} validationFunctions @@ -13,16 +11,10 @@ function validateStateTransitionStateFactory(validationFunctions) { * @return {ValidationResult} */ async function validateStateTransitionState(stateTransition) { - const result = new ValidationResult(); - const validationFunction = validationFunctions[stateTransition.getType()]; if (!validationFunction) { - result.addError( - new InvalidStateTransitionTypeError(stateTransition.toObject()), - ); - - return result; + throw new InvalidStateTransitionTypeError(stateTransition.getType()); } return validationFunction(stateTransition); diff --git a/lib/test/expect/expectError.js b/lib/test/expect/expectError.js index d23f3c439..6fc8dce0a 100644 --- a/lib/test/expect/expectError.js +++ b/lib/test/expect/expectError.js @@ -1,8 +1,8 @@ const { expect } = require('chai'); const ValidationResult = require('../../validation/ValidationResult'); -const ConsensusError = require('../../errors/ConsensusError'); -const JsonSchemaError = require('../../errors/JsonSchemaError'); +const ConsensusError = require('../../errors/consensus/ConsensusError'); +const JsonSchemaError = require('../../errors/consensus/basic/JsonSchemaError'); const expectError = { /** diff --git a/lib/util/errors/MaxEncodedBytesReachedError.js b/lib/util/errors/MaxEncodedBytesReachedError.js index c169e2341..43bdeccc3 100644 --- a/lib/util/errors/MaxEncodedBytesReachedError.js +++ b/lib/util/errors/MaxEncodedBytesReachedError.js @@ -1,13 +1,12 @@ -class MaxEncodedBytesReachedError extends Error { +const DPPError = require('../../errors/DPPError'); + +class MaxEncodedBytesReachedError extends DPPError { /** * @param {*} payload * @param {number} maxSizeKBytes */ constructor(payload, maxSizeKBytes) { - super(); - - this.message = `Payload reached a ${maxSizeKBytes}Kb limit`; - this.name = this.constructor.name; + super(`Payload reached a ${maxSizeKBytes}Kb limit`); this.payload = payload; this.maxSizeKBytes = maxSizeKBytes; diff --git a/lib/validation/JsonSchemaValidator.js b/lib/validation/JsonSchemaValidator.js index 7b1087917..24879b8de 100644 --- a/lib/validation/JsonSchemaValidator.js +++ b/lib/validation/JsonSchemaValidator.js @@ -1,7 +1,7 @@ const dataContractMetaSchema = require('../../schema/dataContract/dataContractMeta'); const ValidationResult = require('./ValidationResult'); -const JsonSchemaError = require('../errors/JsonSchemaError'); +const JsonSchemaError = require('../errors/consensus/basic/JsonSchemaError'); class JsonSchemaValidator { constructor(ajv) { diff --git a/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js b/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js index e69f3aed3..152c9123d 100644 --- a/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +++ b/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js @@ -21,9 +21,9 @@ const { const ValidationResult = require('../../../../../../../lib/validation/ValidationResult'); -const ConsensusError = require('../../../../../../../lib/errors/ConsensusError'); +const ConsensusError = require('../../../../../../../lib/errors/consensus/ConsensusError'); -const InvalidDataContractIdError = require('../../../../../../../lib/errors/InvalidDataContractIdError'); +const InvalidDataContractIdError = require('../../../../../../../lib/errors/consensus/basic/dataContract/InvalidDataContractIdError'); describe('validateDataContractCreateTransitionBasicFactory', () => { let validateDataContractMock; @@ -185,6 +185,7 @@ describe('validateDataContractCreateTransitionBasicFactory', () => { validateDataContractMock.returns(dataContractResult); + const expectedId = rawStateTransition.dataContract.$id; rawStateTransition.dataContract.$id = crypto.randomBytes(34); const result = await validateDataContractCreateTransitionBasic(rawStateTransition); @@ -194,7 +195,8 @@ describe('validateDataContractCreateTransitionBasicFactory', () => { const [error] = result.getErrors(); expect(error).to.be.an.instanceOf(InvalidDataContractIdError); - expect(error.getRawDataContract()).to.equal(rawStateTransition.dataContract); + expect(error.getExpectedId()).to.deep.equal(expectedId); + expect(error.getInvalidId()).to.deep.equal(rawStateTransition.dataContract.$id); }); }); diff --git a/test/integration/dataContract/validation/validateDataContractFactory.spec.js b/test/integration/dataContract/validation/validateDataContractFactory.spec.js index d45f8a80a..9d1b93138 100644 --- a/test/integration/dataContract/validation/validateDataContractFactory.spec.js +++ b/test/integration/dataContract/validation/validateDataContractFactory.spec.js @@ -17,13 +17,13 @@ const getDataContractFixture = require('../../../../lib/test/fixtures/getDataCon const { expectJsonSchemaError, expectValidationError } = require('../../../../lib/test/expect/expectError'); -const DuplicateIndexError = require('../../../../lib/errors/DuplicateIndexError'); -const UndefinedIndexPropertyError = require('../../../../lib/errors/UndefinedIndexPropertyError'); -const InvalidIndexPropertyTypeError = require('../../../../lib/errors/InvalidIndexPropertyTypeError'); -const SystemPropertyIndexAlreadyPresentError = require('../../../../lib/errors/SystemPropertyIndexAlreadyPresentError'); -const UniqueIndicesLimitReachedError = require('../../../../lib/errors/UniqueIndicesLimitReachedError'); -const InvalidIndexedPropertyConstraintError = require('../../../../lib/errors/InvalidIndexedPropertyConstraintError'); -const InvalidCompoundIndexError = require('../../../../lib/errors/InvalidCompoundIndexError'); +const DuplicateIndexError = require('../../../../lib/errors/consensus/basic/dataContract/DuplicateIndexError'); +const UndefinedIndexPropertyError = require('../../../../lib/errors/consensus/basic/dataContract/UndefinedIndexPropertyError'); +const InvalidIndexPropertyTypeError = require('../../../../lib/errors/consensus/basic/dataContract/InvalidIndexPropertyTypeError'); +const SystemPropertyIndexAlreadyPresentError = require('../../../../lib/errors/consensus/basic/dataContract/SystemPropertyIndexAlreadyPresentError'); +const UniqueIndicesLimitReachedError = require('../../../../lib/errors/consensus/basic/dataContract/UniqueIndicesLimitReachedError'); +const InvalidIndexedPropertyConstraintError = require('../../../../lib/errors/consensus/basic/dataContract/InvalidIndexedPropertyConstraintError'); +const InvalidCompoundIndexError = require('../../../../lib/errors/consensus/basic/dataContract/InvalidCompoundIndexError'); const IncompatibleRe2PatternError = require('../../../../lib/document/errors/IncompatibleRe2PatternError'); describe('validateDataContractFactory', function main() { diff --git a/test/integration/document/DocumentFacade.spec.js b/test/integration/document/DocumentFacade.spec.js index fd7fc178b..fecf9b25a 100644 --- a/test/integration/document/DocumentFacade.spec.js +++ b/test/integration/document/DocumentFacade.spec.js @@ -12,7 +12,7 @@ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContra const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture'); const getDocumentTransitionsFixture = require('../../../lib/test/fixtures/getDocumentTransitionsFixture'); -const DataContractNotPresentError = require('../../../lib/errors/DataContractNotPresentError'); +const DataContractNotPresentError = require('../../../lib/errors/consensus/basic/document/DataContractNotPresentError'); const MissingOptionError = require('../../../lib/errors/MissingOptionError'); describe('DocumentFacade', () => { diff --git a/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js b/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js index 9b4dc8a83..e934624cb 100644 --- a/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +++ b/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js @@ -24,16 +24,16 @@ const { expectValidationError, expectJsonSchemaError } = require('../../../../.. const createStateRepositoryMock = require('../../../../../../../lib/test/mocks/createStateRepositoryMock'); -const ConsensusError = require('../../../../../../../lib/errors/ConsensusError'); -const DuplicateDocumentTransitionsError = require('../../../../../../../lib/errors/DuplicateDocumentTransitionsError'); -const InvalidDocumentTransitionIdError = require('../../../../../../../lib/errors/InvalidDocumentTransitionIdError'); -const DataContractNotPresentError = require('../../../../../../../lib/errors/DataContractNotPresentError'); -const MissingDataContractIdError = require('../../../../../../../lib/errors/MissingDataContractIdError'); -const MissingDocumentTypeError = require('../../../../../../../lib/errors/MissingDocumentTypeError'); -const InvalidDocumentTypeError = require('../../../../../../../lib/errors/InvalidDocumentTypeError'); -const MissingDocumentTransitionActionError = require('../../../../../../../lib/errors/MissingDocumentTransitionActionError'); -const InvalidDocumentTransitionActionError = require('../../../../../../../lib/errors/InvalidDocumentTransitionActionError'); -const InvalidIdentifierError = require('../../../../../../../lib/errors/InvalidIdentifierError'); +const ConsensusError = require('../../../../../../../lib/errors/consensus/ConsensusError'); +const DuplicateDocumentTransitionsError = require('../../../../../../../lib/errors/consensus/basic/document/DuplicateDocumentTransitionsError'); +const InvalidDocumentTransitionIdError = require('../../../../../../../lib/errors/consensus/basic/document/InvalidDocumentTransitionIdError'); +const DataContractNotPresentError = require('../../../../../../../lib/errors/consensus/basic/document/DataContractNotPresentError'); +const MissingDataContractIdError = require('../../../../../../../lib/errors/consensus/basic/document/MissingDataContractIdError'); +const MissingDocumentTransitionTypeError = require('../../../../../../../lib/errors/consensus/basic/document/MissingDocumentTransitionTypeError'); +const InvalidDocumentTypeError = require('../../../../../../../lib/errors/consensus/basic/document/InvalidDocumentTypeError'); +const MissingDocumentTransitionActionError = require('../../../../../../../lib/errors/consensus/basic/document/MissingDocumentTransitionActionError'); +const InvalidDocumentTransitionActionError = require('../../../../../../../lib/errors/consensus/basic/document/InvalidDocumentTransitionActionError'); +const InvalidIdentifierError = require('../../../../../../../lib/errors/consensus/basic/InvalidIdentifierError'); const IdentifierError = require('../../../../../../../lib/identifier/errors/IdentifierError'); describe('validateDocumentsBatchTransitionBasicFactory', () => { @@ -506,7 +506,7 @@ describe('validateDocumentsBatchTransitionBasicFactory', () => { const result = await validateDocumentsBatchTransitionBasic(rawStateTransition); - expectValidationError(result, MissingDocumentTypeError); + expectValidationError(result, MissingDocumentTransitionTypeError); const [error] = result.getErrors(); @@ -568,27 +568,26 @@ describe('validateDocumentsBatchTransitionBasicFactory', () => { expect(findDuplicatesByIndicesMock).to.have.not.been.called(); }); - it('should be create, replace or delete', async () => { + it('should throw InvalidDocumentTransitionActionError if action is not valid', async () => { const [firstDocumentTransition] = rawStateTransition.transitions; firstDocumentTransition.$action = 4; - const result = await validateDocumentsBatchTransitionBasic(rawStateTransition); - - expectValidationError(result, InvalidDocumentTransitionActionError); - - const [error] = result.getErrors(); - - expect(error.getAction()).to.equal(firstDocumentTransition.$action); - expect(error.getRawDocumentTransition()).to.deep.equal(firstDocumentTransition); + try { + await validateDocumentsBatchTransitionBasic(rawStateTransition); + } catch (e) { + expect(e).to.be.instanceOf(InvalidDocumentTransitionActionError); + expect(e.getAction()).to.equal(firstDocumentTransition.$action); + expect(e.getRawDocumentTransition()).to.deep.equal(firstDocumentTransition); - expect(stateRepositoryMock.fetchDataContract).to.have.been.calledOnceWithExactly( - dataContract.getId(), - ); + expect(stateRepositoryMock.fetchDataContract).to.have.been.calledOnceWithExactly( + dataContract.getId(), + ); - expect(enrichSpy).to.have.been.calledThrice(); - expect(findDuplicatesByIdMock).to.have.not.been.called(); - expect(findDuplicatesByIndicesMock).to.have.not.been.called(); + expect(enrichSpy).to.have.been.calledThrice(); + expect(findDuplicatesByIdMock).to.have.not.been.called(); + expect(findDuplicatesByIndicesMock).to.have.not.been.called(); + } }); }); diff --git a/test/integration/document/validation/validateDocumentFactory.spec.js b/test/integration/document/validation/validateDocumentFactory.spec.js index a0c21d60d..02c9f565f 100644 --- a/test/integration/document/validation/validateDocumentFactory.spec.js +++ b/test/integration/document/validation/validateDocumentFactory.spec.js @@ -13,17 +13,14 @@ const enrichDataContractWithBaseSchema = require('../../../../lib/dataContract/e const getDataContractFixture = require('../../../../lib/test/fixtures/getDataContractFixture'); const getDocumentsFixture = require('../../../../lib/test/fixtures/getDocumentsFixture'); -const MissingDocumentTypeError = require('../../../../lib/errors/MissingDocumentTypeError'); -const InvalidDocumentTypeError = require('../../../../lib/errors/InvalidDocumentTypeError'); -const MismatchDocumentContractIdAndDataContractError = require('../../../../lib/errors/MismatchDocumentContractIdAndDataContractError'); +const MissingDocumentTypeError = require('../../../../lib/errors/consensus/basic/document/MissingDocumentTypeError'); +const InvalidDocumentTypeError = require('../../../../lib/errors/consensus/basic/document/InvalidDocumentTypeError'); const { expectValidationError, expectJsonSchemaError, } = require('../../../../lib/test/expect/expectError'); -const generateRandomIdentifier = require('../../../../lib/test/utils/generateRandomIdentifier'); - describe('validateDocumentFactory', () => { let dataContract; let rawDocuments; @@ -414,19 +411,6 @@ describe('validateDocumentFactory', () => { }); }); - it('should return invalid result if a document contractId is not equal to Data Contract ID', () => { - rawDocument.$dataContractId = generateRandomIdentifier(); - - const result = validateDocument(rawDocument, dataContract); - - expectValidationError(result, MismatchDocumentContractIdAndDataContractError); - - const [error] = result.getErrors(); - - expect(error.getDataContract()).to.equal(dataContract); - expect(error.getRawDocument()).to.equal(rawDocument); - }); - it('return invalid result if a byte array exceeds `maxItems`', () => { // eslint-disable-next-line prefer-destructuring rawDocument = getDocumentsFixture(dataContract)[8].toObject(); diff --git a/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js b/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js index 347172bfa..8ca830774 100644 --- a/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +++ b/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js @@ -16,7 +16,7 @@ const { } = require('../../../../../../../lib/test/expect/expectError'); const ValidationResult = require('../../../../../../../lib/validation/ValidationResult'); -const ConsensusError = require('../../../../../../../lib/errors/ConsensusError'); +const ConsensusError = require('../../../../../../../lib/errors/consensus/ConsensusError'); const InstantAssetLockProof = require('../../../../../../../lib/identity/stateTransition/assetLockProof/instant/InstantAssetLockProof'); const ChainAssetLockProof = require('../../../../../../../lib/identity/stateTransition/assetLockProof/chain/ChainAssetLockProof'); diff --git a/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js b/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js index 889a59acb..e503bef21 100644 --- a/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +++ b/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js @@ -17,9 +17,7 @@ const { const ValidationResult = require('../../../../../../../lib/validation/ValidationResult'); -const ConsensusError = require('../../../../../../../lib/errors/ConsensusError'); -const IdentityNotFoundError = require('../../../../../../../lib/errors/IdentityNotFoundError'); -const Identifier = require('../../../../../../../lib/identifier/Identifier'); +const ConsensusError = require('../../../../../../../lib/errors/consensus/ConsensusError'); const ChainAssetLockProof = require('../../../../../../../lib/identity/stateTransition/assetLockProof/chain/ChainAssetLockProof'); const InstantAssetLockProof = require('../../../../../../../lib/identity/stateTransition/assetLockProof/instant/InstantAssetLockProof'); @@ -28,12 +26,9 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => { let stateTransition; let assetLockPublicKeyHash; let validateIdentityTopUpTransitionBasic; - let validateIdentityExistenceMock; let proofValidationFunctionsByTypeMock; beforeEach(async function beforeEach() { - validateIdentityExistenceMock = this.sinonSandbox.stub().resolves(new ValidationResult()); - assetLockPublicKeyHash = Buffer.alloc(20, 1); const assetLockValidationResult = new ValidationResult(); @@ -51,7 +46,6 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => { validateIdentityTopUpTransitionBasic = validateIdentityTopUpTransitionBasicFactory( jsonSchemaValidator, - validateIdentityExistenceMock, proofValidationFunctionsByTypeMock, ); @@ -267,31 +261,6 @@ describe('validateIdentityTopUpTransitionBasicFactory', () => { expect(error.instancePath).to.equal('/identityId'); expect(error.keyword).to.equal('maxItems'); }); - - it('should exist', async () => { - const identityNotFoundResult = new ValidationResult([ - new IdentityNotFoundError(stateTransition.getIdentityId()), - ]); - - validateIdentityExistenceMock.resolves(identityNotFoundResult); - - const result = await validateIdentityTopUpTransitionBasic(rawStateTransition); - - expectValidationError(result, IdentityNotFoundError); - - const [error] = result.getErrors(); - - expect(error.getIdentityId()).to.be.equal(stateTransition.getIdentityId()); - - expect(validateIdentityExistenceMock).to.be.calledOnce(); - - expect(validateIdentityExistenceMock.getCall(0).args).to.have.lengthOf(1); - - const [identityId] = validateIdentityExistenceMock.getCall(0).args; - - expect(identityId).to.be.instanceOf(Identifier); - expect(identityId).to.deep.equal(stateTransition.getIdentityId()); - }); }); describe('signature', () => { diff --git a/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js b/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js index 8a0151858..03419f59a 100644 --- a/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +++ b/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js @@ -12,10 +12,10 @@ const { expectValidationError, expectJsonSchemaError } = require( const validateChainAssetLockProofStructureFactory = require('../../../../../../lib/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory'); const ValidationResult = require('../../../../../../lib/validation/ValidationResult'); -const IdentityAssetLockTransactionIsNotFoundError = require('../../../../../../lib/errors/IdentityAssetLockTransactionIsNotFoundError'); -const ConsensusError = require('../../../../../../lib/errors/ConsensusError'); -const InvalidAssetLockProofCoreChainHeightError = require('../../../../../../lib/errors/InvalidAssetLockProofCoreChainHeightError'); -const InvalidAssetLockProofTransactionHeightError = require('../../../../../../lib/errors/InvalidAssetLockProofTransactionHeightError'); +const IdentityAssetLockTransactionIsNotFoundError = require('../../../../../../lib/errors/consensus/basic/identity/IdentityAssetLockTransactionIsNotFoundError'); +const ConsensusError = require('../../../../../../lib/errors/consensus/ConsensusError'); +const InvalidAssetLockProofCoreChainHeightError = require('../../../../../../lib/errors/consensus/basic/identity/InvalidAssetLockProofCoreChainHeightError'); +const InvalidAssetLockProofTransactionHeightError = require('../../../../../../lib/errors/consensus/basic/identity/InvalidAssetLockProofTransactionHeightError'); describe('validateChainAssetLockProofStructureFactory', () => { let rawProof; diff --git a/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js b/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js index 2319ab480..feada1841 100644 --- a/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +++ b/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js @@ -4,8 +4,8 @@ const fetchAssetLockTransactionOutputFactory = require('../../../../../lib/ident const getChainAssetLockFixture = require('../../../../../lib/test/fixtures/getChainAssetLockProofFixture'); const getInstantAssetLockProofFixture = require('../../../../../lib/test/fixtures/getInstantAssetLockProofFixture'); const createStateRepositoryMock = require('../../../../../lib/test/mocks/createStateRepositoryMock'); -const IdentityAssetLockTransactionIsNotFoundError = require('../../../../../lib/errors/IdentityAssetLockTransactionIsNotFoundError'); -const UnknownAssetLockProofError = require('../../../../../lib/errors/UnknownAssetLockProofError'); +const IdentityAssetLockTransactionIsNotFoundError = require('../../../../../lib/errors/consensus/basic/identity/IdentityAssetLockTransactionIsNotFoundError'); +const UnknownAssetLockProofError = require('../../../../../lib/identity/errors/UnknownAssetLockProofTypeError'); describe('fetchAssetLockTransactionOutputFactory', () => { let fetchAssetLockTransactionOutput; diff --git a/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js b/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js index 18290cd06..303041290 100644 --- a/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +++ b/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js @@ -9,16 +9,16 @@ const createAjv = require('../../../../../../lib/ajv/createAjv'); const getInstantAssetLockFixture = require('../../../../../../lib/test/fixtures/getInstantAssetLockProofFixture'); const JsonSchemaValidator = require('../../../../../../lib/validation/JsonSchemaValidator'); const createStateRepositoryMock = require('../../../../../../lib/test/mocks/createStateRepositoryMock'); -const InvalidIdentityAssetLockProofError = require('../../../../../../lib/errors/InvalidIdentityAssetLockProofError'); -const IdentityAssetLockProofMismatchError = require('../../../../../../lib/errors/IdentityAssetLockProofMismatchError'); -const InvalidIdentityAssetLockProofSignatureError = require('../../../../../../lib/errors/InvalidIdentityAssetLockProofSignatureError'); +const InvalidIdentityAssetLockProofError = require('../../../../../../lib/errors/consensus/basic/identity/InvalidIdentityAssetLockProofError'); +const IdentityAssetLockProofMismatchError = require('../../../../../../lib/errors/consensus/basic/identity/IdentityAssetLockProofMismatchError'); +const InvalidIdentityAssetLockProofSignatureError = require('../../../../../../lib/errors/consensus/basic/identity/InvalidIdentityAssetLockProofSignatureError'); const { expectValidationError, expectJsonSchemaError } = require( '../../../../../../lib/test/expect/expectError', ); const ValidationResult = require('../../../../../../lib/validation/ValidationResult'); -const InvalidIdentityAssetLockTransactionError = require('../../../../../../lib/errors/InvalidIdentityAssetLockTransactionError'); +const InvalidIdentityAssetLockTransactionError = require('../../../../../../lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionError'); describe('validateInstantAssetLockProofStructureFactory', () => { let rawProof; diff --git a/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js b/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js index 8aa8f62d2..fd17af423 100644 --- a/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +++ b/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js @@ -4,10 +4,10 @@ const { Transaction } = require('@dashevo/dashcore-lib'); const validateAssetLockTransactionFactory = require('../../../../../lib/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory'); const createStateRepositoryMock = require('../../../../../lib/test/mocks/createStateRepositoryMock'); const ValidationResult = require('../../../../../lib/validation/ValidationResult'); -const InvalidIdentityAssetLockTransactionError = require('../../../../../lib/errors/InvalidIdentityAssetLockTransactionError'); -const IdentityAssetLockTransactionOutputNotFoundError = require('../../../../../lib/errors/IdentityAssetLockTransactionOutputNotFoundError'); -const IdentityAssetLockTransactionOutPointAlreadyExistsError = require('../../../../../lib/errors/IdentityAssetLockTransactionOutPointAlreadyExistsError'); -const InvalidIdentityAssetLockTransactionOutputError = require('../../../../../lib/errors/InvalidIdentityAssetLockTransactionOutputError'); +const InvalidIdentityAssetLockTransactionError = require('../../../../../lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionError'); +const IdentityAssetLockTransactionOutputNotFoundError = require('../../../../../lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutputNotFoundError'); +const IdentityAssetLockTransactionOutPointAlreadyExistsError = require('../../../../../lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutPointAlreadyExistsError'); +const InvalidIdentityAssetLockTransactionOutputError = require('../../../../../lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionOutputError'); function getValidateAssetLockTransactionFactoryMock(TransactionClassMock) { return rewiremock.proxy( diff --git a/test/integration/identity/validation/validateIdentityFactory.spec.js b/test/integration/identity/validation/validateIdentityFactory.spec.js index 7ac4940bb..19d292c01 100644 --- a/test/integration/identity/validation/validateIdentityFactory.spec.js +++ b/test/integration/identity/validation/validateIdentityFactory.spec.js @@ -17,7 +17,7 @@ const validateIdentityFactory = require( ); const JsonSchemaError = require( - '../../../../lib/errors/JsonSchemaError', + '../../../../lib/errors/consensus/basic/JsonSchemaError', ); const ValidationResult = require('../../../../lib/validation/ValidationResult'); diff --git a/test/integration/identity/validation/validatePublicKeysFactory.spec.js b/test/integration/identity/validation/validatePublicKeysFactory.spec.js index cccd4d231..47884572b 100644 --- a/test/integration/identity/validation/validatePublicKeysFactory.spec.js +++ b/test/integration/identity/validation/validatePublicKeysFactory.spec.js @@ -18,14 +18,14 @@ const { } = require('../../../../lib/test/expect/expectError'); const DuplicatedIdentityPublicKeyError = require( - '../../../../lib/errors/DuplicatedIdentityPublicKeyError', + '../../../../lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyError', ); const DuplicatedIdentityPublicKeyIdError = require( - '../../../../lib/errors/DuplicatedIdentityPublicKeyIdError', + '../../../../lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyIdError', ); const InvalidIdentityPublicKeyDataError = require( - '../../../../lib/errors/InvalidIdentityPublicKeyDataError', + '../../../../lib/errors/consensus/basic/identity/InvalidIdentityPublicKeyDataError', ); describe('validatePublicKeysFactory', () => { diff --git a/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js b/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js index c0cec9f44..ed9d951c1 100644 --- a/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +++ b/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js @@ -4,7 +4,7 @@ const calculateStateTransitionFee = require('../../../lib/stateTransition/calcul const StateTransitionMock = require('../../../lib/test/mocks/StateTransitionMock'); const IdentityPublicKey = require('../../../lib/identity/IdentityPublicKey'); -const InvalidSignatureTypeError = require('../../../lib/stateTransition/errors/InvalidSignatureTypeError'); +const InvalidSignatureTypeError = require('../../../lib/stateTransition/errors/InvalidIdentityPublicKeyTypeError'); const InvalidSignaturePublicKeyError = require('../../../lib/stateTransition/errors/InvalidSignaturePublicKeyError'); const StateTransitionIsNotSignedError = require('../../../lib/stateTransition/errors/StateTransitionIsNotSignedError'); const PublicKeyMismatchError = require('../../../lib/stateTransition/errors/PublicKeyMismatchError'); @@ -149,7 +149,7 @@ describe('AbstractStateTransitionIdentitySigned', () => { expect.fail('Should throw InvalidSignatureTypeError'); } catch (e) { expect(e).to.be.instanceOf(InvalidSignatureTypeError); - expect(e.getSignatureType()).to.be.equal(identityPublicKey.getType()); + expect(e.getPublicKeyType()).to.be.equal(identityPublicKey.getType()); } }); }); diff --git a/test/integration/stateTransition/StateTransitionFacade.spec.js b/test/integration/stateTransition/StateTransitionFacade.spec.js index 2d670fcbd..64e34f996 100644 --- a/test/integration/stateTransition/StateTransitionFacade.spec.js +++ b/test/integration/stateTransition/StateTransitionFacade.spec.js @@ -19,7 +19,7 @@ const IdentityPublicKey = require('../../../lib/identity/IdentityPublicKey'); const MissingOptionError = require('../../../lib/errors/MissingOptionError'); const createDPPMock = require('../../../lib/test/mocks/createDPPMock'); -const ConsensusError = require('../../../lib/errors/ConsensusError'); +const ConsensusError = require('../../../lib/errors/consensus/ConsensusError'); describe('StateTransitionFacade', () => { let dpp; diff --git a/test/unit/dataContract/DataContractFactory.spec.js b/test/unit/dataContract/DataContractFactory.spec.js index 2b7eb22bd..67efb2b08 100644 --- a/test/unit/dataContract/DataContractFactory.spec.js +++ b/test/unit/dataContract/DataContractFactory.spec.js @@ -10,8 +10,8 @@ const DataContractCreateTransition = require('../../../lib/dataContract/stateTra const ValidationResult = require('../../../lib/validation/ValidationResult'); const InvalidDataContractError = require('../../../lib/dataContract/errors/InvalidDataContractError'); -const ConsensusError = require('../../../lib/errors/ConsensusError'); -const SerializedObjectParsingError = require('../../../lib/errors/SerializedObjectParsingError'); +const ConsensusError = require('../../../lib/errors/consensus/ConsensusError'); +const SerializedObjectParsingError = require('../../../lib/errors/consensus/basic/decode/SerializedObjectParsingError'); const createDPPMock = require('../../../lib/test/mocks/createDPPMock'); describe('DataContractFactory', () => { diff --git a/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js b/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js index 8471d1874..90ce5ad06 100644 --- a/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +++ b/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js @@ -8,7 +8,7 @@ const { expectValidationError } = require('../../../../../../../lib/test/expect/ const ValidationResult = require('../../../../../../../lib/validation/ValidationResult'); -const DataContractAlreadyPresentError = require('../../../../../../../lib/errors/DataContractAlreadyPresentError'); +const DataContractAlreadyPresentError = require('../../../../../../../lib/errors/consensus/state/dataContract/DataContractAlreadyPresentError'); describe('validateDataContractCreateTransitionStateFactory', () => { let validateDataContractCreateTransitionState; diff --git a/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js b/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js index 5a354309d..cc8f9a427 100644 --- a/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js +++ b/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js @@ -1,8 +1,8 @@ const validateDataContractMaxDepthFactory = require('../../../../lib/dataContract/validation/validateDataContractMaxDepthFactory'); const ValidationResult = require('../../../../lib/validation/ValidationResult'); const { expectValidationError } = require('../../../../lib/test/expect/expectError'); -const DataContractMaxDepthExceedError = require('../../../../lib/errors/DataContractMaxDepthExceedError'); -const JsonSchemaError = require('../../../../lib/errors/JsonSchemaError'); +const DataContractMaxDepthExceedError = require('../../../../lib/errors/consensus/basic/dataContract/DataContractMaxDepthExceedError'); +const JsonSchemaError = require('../../../../lib/errors/consensus/basic/JsonSchemaError'); const generateDeepJson = require('../../../../lib/test/utils/generateDeepJson'); describe('validateDataContractMaxDepthFactory', () => { diff --git a/test/unit/dataTrigger/DataTrigger.spec.js b/test/unit/dataTrigger/DataTrigger.spec.js index 5f6f964ac..152ad9da3 100644 --- a/test/unit/dataTrigger/DataTrigger.spec.js +++ b/test/unit/dataTrigger/DataTrigger.spec.js @@ -5,8 +5,8 @@ const DataTriggerExecutionContext = require('../../../lib/dataTrigger/DataTrigge const getDpnsContractFixture = require('../../../lib/test/fixtures/getDpnsContractFixture'); const DataTriggerExecutionResult = require('../../../lib/dataTrigger/DataTriggerExecutionResult'); const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture'); -const DataTriggerExecutionError = require('../../../lib/errors/DataTriggerExecutionError'); -const DataTriggerInvalidResultError = require('../../../lib/errors/DataTriggerInvalidResultError'); +const DataTriggerExecutionError = require('../../../lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerExecutionError'); +const DataTriggerInvalidResultError = require('../../../lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerInvalidResultError'); describe('DataTrigger', () => { let dataContractMock; diff --git a/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js b/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js index 5a853b820..5a40cedd7 100644 --- a/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +++ b/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js @@ -2,7 +2,7 @@ const createContactRequestDataTrigger = require('../../../../lib/dataTrigger/das const DataTriggerExecutionContext = require('../../../../lib/dataTrigger/DataTriggerExecutionContext'); const DataTriggerExecutionResult = require('../../../../lib/dataTrigger/DataTriggerExecutionResult'); -const DataTriggerConditionError = require('../../../../lib/errors/DataTriggerConditionError'); +const DataTriggerConditionError = require('../../../../lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError'); const createStateRepositoryMock = require('../../../../lib/test/mocks/createStateRepositoryMock'); const getDocumentTransitionFixture = require('../../../../lib/test/fixtures/getDocumentTransitionsFixture'); diff --git a/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js b/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js index 317406e47..2fdbe8883 100644 --- a/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +++ b/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js @@ -11,7 +11,7 @@ const createStateRepositoryMock = require('../../../../lib/test/mocks/createStat const hash = require('../../../../lib/util/hash'); -const DataTriggerConditionError = require('../../../../lib/errors/DataTriggerConditionError'); +const DataTriggerConditionError = require('../../../../lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError'); describe('createDomainDataTrigger', () => { let parentDocumentTransition; diff --git a/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js b/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js index fe52eff36..3bc57fa6e 100644 --- a/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +++ b/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js @@ -7,7 +7,7 @@ const getFeatureFlagsDocumentsFixture = require('../../../../lib/test/fixtures/g const getDocumentTransitionsFixture = require('../../../../lib/test/fixtures/getDocumentTransitionsFixture'); const createStateRepositoryMock = require('../../../../lib/test/mocks/createStateRepositoryMock'); const DataTriggerExecutionResult = require('../../../../lib/dataTrigger/DataTriggerExecutionResult'); -const DataTriggerConditionError = require('../../../../lib/errors/DataTriggerConditionError'); +const DataTriggerConditionError = require('../../../../lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerConditionError'); const Identifier = require('../../../../lib/identifier/Identifier'); describe('createFeatureFlagDataTrigger', () => { diff --git a/test/unit/decodeProtocolEntityFactory.spec.js b/test/unit/decodeProtocolEntityFactory.spec.js index aba0a6538..eeca3e119 100644 --- a/test/unit/decodeProtocolEntityFactory.spec.js +++ b/test/unit/decodeProtocolEntityFactory.spec.js @@ -1,9 +1,9 @@ const decodeProtocolEntityFactory = require('../../lib/decodeProtocolEntityFactory'); -const ProtocolVersionParsingError = require('../../lib/errors/ProtocolVersionParsingError'); -const UnsupportedProtocolVersionError = require('../../lib/errors/UnsupportedProtocolVersionError'); +const ProtocolVersionParsingError = require('../../lib/errors/consensus/basic/decode/ProtocolVersionParsingError'); +const UnsupportedProtocolVersionError = require('../../lib/errors/consensus/basic/decode/UnsupportedProtocolVersionError'); const CompatibleProtocolVersionIsNotDefinedError = require('../../lib/errors/CompatibleProtocolVersionIsNotDefinedError'); -const IncompatibleProtocolVersionError = require('../../lib/errors/IncompatibleProtocolVersionError'); -const SerializedObjectParsingError = require('../../lib/errors/SerializedObjectParsingError'); +const IncompatibleProtocolVersionError = require('../../lib/errors/consensus/basic/decode/IncompatibleProtocolVersionError'); +const SerializedObjectParsingError = require('../../lib/errors/consensus/basic/decode/SerializedObjectParsingError'); const { encode } = require('../../lib/util/serializer'); @@ -49,6 +49,7 @@ describe('decodeProtocolEntityFactory', () => { expect(e.getPayload()).to.equal(buffer); expect(e.getParsingError()).to.be.instanceOf(Error); + expect(e.getCode()).to.equal(1000); } }); @@ -68,6 +69,7 @@ describe('decodeProtocolEntityFactory', () => { expect(e.getPayload()).to.equal(buffer); expect(e.getParsedProtocolVersion()).to.equal(parsedProtocolVersion); expect(e.getCurrentProtocolVersion()).to.equal(currentProtocolVersion); + expect(e.getCode()).to.equal(1001); } }); @@ -103,6 +105,7 @@ describe('decodeProtocolEntityFactory', () => { expect(e.getPayload()).to.equal(buffer); expect(e.getParsedProtocolVersion()).to.equal(parsedProtocolVersion); expect(e.getMinimalProtocolVersion()).to.equal(minimalProtocolVersion); + expect(e.getCode()).to.equal(1002); } }); @@ -118,6 +121,7 @@ describe('decodeProtocolEntityFactory', () => { expect(e.getPayload()).to.equal(buffer); expect(e.getParsingError()).to.be.an.instanceOf(Error); + expect(e.getCode()).to.equal(1003); } }); diff --git a/test/unit/document/DocumentFactory.spec.js b/test/unit/document/DocumentFactory.spec.js index 758366c31..2e9f5d4a6 100644 --- a/test/unit/document/DocumentFactory.spec.js +++ b/test/unit/document/DocumentFactory.spec.js @@ -20,8 +20,8 @@ const InvalidActionNameError = require('../../../lib/document/errors/InvalidActi const NoDocumentsSuppliedError = require('../../../lib/document/errors/NoDocumentsSuppliedError'); const MismatchOwnerIdsError = require('../../../lib/document/errors/MismatchOwnerIdsError'); const InvalidInitialRevisionError = require('../../../lib/document/errors/InvalidInitialRevisionError'); -const ConsensusError = require('../../../lib/errors/ConsensusError'); -const SerializedObjectParsingError = require('../../../lib/errors/SerializedObjectParsingError'); +const ConsensusError = require('../../../lib/errors/consensus/ConsensusError'); +const SerializedObjectParsingError = require('../../../lib/errors/consensus/basic/decode/SerializedObjectParsingError'); const generateRandomIdentifier = require('../../../lib/test/utils/generateRandomIdentifier'); const createDPPMock = require('../../../lib/test/mocks/createDPPMock'); diff --git a/test/unit/document/fetchAndValidateDataContractFactory.spec.js b/test/unit/document/fetchAndValidateDataContractFactory.spec.js index 792c78302..57652b338 100644 --- a/test/unit/document/fetchAndValidateDataContractFactory.spec.js +++ b/test/unit/document/fetchAndValidateDataContractFactory.spec.js @@ -7,8 +7,8 @@ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContra const ValidationResult = require('../../../lib/validation/ValidationResult'); -const MissingDataContractIdError = require('../../../lib/errors/MissingDataContractIdError'); -const DataContractNotPresentError = require('../../../lib/errors/DataContractNotPresentError'); +const MissingDataContractIdError = require('../../../lib/errors/consensus/basic/document/MissingDataContractIdError'); +const DataContractNotPresentError = require('../../../lib/errors/consensus/basic/document/DataContractNotPresentError'); const { expectValidationError } = require('../../../lib/test/expect/expectError'); diff --git a/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js b/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js index 24107d2db..2d37b9eae 100644 --- a/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +++ b/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js @@ -1,5 +1,5 @@ const validatePartialCompoundIndices = require('../../../../../../../lib/document/stateTransition/DocumentsBatchTransition/validation/basic/validatePartialCompoundIndices'); -const InconsistentCompoundIndexDataError = require('../../../../../../../lib/errors/InconsistentCompoundIndexDataError'); +const InconsistentCompoundIndexDataError = require('../../../../../../../lib/errors/consensus/basic/document/InconsistentCompoundIndexDataError'); const getDocumentsFixture = require('../../../../../../../lib/test/fixtures/getDocumentsFixture'); const getContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture'); diff --git a/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js b/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js index 190ada82f..8c17a4a28 100644 --- a/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +++ b/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js @@ -4,7 +4,7 @@ const Document = require('../../../../../../../lib/document/Document'); const DocumentsBatchTransition = require('../../../../../../../lib/document/stateTransition/DocumentsBatchTransition/DocumentsBatchTransition'); const DataTriggerExecutionContext = require('../../../../../../../lib/dataTrigger/DataTriggerExecutionContext'); -const DataTriggerExecutionError = require('../../../../../../../lib/errors/DataTriggerExecutionError'); +const DataTriggerExecutionError = require('../../../../../../../lib/errors/consensus/state/dataContract/dataTrigger/DataTriggerExecutionError'); const DataTriggerExecutionResult = require('../../../../../../../lib/dataTrigger/DataTriggerExecutionResult'); const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture'); @@ -17,14 +17,15 @@ const ValidationResult = require('../../../../../../../lib/validation/Validation const { expectValidationError } = require('../../../../../../../lib/test/expect/expectError'); const DataContractNotPresentError = require('../../../../../../../lib/errors/DataContractNotPresentError'); -const DocumentAlreadyPresentError = require('../../../../../../../lib/errors/DocumentAlreadyPresentError'); -const DocumentNotFoundError = require('../../../../../../../lib/errors/DocumentNotFoundError'); -const InvalidDocumentRevisionError = require('../../../../../../../lib/errors/InvalidDocumentRevisionError'); -const ConsensusError = require('../../../../../../../lib/errors/ConsensusError'); + +const DocumentAlreadyPresentError = require('../../../../../../../lib/errors/consensus/state/document/DocumentAlreadyPresentError'); +const DocumentNotFoundError = require('../../../../../../../lib/errors/consensus/state/document/DocumentNotFoundError'); +const InvalidDocumentRevisionError = require('../../../../../../../lib/errors/consensus/state/document/InvalidDocumentRevisionError'); +const ConsensusError = require('../../../../../../../lib/errors/consensus/ConsensusError'); const InvalidDocumentActionError = require('../../../../../../../lib/document/errors/InvalidDocumentActionError'); -const DocumentOwnerIdMismatchError = require('../../../../../../../lib/errors/DocumentOwnerIdMismatchError'); -const DocumentTimestampsMismatchError = require('../../../../../../../lib/errors/DocumentTimestampsMismatchError'); -const DocumentTimestampWindowViolationError = require('../../../../../../../lib/errors/DocumentTimestampWindowViolationError'); +const DocumentOwnerIdMismatchError = require('../../../../../../../lib/errors/consensus/state/document/DocumentOwnerIdMismatchError'); +const DocumentTimestampsMismatchError = require('../../../../../../../lib/errors/consensus/state/document/DocumentTimestampsMismatchError'); +const DocumentTimestampWindowViolationError = require('../../../../../../../lib/errors/consensus/state/document/DocumentTimestampWindowViolationError'); const generateRandomIdentifier = require('../../../../../../../lib/test/utils/generateRandomIdentifier'); @@ -95,24 +96,26 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { fakeTime.reset(); }); - it('should return invalid result if data contract was not found', async () => { + it('should throw DataContractNotPresentError if data contract was not found', async () => { stateRepositoryMock.fetchDataContract.resolves(null); - const result = await validateDocumentsBatchTransitionState(stateTransition); - - expectValidationError(result, DataContractNotPresentError); + try { + await validateDocumentsBatchTransitionState(stateTransition); - const [error] = result.getErrors(); + expect.fail('should throw DataContractNotPresentError'); + } catch (e) { + expect(e).to.be.instanceOf(DataContractNotPresentError); - expect(error.getDataContractId()).to.deep.equal(dataContract.getId()); + expect(e.getDataContractId()).to.deep.equal(dataContract.getId()); - expect(stateRepositoryMock.fetchDataContract).to.have.been.calledOnceWithExactly( - dataContract.getId(), - ); + expect(stateRepositoryMock.fetchDataContract).to.have.been.calledOnceWithExactly( + dataContract.getId(), + ); - expect(fetchDocumentsMock).to.have.not.been.called(); - expect(validateDocumentsUniquenessByIndicesMock).to.have.not.been.called(); - expect(executeDataTriggersMock).to.have.not.been.called(); + expect(fetchDocumentsMock).to.have.not.been.called(); + expect(validateDocumentsUniquenessByIndicesMock).to.have.not.been.called(); + expect(executeDataTriggersMock).to.have.not.been.called(); + } }); it('should return invalid result if document transition with action "create" is already present', async () => { diff --git a/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js b/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js index 0c84b340e..32778c101 100644 --- a/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +++ b/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js @@ -9,7 +9,7 @@ const createStateRepositoryMock = require('../../../../../../../lib/test/mocks/c const ValidationResult = require('../../../../../../../lib/validation/ValidationResult'); -const DuplicateDocumentError = require('../../../../../../../lib/errors/DuplicateDocumentError'); +const DuplicateDocumentError = require('../../../../../../../lib/errors/consensus/state/document/DuplicateDocumentError'); describe('validateDocumentsUniquenessByIndices', () => { let stateRepositoryMock; diff --git a/test/unit/identity/IdentityFactory.spec.js b/test/unit/identity/IdentityFactory.spec.js index 97f2c9975..60fda16c9 100644 --- a/test/unit/identity/IdentityFactory.spec.js +++ b/test/unit/identity/IdentityFactory.spec.js @@ -9,8 +9,8 @@ const IdentityTopUpTransition = require('../../../lib/identity/stateTransition/I const getIdentityFixture = require('../../../lib/test/fixtures/getIdentityFixture'); const ValidationResult = require('../../../lib/validation/ValidationResult'); -const ConsensusError = require('../../../lib/errors/ConsensusError'); -const SerializedObjectParsingError = require('../../../lib/errors/SerializedObjectParsingError'); +const ConsensusError = require('../../../lib/errors/consensus/ConsensusError'); +const SerializedObjectParsingError = require('../../../lib/errors/consensus/basic/decode/SerializedObjectParsingError'); const InvalidIdentityError = require( '../../../lib/identity/errors/InvalidIdentityError', diff --git a/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js b/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js index 91c5b289e..c613675a6 100644 --- a/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +++ b/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js @@ -9,7 +9,7 @@ const validateIdentityCreateTransitionStateFactory = require( const getIdentityCreateTransitionFixture = require('../../../../../../../lib/test/fixtures/getIdentityCreateTransitionFixture'); const IdentityAlreadyExistsError = require( - '../../../../../../../lib/errors/IdentityAlreadyExistsError', + '../../../../../../../lib/errors/consensus/state/identity/IdentityAlreadyExistsError', ); const ValidationResult = require('../../../../../../../lib/validation/ValidationResult'); diff --git a/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityPublicKeysUniquenessFactory.spec.js b/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityPublicKeysUniquenessFactory.spec.js index 8b384e1f6..a00cce4e2 100644 --- a/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityPublicKeysUniquenessFactory.spec.js +++ b/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityPublicKeysUniquenessFactory.spec.js @@ -3,7 +3,7 @@ const validateIdentityPublicKeyUniquenessFactory = require( ); const IdentityPublicKeyAlreadyExistsError = require( - '../../../../../../../lib/errors/IdentityPublicKeyAlreadyExistsError', + '../../../../../../../lib/errors/consensus/state/identity/IdentityPublicKeyAlreadyExistsError', ); const getIdentityFixture = require('../../../../../../../lib/test/fixtures/getIdentityFixture'); diff --git a/test/unit/identity/validation/validateIdentityExistenceFactory.spec.js b/test/unit/identity/validation/validateIdentityExistenceFactory.spec.js index 8ce0d2bd9..9180112e7 100644 --- a/test/unit/identity/validation/validateIdentityExistenceFactory.spec.js +++ b/test/unit/identity/validation/validateIdentityExistenceFactory.spec.js @@ -8,7 +8,7 @@ const { expectValidationError } = require('../../../../lib/test/expect/expectErr const ValidationResult = require('../../../../lib/validation/ValidationResult'); -const IdentityNotFoundError = require('../../../../lib/errors/IdentityNotFoundError'); +const IdentityNotFoundError = require('../../../../lib/errors/consensus/signature/IdentityNotFoundError'); describe('validateIdentityExistence', () => { let validateIdentityExistence; diff --git a/test/unit/stateTransition/StateTransitionFactory.spec.js b/test/unit/stateTransition/StateTransitionFactory.spec.js index 430c90460..59c747ecf 100644 --- a/test/unit/stateTransition/StateTransitionFactory.spec.js +++ b/test/unit/stateTransition/StateTransitionFactory.spec.js @@ -6,8 +6,8 @@ const ValidationResult = require('../../../lib/validation/ValidationResult'); const InvalidStateTransitionError = require('../../../lib/stateTransition/errors/InvalidStateTransitionError'); -const ConsensusError = require('../../../lib/errors/ConsensusError'); -const SerializedObjectParsingError = require('../../../lib/errors/SerializedObjectParsingError'); +const ConsensusError = require('../../../lib/errors/consensus/ConsensusError'); +const SerializedObjectParsingError = require('../../../lib/errors/consensus/basic/decode/SerializedObjectParsingError'); const createDPPMock = require('../../../lib/test/mocks/createDPPMock'); const StateTransitionFactory = require('../../../lib/stateTransition/StateTransitionFactory'); diff --git a/test/unit/stateTransition/createStateTransitionFactory.spec.js b/test/unit/stateTransition/createStateTransitionFactory.spec.js index d50c70aed..b13b08673 100644 --- a/test/unit/stateTransition/createStateTransitionFactory.spec.js +++ b/test/unit/stateTransition/createStateTransitionFactory.spec.js @@ -9,7 +9,7 @@ const getDocumentTranstionsFixture = require('../../../lib/test/fixtures/getDocu const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock'); -const InvalidStateTransitionTypeError = require('../../../lib/errors/InvalidStateTransitionTypeError'); +const InvalidStateTransitionTypeError = require('../../../lib/stateTransition/errors/InvalidStateTransitionTypeError'); describe('createStateTransitionFactory', () => { let createStateTransition; @@ -66,7 +66,7 @@ describe('createStateTransitionFactory', () => { expect.fail('InvalidStateTransitionTypeError is not thrown'); } catch (e) { expect(e).to.be.an.instanceOf(InvalidStateTransitionTypeError); - expect(e.getRawStateTransition()).to.equal(rawStateTransition); + expect(e.getType()).to.equal(rawStateTransition.type); } }); }); diff --git a/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js b/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js index 15086126a..5f8d0422e 100644 --- a/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +++ b/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js @@ -6,7 +6,7 @@ const stateTransitionTypes = require('../../../../lib/stateTransition/stateTrans const getDataContractFixture = require('../../../../lib/test/fixtures/getDataContractFixture'); -const StateTransitionMaxSizeExceededError = require('../../../../lib/errors/StateTransitionMaxSizeExceededError'); +const StateTransitionMaxSizeExceededError = require('../../../../lib/errors/consensus/basic/stateTransition/StateTransitionMaxSizeExceededError'); const { expectValidationError, @@ -14,9 +14,9 @@ const { const ValidationResult = require('../../../../lib/validation/ValidationResult'); -const ConsensusError = require('../../../../lib/errors/ConsensusError'); -const MissingStateTransitionTypeError = require('../../../../lib/errors/MissingStateTransitionTypeError'); -const InvalidStateTransitionTypeError = require('../../../../lib/errors/InvalidStateTransitionTypeError'); +const ConsensusError = require('../../../../lib/errors/consensus/ConsensusError'); +const MissingStateTransitionTypeError = require('../../../../lib/errors/consensus/basic/stateTransition/MissingStateTransitionTypeError'); +const InvalidStateTransitionTypeError = require('../../../../lib/errors/consensus/basic/stateTransition/InvalidStateTransitionTypeError'); const createDPPMock = require('../../../../lib/test/mocks/createDPPMock'); describe('validateStateTransitionBasicFactory', () => { diff --git a/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js b/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js index 04729d59c..041308283 100644 --- a/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +++ b/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js @@ -14,8 +14,8 @@ const DocumentsBatchTransition = require('../../../../lib/document/stateTransiti const { expectValidationError } = require('../../../../lib/test/expect/expectError'); -const IdentityBalanceIsNotEnoughError = require('../../../../lib/errors/BalanceIsNotEnoughError'); -const InvalidStateTransitionTypeError = require('../../../../lib/errors/InvalidStateTransitionTypeError'); +const IdentityBalanceIsNotEnoughError = require('../../../../lib/errors/consensus/fee/BalanceIsNotEnoughError'); +const InvalidStateTransitionTypeError = require('../../../../lib/stateTransition/errors/InvalidStateTransitionTypeError'); const { RATIO } = require('../../../../lib/identity/creditsConverter'); @@ -277,10 +277,11 @@ describe('validateStateTransitionFeeFactory', () => { it('should throw InvalidStateTransitionTypeError on invalid State Transition', async function it() { const rawStateTransitionMock = { data: 'sample data', + type: -1, }; const stateTransitionMock = { - getType: this.sinonSandbox.stub().returns(-1), + getType: this.sinonSandbox.stub().returns(rawStateTransitionMock.type), toBuffer: this.sinonSandbox.stub().returns(Buffer.alloc(0)), toObject: this.sinonSandbox.stub().returns(rawStateTransitionMock), }; @@ -291,7 +292,7 @@ describe('validateStateTransitionFeeFactory', () => { expect.fail('should throw InvalidStateTransitionTypeError'); } catch (error) { expect(error).to.be.an.instanceOf(InvalidStateTransitionTypeError); - expect(error.getRawStateTransition()).to.equal(rawStateTransitionMock); + expect(error.getType()).to.equal(rawStateTransitionMock.type); expect(calculateStateTransitionFeeMock).to.be.calledOnceWithExactly(stateTransitionMock); expect(stateRepositoryMock.fetchIdentity).to.not.be.called(); diff --git a/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js b/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js index 93764106d..042021e3e 100644 --- a/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +++ b/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js @@ -1,11 +1,11 @@ const validateStateTransitionSignatureFactory = require('../../../../lib/stateTransition/validation/validateStateTransitionIdentitySignatureFactory'); const ValidationResult = require('../../../../lib/validation/ValidationResult'); const IdentityPublicKey = require('../../../../lib/identity/IdentityPublicKey'); -const InvalidIdentityPublicKeyTypeError = require('../../../../lib/errors/InvalidIdentityPublicKeyTypeError'); -const InvalidStateTransitionSignatureError = require('../../../../lib/errors/InvalidStateTransitionSignatureError'); -const MissingPublicKeyError = require('../../../../lib/errors/MissingPublicKeyError'); +const InvalidIdentityPublicKeyTypeError = require('../../../../lib/errors/consensus/signature/InvalidIdentityPublicKeyTypeError'); +const InvalidStateTransitionSignatureError = require('../../../../lib/errors/consensus/signature/InvalidStateTransitionSignatureError'); +const MissingPublicKeyError = require('../../../../lib/errors/consensus/signature/MissingPublicKeyError'); const generateRandomIdentifier = require('../../../../lib/test/utils/generateRandomIdentifier'); -const ConsensusError = require('../../../../lib/errors/ConsensusError'); +const ConsensusError = require('../../../../lib/errors/consensus/ConsensusError'); const { expectValidationError } = require('../../../../lib/test/expect/expectError'); diff --git a/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js b/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js index c7e2d86f8..cf81e9d34 100644 --- a/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +++ b/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js @@ -1,7 +1,7 @@ const validateStateTransitionKeySignatureFactory = require('../../../../lib/stateTransition/validation/validateStateTransitionKeySignatureFactory'); const getIdentityCreateTransitionFixture = require('../../../../lib/test/fixtures/getIdentityCreateTransitionFixture'); -const InvalidStateTransitionSignatureError = require('../../../../lib/errors/InvalidStateTransitionSignatureError'); +const InvalidStateTransitionSignatureError = require('../../../../lib/errors/consensus/signature/InvalidStateTransitionSignatureError'); const { expectValidationError } = require('../../../../lib/test/expect/expectError'); diff --git a/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js b/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js index 046e8ff73..2b80ff5dc 100644 --- a/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +++ b/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js @@ -10,8 +10,8 @@ const ValidationResult = require('../../../../lib/validation/ValidationResult'); const DataContractFactory = require('../../../../lib/dataContract/DataContractFactory'); -const InvalidStateTransitionTypeError = require('../../../../lib/errors/InvalidStateTransitionTypeError'); -const ConsensusError = require('../../../../lib/errors/ConsensusError'); +const InvalidStateTransitionTypeError = require('../../../../lib/stateTransition/errors/InvalidStateTransitionTypeError'); +const ConsensusError = require('../../../../lib/errors/consensus/ConsensusError'); const createDPPMock = require('../../../../lib/test/mocks/createDPPMock'); describe('validateStateTransitionStateFactory', () => { @@ -43,15 +43,16 @@ describe('validateStateTransitionStateFactory', () => { }, }; - const result = await validateStateTransitionState(stateTransition); - - expectValidationError(result, InvalidStateTransitionTypeError); - - const [error] = result.getErrors(); + try { + await validateStateTransitionState(stateTransition); - expect(error.getRawStateTransition()).to.equal(rawStateTransition); + expect.fail('should throw InvalidStateTransitionTypeError'); + } catch (e) { + expect(e).to.be.instanceOf(InvalidStateTransitionTypeError); + expect(e.getType()).to.equal(stateTransition.getType()); - expect(validateDataContractSTDataMock).to.not.be.called(); + expect(validateDataContractSTDataMock).to.not.be.called(); + } }); it('should return invalid result if Data Contract State Transition is not valid', async () => { From 03ebd86b9bfb26d199026b5284965b1552ba1344 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 25 Aug 2021 21:57:59 +0300 Subject: [PATCH 2/2] Update validateDocumentFactory.js --- lib/document/validation/validateDocumentFactory.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/document/validation/validateDocumentFactory.js b/lib/document/validation/validateDocumentFactory.js index fedd6670c..4e0e95780 100644 --- a/lib/document/validation/validateDocumentFactory.js +++ b/lib/document/validation/validateDocumentFactory.js @@ -63,10 +63,6 @@ module.exports = function validateDocumentFactory( ), ); - if (!result.isValid()) { - return result; - } - return result; }