From e5f27ffd2639f6a451ca45f2f4bdbd7ce57b6810 Mon Sep 17 00:00:00 2001 From: Anton Suprunchuk Date: Wed, 22 Mar 2023 17:52:20 +0800 Subject: [PATCH 1/7] move fixtures over from the js-dpp --- .../fixtures/getChainAssetLockProofFixture.js | 21 ++++ .../fixtures/getDashPayContractFixture.js | 16 +++ .../fixtures/getDashPayDocumentFixture.js | 37 ++++++ .../fixtures/getDocumentTransitionsFixture.js | 30 +++++ .../test/fixtures/getDpnsContractFixture.js | 15 +++ .../test/fixtures/getDpnsDocumentFixture.js | 111 ++++++++++++++++ .../getFeatureFlagsContractFixture.js | 15 +++ .../getFeatureFlagsDocumentsFixture.js | 31 +++++ .../getIdentityCreateTransitionFixture.js | 36 ++++++ .../lib/test/fixtures/getIdentityFixture.js | 40 ++++++ .../getIdentityTopUpTransitionFixture.js | 24 ++++ .../getIdentityUpdateTransitionFixture.js | 31 +++++ .../getInstantAssetLockProofFixture.js | 62 +++++++++ ...etMasternodeRewardShareDocumentsFixture.js | 27 ++++ ...etMasternodeRewardSharesContractFixture.js | 15 +++ .../fixtures/getPreorderDocumentFixture.js | 40 ++++++ .../test/fixtures/getRawTransactionFixture.js | 118 ++++++++++++++++++ .../integration/document/Document.spec.js | 31 ++--- .../unit/document/DocumentFactory.spec.js | 4 +- ...etchAndValidateDataContractFactory.spec.js | 74 +++-------- .../DocumentsBatchTransition.spec.js | 84 +------------ .../DocumentCreateTransition.spec.js | 2 +- .../basic/findDuplicatesByIndices.spec.js | 8 +- 23 files changed, 702 insertions(+), 170 deletions(-) create mode 100644 packages/wasm-dpp/lib/test/fixtures/getChainAssetLockProofFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getDashPayContractFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getDashPayDocumentFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getDocumentTransitionsFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getDpnsContractFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getDpnsDocumentFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsContractFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getIdentityCreateTransitionFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getIdentityFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getIdentityUpdateTransitionFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getInstantAssetLockProofFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getPreorderDocumentFixture.js create mode 100644 packages/wasm-dpp/lib/test/fixtures/getRawTransactionFixture.js diff --git a/packages/wasm-dpp/lib/test/fixtures/getChainAssetLockProofFixture.js b/packages/wasm-dpp/lib/test/fixtures/getChainAssetLockProofFixture.js new file mode 100644 index 00000000000..8d3f4ae9d0b --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getChainAssetLockProofFixture.js @@ -0,0 +1,21 @@ +const ChainAssetLockProof = require('../../identity/stateTransition/assetLockProof/chain/ChainAssetLockProof'); + +function getChainAssetLockProofFixture() { + const outPoint = { + outpointHash: '6e200d059fb567ba19e92f5c2dcd3dde522fd4e0a50af223752db16158dabb1d', + outpointIndex: 0, + }; + + const binaryTransactionHash = Buffer.from(outPoint.outpointHash, 'hex'); + const indexBuffer = Buffer.alloc(4); + + indexBuffer.writeUInt32LE(outPoint.outpointIndex, 0); + + return new ChainAssetLockProof({ + type: 1, + coreChainLockedHeight: 42, + outPoint: Buffer.concat([binaryTransactionHash, indexBuffer]), + }); +} + +module.exports = getChainAssetLockProofFixture; diff --git a/packages/wasm-dpp/lib/test/fixtures/getDashPayContractFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDashPayContractFixture.js new file mode 100644 index 00000000000..f2153dfe4f6 --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getDashPayContractFixture.js @@ -0,0 +1,16 @@ +const dashPaySchema = require('@dashevo/dashpay-contract/schema/dashpay.schema.json'); +const DataContractFactory = require('../../dataContract/DataContractFactory'); + +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); + +const createDPPMock = require('../mocks/createDPPMock'); + +const ownerId = generateRandomIdentifier(); + +/** + * @return {DataContract} + */ +module.exports = function getDataContractFixture() { + const factory = new DataContractFactory(createDPPMock(), () => {}); + return factory.create(ownerId, dashPaySchema); +}; diff --git a/packages/wasm-dpp/lib/test/fixtures/getDashPayDocumentFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDashPayDocumentFixture.js new file mode 100644 index 00000000000..c7036824fc2 --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getDashPayDocumentFixture.js @@ -0,0 +1,37 @@ +const getDashPayContractFixture = require('./getDashPayContractFixture'); +const DocumentFactory = require('../../document/DocumentFactory'); +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); +const createDPPMock = require('../mocks/createDPPMock'); + +const ownerId = generateRandomIdentifier(); +const dataContract = getDashPayContractFixture(); + +/** + * @return {Document} + */ +function getContactRequestDocumentFixture(options = {}) { + const factory = new DocumentFactory( + createDPPMock(), + () => ({ + isValid: () => true, + }), + () => {}, + ); + + const data = { + toUserId: Buffer.alloc(32), + encryptedPublicKey: Buffer.alloc(96), + senderKeyIndex: 0, + recipientKeyIndex: 0, + accountReference: 0, + ...options, + }; + + return factory.create(dataContract, ownerId, 'contactRequest', data); +} + +module.exports = { + getContactRequestDocumentFixture, +}; + +module.exports.dataContract = dataContract; diff --git a/packages/wasm-dpp/lib/test/fixtures/getDocumentTransitionsFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDocumentTransitionsFixture.js new file mode 100644 index 00000000000..0011cbaa44d --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getDocumentTransitionsFixture.js @@ -0,0 +1,30 @@ +const DocumentFactory = require('../../document/DocumentFactory'); +const createDPPMock = require('../mocks/createDPPMock'); + +const getDocumentsFixture = require('./getDocumentsFixture'); + +function getDocumentTransitionsFixture(documents = {}) { + const { + create: createDocuments, + replace: replaceDocuments, + delete: deleteDocuments, + } = documents; + + const fixtureDocuments = getDocumentsFixture(); + + const factory = new DocumentFactory( + createDPPMock(), + () => { }, + () => { }, + ); + + const stateTransition = factory.createStateTransition({ + create: (createDocuments || fixtureDocuments), + replace: (replaceDocuments || []), + delete: (deleteDocuments || []), + }); + + return stateTransition.getTransitions(); +} + +module.exports = getDocumentTransitionsFixture; diff --git a/packages/wasm-dpp/lib/test/fixtures/getDpnsContractFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDpnsContractFixture.js new file mode 100644 index 00000000000..529e66fa306 --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getDpnsContractFixture.js @@ -0,0 +1,15 @@ +const dpnsDocuments = require('@dashevo/dpns-contract/schema/dpns-contract-documents.json'); +const DataContractFactory = require('../../dataContract/DataContractFactory'); +const createDPPMock = require('../mocks/createDPPMock'); + +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); + +const ownerId = generateRandomIdentifier(); + +/** + * @return {DataContract} + */ +module.exports = function getDataContractFixture() { + const factory = new DataContractFactory(createDPPMock(), () => {}); + return factory.create(ownerId, dpnsDocuments); +}; diff --git a/packages/wasm-dpp/lib/test/fixtures/getDpnsDocumentFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDpnsDocumentFixture.js new file mode 100644 index 00000000000..6293e900b7f --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getDpnsDocumentFixture.js @@ -0,0 +1,111 @@ +const crypto = require('crypto'); +const getDpnsContractFixture = require('./getDpnsContractFixture'); +const DocumentFactory = require('../../document/DocumentFactory'); +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); +const createDPPMock = require('../mocks/createDPPMock'); + +const ownerId = generateRandomIdentifier(); +const dataContract = getDpnsContractFixture(); + +/** + * @return {Document} + */ +function getTopDocumentFixture(options = {}) { + const factory = new DocumentFactory( + createDPPMock(), + () => ({ + isValid: () => true, + }), + () => {}, + ); + + const label = options.label || 'grandparent'; + const normalizedLabel = options.normalizedLabel || label.toLowerCase(); + const data = { + label, + normalizedLabel, + normalizedParentDomainName: '', + preorderSalt: crypto.randomBytes(32), + records: { + dashUniqueIdentityId: ownerId, + }, + subdomainRules: { + allowSubdomains: true, + }, + ...options, + }; + + return factory.create(dataContract, ownerId, 'domain', data); +} + +/** + * @return {Document} + */ +function getParentDocumentFixture(options = {}) { + const factory = new DocumentFactory( + createDPPMock(), + () => ({ + isValid: () => true, + }), + () => {}, + ); + + const label = options.label || 'Parent'; + const normalizedLabel = options.normalizedLabel || label.toLowerCase(); + const data = { + label, + normalizedLabel, + normalizedParentDomainName: 'grandparent', + preorderSalt: crypto.randomBytes(32), + records: { + dashUniqueIdentityId: ownerId, + }, + subdomainRules: { + allowSubdomains: false, + }, + ...options, + }; + + return factory.create(dataContract, ownerId, 'domain', data); +} + +/** + * @return {Document} + */ +function getChildDocumentFixture(options = {}) { + const factory = new DocumentFactory( + createDPPMock(), + () => ({ + isValid: () => true, + }), + () => {}, + ); + + const label = options.label || 'Child'; + const normalizedLabel = options.normalizedLabel || label.toLowerCase(); + const parent = getParentDocumentFixture(); + const parentDomainName = `${parent.getData().normalizedLabel}.${parent.getData().normalizedParentDomainName}`; + const data = { + label, + normalizedLabel, + normalizedParentDomainName: parentDomainName, + preorderSalt: crypto.randomBytes(32), + records: { + dashUniqueIdentityId: ownerId, + }, + subdomainRules: { + allowSubdomains: false, + }, + ...options, + }; + + return factory.create(dataContract, ownerId, 'domain', data); +} + +module.exports = { + getTopDocumentFixture, + getParentDocumentFixture, + getChildDocumentFixture, +}; + +module.exports.dataContract = dataContract; diff --git a/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsContractFixture.js b/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsContractFixture.js new file mode 100644 index 00000000000..bcfe82a841c --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsContractFixture.js @@ -0,0 +1,15 @@ +const featureFlagDocuments = require('@dashevo/feature-flags-contract/schema/feature-flags-documents.json'); +const DataContractFactory = require('../../dataContract/DataContractFactory'); +const createDPPMock = require('../mocks/createDPPMock'); + +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); + +const ownerId = generateRandomIdentifier(); + +/** + * @return {DataContract} + */ +module.exports = function getFeatureFlagsContractFixture() { + const factory = new DataContractFactory(createDPPMock(), () => {}); + return factory.create(ownerId, featureFlagDocuments); +}; diff --git a/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js b/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js new file mode 100644 index 00000000000..b4763b2919d --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js @@ -0,0 +1,31 @@ +const getFeatureFlagsContractFixture = require('./getFeatureFlagsContractFixture'); +const DocumentFactory = require('../../document/DocumentFactory'); +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); +const createDPPMock = require('../mocks/createDPPMock'); + +const ownerId = generateRandomIdentifier(); +const dataContract = getFeatureFlagsContractFixture(); + +/** + * @return {Document} + */ +function getFeatureFlagsDocumentsFixture() { + const factory = new DocumentFactory( + createDPPMock(), + () => ({ + isValid: () => true, + }), + () => {}, + ); + + return [ + factory.create(dataContract, ownerId, 'updateConsensusParams', { + enabled: true, + enableAtHeight: 77, + }), + ]; +} + +module.exports = getFeatureFlagsDocumentsFixture; + +module.exports.dataContract = dataContract; diff --git a/packages/wasm-dpp/lib/test/fixtures/getIdentityCreateTransitionFixture.js b/packages/wasm-dpp/lib/test/fixtures/getIdentityCreateTransitionFixture.js new file mode 100644 index 00000000000..dc9544714fc --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getIdentityCreateTransitionFixture.js @@ -0,0 +1,36 @@ +const PrivateKey = require('@dashevo/dashcore-lib/lib/privatekey'); +const IdentityCreateTransition = require('../../identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition'); + +const IdentityPublicKey = require('../../identity/IdentityPublicKey'); + +const stateTransitionTypes = require('../../stateTransition/stateTransitionTypes'); + +const getInstantAssetLockProofFixture = require('./getInstantAssetLockProofFixture'); + +const protocolVersion = require('../../version/protocolVersion'); + +/** + * @param {PrivateKey} oneTimePrivateKey + * + * @return {IdentityCreateTransition} + */ +module.exports = function getIdentityCreateTransitionFixture(oneTimePrivateKey = new PrivateKey()) { + const rawStateTransition = { + protocolVersion: protocolVersion.latestVersion, + type: stateTransitionTypes.IDENTITY_CREATE, + assetLockProof: getInstantAssetLockProofFixture(oneTimePrivateKey).toObject(), + publicKeys: [ + { + id: 0, + type: IdentityPublicKey.TYPES.ECDSA_SECP256K1, + data: Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'), + purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION, + securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER, + readOnly: false, + signature: Buffer.alloc(0), + }, + ], + }; + + return new IdentityCreateTransition(rawStateTransition); +}; diff --git a/packages/wasm-dpp/lib/test/fixtures/getIdentityFixture.js b/packages/wasm-dpp/lib/test/fixtures/getIdentityFixture.js new file mode 100644 index 00000000000..031d5149c53 --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getIdentityFixture.js @@ -0,0 +1,40 @@ +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); + +const protocolVersion = require('../../version/protocolVersion'); + +const Identity = require('../../identity/Identity'); +const IdentityPublicKey = require('../../identity/IdentityPublicKey'); + +const staticId = generateRandomIdentifier(); + +/** + * @return {Identity} + */ +module.exports = function getIdentityFixture(id = staticId) { + const rawIdentity = { + protocolVersion: protocolVersion.latestVersion, + id: id.toBuffer(), + balance: 10, + revision: 0, + publicKeys: [ + { + id: 0, + type: IdentityPublicKey.TYPES.ECDSA_SECP256K1, + data: Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'), + purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION, + securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER, + readOnly: false, + }, + { + id: 1, + type: IdentityPublicKey.TYPES.ECDSA_SECP256K1, + data: Buffer.from('A8AK95PYMVX5VQKzOhcVQRCUbc9pyg3RiL7jttEMDU+L', 'base64'), + purpose: IdentityPublicKey.PURPOSES.ENCRYPTION, + securityLevel: IdentityPublicKey.SECURITY_LEVELS.MEDIUM, + readOnly: false, + }, + ], + }; + + return new Identity(rawIdentity); +}; diff --git a/packages/wasm-dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture.js b/packages/wasm-dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture.js new file mode 100644 index 00000000000..d79589dcddb --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture.js @@ -0,0 +1,24 @@ +const IdentityTopUpTransition = require('../../identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition'); + +const stateTransitionTypes = require('../../stateTransition/stateTransitionTypes'); + +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); + +const getInstantAssetLockProofFixture = require('./getInstantAssetLockProofFixture'); + +const protocolVersion = require('../../version/protocolVersion'); + +/** + * + * @return {IdentityTopUpTransition} + */ +module.exports = function getIdentityTopUpTransitionFixture() { + const rawStateTransition = { + protocolVersion: protocolVersion.latestVersion, + type: stateTransitionTypes.IDENTITY_CREATE, + assetLockProof: getInstantAssetLockProofFixture().toObject(), + identityId: generateRandomIdentifier(), + }; + + return new IdentityTopUpTransition(rawStateTransition); +}; diff --git a/packages/wasm-dpp/lib/test/fixtures/getIdentityUpdateTransitionFixture.js b/packages/wasm-dpp/lib/test/fixtures/getIdentityUpdateTransitionFixture.js new file mode 100644 index 00000000000..efb80c3e12d --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getIdentityUpdateTransitionFixture.js @@ -0,0 +1,31 @@ +const protocolVersion = require('../../version/protocolVersion'); +const stateTransitionTypes = require('../../stateTransition/stateTransitionTypes'); +const getInstantAssetLockProofFixture = require('./getInstantAssetLockProofFixture'); +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); +const IdentityUpdateTransition = require('../../identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition'); +const IdentityPublicKey = require('../../identity/IdentityPublicKey'); + +module.exports = function getIdentityUpdateTransitionFixture() { + const rawStateTransition = { + protocolVersion: protocolVersion.latestVersion, + type: stateTransitionTypes.IDENTITY_UPDATE, + assetLockProof: getInstantAssetLockProofFixture().toObject(), + identityId: generateRandomIdentifier(), + revision: 0, + addPublicKeys: [ + { + id: 3, + type: IdentityPublicKey.TYPES.ECDSA_SECP256K1, + data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'), + purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION, + securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER, + signature: Buffer.alloc(0), + readOnly: false, + }, + ], + disablePublicKeys: [0], + publicKeysDisabledAt: 1234567, + }; + + return new IdentityUpdateTransition(rawStateTransition); +}; diff --git a/packages/wasm-dpp/lib/test/fixtures/getInstantAssetLockProofFixture.js b/packages/wasm-dpp/lib/test/fixtures/getInstantAssetLockProofFixture.js new file mode 100644 index 00000000000..af1d09f7bff --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getInstantAssetLockProofFixture.js @@ -0,0 +1,62 @@ +const { + Transaction, + InstantLock, + PrivateKey, + Script, + Opcode, +} = require('@dashevo/dashcore-lib'); + +const InstantAssetLockProof = require('../../identity/stateTransition/assetLockProof/instant/InstantAssetLockProof'); + +/** + * @param {PrivateKey} [oneTimePrivateKey] + */ +function getInstantAssetLockProofFixture(oneTimePrivateKey = new PrivateKey()) { + const privateKeyHex = 'cSBnVM4xvxarwGQuAfQFwqDg9k5tErHUHzgWsEfD4zdwUasvqRVY'; + const privateKey = new PrivateKey(privateKeyHex); + const fromAddress = privateKey.toAddress(); + + const oneTimePublicKey = oneTimePrivateKey.toPublicKey(); + + const transaction = new Transaction() + .from({ + address: fromAddress, + txId: 'a477af6b2667c29670467e4e0728b685ee07b240235771862318e29ddbe58458', + outputIndex: 0, + script: Script.buildPublicKeyHashOut(fromAddress) + .toString(), + satoshis: 100000, + }) + // eslint-disable-next-line no-underscore-dangle + .addBurnOutput(90000, oneTimePublicKey._getID()) + .to(fromAddress, 5000) + .addOutput(Transaction.Output({ + satoshis: 5000, + script: Script() + .add(Opcode.OP_RETURN) + .add(Buffer.from([1, 2, 3])), + })) + .sign(privateKey); + + const instantLock = new InstantLock({ + version: 1, + inputs: [ + { + outpointHash: '6e200d059fb567ba19e92f5c2dcd3dde522fd4e0a50af223752db16158dabb1d', + outpointIndex: 0, + }, + ], + txid: transaction.id, + cyclehash: '7c30826123d0f29fe4c4a8895d7ba4eb469b1fafa6ad7b23896a1a591766a536', + signature: '8967c46529a967b3822e1ba8a173066296d02593f0f59b3a78a30a7eef9c8a120847729e62e4a32954339286b79fe7590221331cd28d576887a263f45b595d499272f656c3f5176987c976239cac16f972d796ad82931d532102a4f95eec7d80', + }); + + return new InstantAssetLockProof({ + type: 0, + instantLock: instantLock.toBuffer(), + transaction: transaction.toBuffer(), + outputIndex: 0, + }); +} + +module.exports = getInstantAssetLockProofFixture; diff --git a/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js b/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js new file mode 100644 index 00000000000..11ff3fbedf1 --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js @@ -0,0 +1,27 @@ +const DocumentFactory = require('../../document/DocumentFactory'); +const createDPPMock = require('../mocks/createDPPMock'); +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); +const getMasternodeRewardSharesContractFixture = require('./getMasternodeRewardSharesContractFixture'); + +function getMasternodeRewardShareDocumentsFixture( + ownerId = generateRandomIdentifier(), + payToId = generateRandomIdentifier(), + dataContract = getMasternodeRewardSharesContractFixture(), +) { + const factory = new DocumentFactory( + createDPPMock(), + () => ({ + isValid: () => true, + }), + () => {}, + ); + + return [ + factory.create(dataContract, ownerId, 'rewardShare', { + payToId, + percentage: 500, + }), + ]; +} + +module.exports = getMasternodeRewardShareDocumentsFixture; diff --git a/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js b/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js new file mode 100644 index 00000000000..fdc602d519a --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js @@ -0,0 +1,15 @@ +const masternodeRewardSharesDocuments = require('@dashevo/masternode-reward-shares-contract/schema/masternode-reward-shares-documents.json'); +const DataContractFactory = require('../../dataContract/DataContractFactory'); +const createDPPMock = require('../mocks/createDPPMock'); +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); + +const ownerId = generateRandomIdentifier(); + +/** + * @return {DataContract} + */ +module.exports = function getMasternodeRewardSharesContractFixture() { + const factory = new DataContractFactory(createDPPMock(), () => {}); + + return factory.create(ownerId, masternodeRewardSharesDocuments); +}; diff --git a/packages/wasm-dpp/lib/test/fixtures/getPreorderDocumentFixture.js b/packages/wasm-dpp/lib/test/fixtures/getPreorderDocumentFixture.js new file mode 100644 index 00000000000..4714669b203 --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getPreorderDocumentFixture.js @@ -0,0 +1,40 @@ +const getDpnsContractFixture = require('./getDpnsContractFixture'); +const DocumentFactory = require('../../document/DocumentFactory'); +const { generate: generateEntropy } = require('../../util/entropyGenerator'); + +const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); +const createDPPMock = require('../mocks/createDPPMock'); + +const ownerId = generateRandomIdentifier(); + +/** + * @return {Document} + */ +function getPreorderDocumentFixture(options = {}) { + const dataContract = getDpnsContractFixture(); + + const factory = new DocumentFactory( + createDPPMock(), + () => ({ + isValid: () => true, + }), + () => {}, + ); + + const label = options.label || 'Preorder'; + const normalizedLabel = options.normalizedLabel || label.toLowerCase(); + const data = { + label, + normalizedLabel, + parentDomainHash: '', + preorderSalt: generateEntropy(), + records: { + dashIdentity: ownerId, + }, + ...options, + }; + + return factory.create(dataContract, ownerId, 'preorder', data); +} + +module.exports = getPreorderDocumentFixture; diff --git a/packages/wasm-dpp/lib/test/fixtures/getRawTransactionFixture.js b/packages/wasm-dpp/lib/test/fixtures/getRawTransactionFixture.js new file mode 100644 index 00000000000..d5c7415c02c --- /dev/null +++ b/packages/wasm-dpp/lib/test/fixtures/getRawTransactionFixture.js @@ -0,0 +1,118 @@ +/** + * Verbose raw transaction fixture + * + * @return Object + */ +module.exports = function getRawTransactionFixture() { + return { + txid: 'f1c1cbc37b5d5543eeb126a53de7863ea2b9d5dbd03b981337bbda76cc6d771c', + version: 2, + type: 0, + size: 817, + locktime: 34623, + vin: [ + { + txid: '3b8c0ef5f91c330f236f869eba2904432f03d1a3ab969882dae6f9417e77c760', + vout: 1, + scriptSig: { + asm: '3045022100cab5638d1498930dcc88047ba0c44b952988c390cd66e643de7b975b62170be40220181ede94c41ded6d83b586ce90e195ed09ad4c6b9dfcb76bc07fbba7b5e89e51[ALL] 03a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', + hex: '483045022100cab5638d1498930dcc88047ba0c44b952988c390cd66e643de7b975b62170be40220181ede94c41ded6d83b586ce90e195ed09ad4c6b9dfcb76bc07fbba7b5e89e51012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', + }, + value: 100.00000788, + valueSat: 10000000788, + address: 'yNPbcFfabtNmmxKdGwhHomdYfVs6gikbPf', + sequence: 4294967294, + }, + { + txid: '8ba79ebf35b55eed79601b17ec1c32ee5af592554fc3b6e5ff5fdc4d39854546', + vout: 0, + scriptSig: { + asm: '3045022100ecda52ffb4500b7e593bf6a1d1f7a5b7303acf3a20b58c1cb0200b34a523d1d902203295bfb668e69b79275ed03335a8652d7687012227ac492a12cf9d29c1f7a7cc[ALL] 03a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', + hex: '483045022100ecda52ffb4500b7e593bf6a1d1f7a5b7303acf3a20b58c1cb0200b34a523d1d902203295bfb668e69b79275ed03335a8652d7687012227ac492a12cf9d29c1f7a7cc012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', + }, + value: 11.25005000, + valueSat: 1125005000, + address: 'yNPbcFfabtNmmxKdGwhHomdYfVs6gikbPf', + sequence: 4294967294, + }, + { + txid: '9b192afc29f4b85795e6bdf829d6b7aa763915dea10b2cb21f23aafc0b3fb042', + vout: 0, + scriptSig: { + asm: '3045022100ddb49494296712b6f2db5031512d11dd470d338af010088fec65ed398cec0afe0220285d4b7d8a2b3ea0a18fa9d6fe375b401e8f6ae98281a1c3f1a9bd3742840702[ALL] 03a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', + hex: '483045022100ddb49494296712b6f2db5031512d11dd470d338af010088fec65ed398cec0afe0220285d4b7d8a2b3ea0a18fa9d6fe375b401e8f6ae98281a1c3f1a9bd3742840702012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', + }, + value: 11.25005000, + valueSat: 1125005000, + address: 'yNPbcFfabtNmmxKdGwhHomdYfVs6gikbPf', + sequence: 4294967294, + }, + { + txid: 'f5b471fbdacd35de483d029f4e9b4237e9fb3244d184e530c381a6961cc047be', + vout: 0, + scriptSig: { + asm: '3045022100ccf54a31a262e5ed9e58e1fa6c23938b81fd79dd62a1057f841e255a64a0e06c0220138773e3f5dd77b0bc1d1f1d01110b1b93741f631c177e7936c335dbaa19686f[ALL] 03a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', + hex: '483045022100ccf54a31a262e5ed9e58e1fa6c23938b81fd79dd62a1057f841e255a64a0e06c0220138773e3f5dd77b0bc1d1f1d01110b1b93741f631c177e7936c335dbaa19686f012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', + }, + value: 11.25005000, + valueSat: 1125005000, + address: 'yNPbcFfabtNmmxKdGwhHomdYfVs6gikbPf', + sequence: 4294967294, + }, + { + txid: 'fa3759df9830aed2aa59d41f825eec5ba2aa58dc99d377b28488a92997a8cfb7', + vout: 0, + scriptSig: { + asm: '304402200b035f016087a5468cd27f9575fb496aaeaf2c454c8bb402c3624c20bdd4448f022015a23433ad620ea7c5ff92a8198262c66a20595902ddc4141722396ecadc07ca[ALL] 02a1dc26a61b5ed6fbecd4c0fe65b7dd8c637eee7cfce759cd0c55f83b6d9680b9', + hex: '47304402200b035f016087a5468cd27f9575fb496aaeaf2c454c8bb402c3624c20bdd4448f022015a23433ad620ea7c5ff92a8198262c66a20595902ddc4141722396ecadc07ca012102a1dc26a61b5ed6fbecd4c0fe65b7dd8c637eee7cfce759cd0c55f83b6d9680b9', + }, + value: 6.82471210, + valueSat: 682471210, + address: 'yc1C9TTSwXmN59rxpP5fKvtvrQa6MWVzaf', + sequence: 4294967294, + }, + ], + vout: [ + { + value: 3.55976180, + valueSat: 355976180, + n: 0, + scriptPubKey: { + asm: 'OP_DUP OP_HASH160 ad56adfd39caf20673de73b9eae51352e730a2f2 OP_EQUALVERIFY OP_CHECKSIG', + hex: '76a914ad56adfd39caf20673de73b9eae51352e730a2f288ac', + reqSigs: 1, + type: 'pubkeyhash', + addresses: [ + 'yc7yaznKps1rXWovLMXcMRQfc2AZUxoB3C', + ], + }, + spentTxId: 'b53f8b9a47e3af0491205c3d60689fed8d6d750bcfe9f1731a061f469c4f4e82', + spentIndex: 17, + spentHeight: 34899, + }, + { + value: 137.01510000, + valueSat: 13701510000, + n: 1, + scriptPubKey: { + asm: 'OP_DUP OP_HASH160 b9e06afc1400f95eaffce11e51e58b0a8390e88b OP_EQUALVERIFY OP_CHECKSIG', + hex: '76a914b9e06afc1400f95eaffce11e51e58b0a8390e88b88ac', + reqSigs: 1, + type: 'pubkeyhash', + addresses: [ + 'ydGGhXC6PXoBvUhG9rxs2LmriuEHdsjt4A', + ], + }, + }, + ], + hex: '020000000560c7777e41f9e6da829896aba3d1032f430429ba9e866f230f331cf9f50e8c3b010000006b483045022100cab5638d1498930dcc88047ba0c44b952988c390cd66e643de7b975b62170be40220181ede94c41ded6d83b586ce90e195ed09ad4c6b9dfcb76bc07fbba7b5e89e51012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1feffffff464585394ddc5fffe5b6c34f5592f55aee321cec171b6079ed5eb535bf9ea78b000000006b483045022100ecda52ffb4500b7e593bf6a1d1f7a5b7303acf3a20b58c1cb0200b34a523d1d902203295bfb668e69b79275ed03335a8652d7687012227ac492a12cf9d29c1f7a7cc012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1feffffff42b03f0bfcaa231fb22c0ba1de153976aab7d629f8bde69557b8f429fc2a199b000000006b483045022100ddb49494296712b6f2db5031512d11dd470d338af010088fec65ed398cec0afe0220285d4b7d8a2b3ea0a18fa9d6fe375b401e8f6ae98281a1c3f1a9bd3742840702012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1feffffffbe47c01c96a681c330e584d14432fbe937429b4e9f023d48de35cddafb71b4f5000000006b483045022100ccf54a31a262e5ed9e58e1fa6c23938b81fd79dd62a1057f841e255a64a0e06c0220138773e3f5dd77b0bc1d1f1d01110b1b93741f631c177e7936c335dbaa19686f012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1feffffffb7cfa89729a98884b277d399dc58aaa25bec5e821fd459aad2ae3098df5937fa000000006a47304402200b035f016087a5468cd27f9575fb496aaeaf2c454c8bb402c3624c20bdd4448f022015a23433ad620ea7c5ff92a8198262c66a20595902ddc4141722396ecadc07ca012102a1dc26a61b5ed6fbecd4c0fe65b7dd8c637eee7cfce759cd0c55f83b6d9680b9feffffff02f4c33715000000001976a914ad56adfd39caf20673de73b9eae51352e730a2f288ac7073ac30030000001976a914b9e06afc1400f95eaffce11e51e58b0a8390e88b88ac3f870000', + blockhash: '000000e256b0ea8983f076771f019ebf4a6112f5c85396eab7f3e0660e9685c3', + height: 34624, + confirmations: 4607, + time: 1588755748, + blocktime: 1588755748, + instantlock: true, + instantlock_internal: false, + chainlock: true, + }; +}; diff --git a/packages/wasm-dpp/test/integration/document/Document.spec.js b/packages/wasm-dpp/test/integration/document/Document.spec.js index d28b68f8bbb..0f81edccd23 100644 --- a/packages/wasm-dpp/test/integration/document/Document.spec.js +++ b/packages/wasm-dpp/test/integration/document/Document.spec.js @@ -1,12 +1,8 @@ -const MetadataJs = require('@dashevo/dpp/lib/Metadata'); - -const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture'); -const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture'); +const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture'); +const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture'); const { default: loadWasmDpp } = require('../../../dist'); -let Document; -let DataContract; let Metadata; let Identifier; @@ -17,24 +13,14 @@ describe('Document', () => { beforeEach(async () => { ({ - Document, - DataContract, Metadata, Identifier, } = await loadWasmDpp()); - const dataContractJs = getDataContractFixture(); - dataContract = new DataContract(dataContractJs.toObject()); - - const [documentJs] = getDocumentsFixture(dataContractJs).slice(8); - document = new Document(documentJs.toObject(), dataContract); + dataContract = await getDataContractFixture(); - const metadataFixtureJs = new MetadataJs({ - blockHeight: 42, - coreChainLockedHeight: 0, - timeMs: new Date().getTime(), - protocolVersion: 1, - }); + const documents = await getDocumentsFixture(dataContract); + [document] = documents.slice(8); metadataFixture = Metadata.from({ blockHeight: 42, @@ -43,7 +29,6 @@ describe('Document', () => { protocolVersion: 1, }); - documentJs.setMetadata(metadataFixtureJs); document.setMetadata(metadataFixture); }); @@ -55,7 +40,7 @@ describe('Document', () => { $protocolVersion: document.getProtocolVersion(), $dataContractId: dataContract.getId().toString(), $id: document.getId().toString(), - $ownerId: getDocumentsFixture.ownerId.toString(), + $ownerId: document.getOwnerId().toString(), $revision: 1, $type: 'withByteArrays', byteArrayField: document.get('byteArrayField').toString('base64'), @@ -72,7 +57,7 @@ describe('Document', () => { $protocolVersion: document.getProtocolVersion(), $dataContractId: dataContract.getId().toBuffer(), $id: document.getId().toBuffer(), - $ownerId: getDocumentsFixture.ownerId, + $ownerId: document.getOwnerId().toBuffer(), $revision: 1, $type: 'withByteArrays', byteArrayField: document.get('byteArrayField'), @@ -90,7 +75,7 @@ describe('Document', () => { expect(result.$dataContractId.toBuffer()).to.deep.equal(dataContract.getId().toBuffer()); expect(result.$id.toBuffer()).to.deep.equal(document.getId().toBuffer()); - expect(result.$ownerId.toBuffer()).to.deep.equal(getDocumentsFixture.ownerId.toBuffer()); + expect(result.$ownerId.toBuffer()).to.deep.equal(document.getOwnerId().toBuffer()); expect(result.identifierField.toBuffer()).to.deep.equal(document.get('identifierField').toBuffer()); expect(result.$protocolVersion).to.deep.equal(document.getProtocolVersion()); expect(result.$revision).to.deep.equal(document.getRevision()); diff --git a/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js b/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js index 035edd2b9a1..486e26d91d4 100644 --- a/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js +++ b/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js @@ -1,12 +1,12 @@ const bs58 = require('bs58'); const DocumentCreateTransition = require('@dashevo/dpp/lib/document/stateTransition/DocumentsBatchTransition/documentTransition/DocumentCreateTransition'); -const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture'); -const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture'); const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult'); const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock'); const DocumentFactoryJS = require('@dashevo/dpp/lib/document/DocumentFactory'); +const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture'); +const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture'); const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock'); const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync'); diff --git a/packages/wasm-dpp/test/unit/document/fetchAndValidateDataContractFactory.spec.js b/packages/wasm-dpp/test/unit/document/fetchAndValidateDataContractFactory.spec.js index 76ed727c4dc..8e96633bedc 100644 --- a/packages/wasm-dpp/test/unit/document/fetchAndValidateDataContractFactory.spec.js +++ b/packages/wasm-dpp/test/unit/document/fetchAndValidateDataContractFactory.spec.js @@ -1,94 +1,57 @@ -const fetchAndValidateDataContractFactory = require('@dashevo/dpp/lib/document/fetchAndValidateDataContractFactory'); +const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock'); +const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture'); +const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture'); -const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock'); - -const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture'); -const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture'); - -const ValidationResultJs = require('@dashevo/dpp/lib/validation/ValidationResult'); - -const MissingDataContractIdErrorJs = require('@dashevo/dpp/lib/errors/consensus/basic/document/MissingDataContractIdError'); -const DataContractNotPresentErrorJs = require('@dashevo/dpp/lib/errors/consensus/basic/document/DataContractNotPresentError'); - -const { expectValidationError } = require('@dashevo/dpp/lib/test/expect/expectError'); +const { expectValidationError } = require('../../../lib/test/expect/expectError'); const { default: loadWasmDpp } = require('../../../dist'); let ValidationResult; -let DataContract; +let MissingDataContractIdError; +let DataContractNotPresentError; describe('fetchAndValidateDataContractFactory', () => { - let stateRepositoryMockJs; let stateRepositoryMock; - let fetchAndValidateDataContractJs; let fetchAndValidateDataContract; let rawDocument; beforeEach(async () => { ({ - DataContract, fetchAndValidateDataContract, ValidationResult, + MissingDataContractIdError, + DataContractNotPresentError, } = await loadWasmDpp()); }); - beforeEach(function beforeEach() { - const dataContractJs = getDataContractFixture(); - const dataContract = DataContract.fromBuffer(dataContractJs.toBuffer()); + beforeEach(async function beforeEach() { + const dataContract = await getDataContractFixture(); - const [document] = getDocumentsFixture(dataContractJs); + const [document] = await getDocumentsFixture(dataContract); rawDocument = document.toObject(); - stateRepositoryMockJs = createStateRepositoryMock(this.sinonSandbox); - stateRepositoryMockJs.fetchDataContract.resolves(dataContractJs); - stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox); stateRepositoryMock.fetchDataContract.resolves(dataContract); - - fetchAndValidateDataContractJs = fetchAndValidateDataContractFactory( - stateRepositoryMockJs, - ); }); it('should return with invalid result if $dataContractId is not present', async () => { delete rawDocument.$dataContractId; - const result = await fetchAndValidateDataContractJs(rawDocument); - - expectValidationError(result, MissingDataContractIdErrorJs); - - const [error] = result.getErrors(); - - expect(error.getCode()).to.equal(1025); - }); - - it('should return with invalid result if $dataContractId is not present - Rust', async () => { - delete rawDocument.$dataContractId; - const result = await fetchAndValidateDataContract(stateRepositoryMock, rawDocument); + await expectValidationError(result, MissingDataContractIdError); + const [error] = result.getErrors(); expect(error.getCode()).to.equal(1025); }); it('should return with invalid result if Data Contract is not present', async () => { - stateRepositoryMockJs.fetchDataContract.resolves(null); - - const result = await fetchAndValidateDataContractJs(rawDocument); - - expectValidationError(result, DataContractNotPresentErrorJs); - - const [error] = result.getErrors(); - - expect(error.getCode()).to.equal(1018); - expect(error.getDataContractId()).to.deep.equal(rawDocument.$dataContractId); - }); - - it('should return with invalid result if Data Contract is not present - Rust', async () => { stateRepositoryMock.fetchDataContract.resolves(null); const result = await fetchAndValidateDataContract(stateRepositoryMock, rawDocument); + await expectValidationError(result, DataContractNotPresentError); + const [error] = result.getErrors(); expect(error.getCode()).to.equal(1018); @@ -96,13 +59,6 @@ describe('fetchAndValidateDataContractFactory', () => { }); it('should return valid result', async () => { - const result = await fetchAndValidateDataContractJs(rawDocument); - - expect(result).to.be.an.instanceOf(ValidationResultJs); - expect(result.isValid()).to.be.true(); - }); - - it('should return valid result - Rust', async () => { const result = await fetchAndValidateDataContract(stateRepositoryMock, rawDocument); expect(result).to.be.an.instanceOf(ValidationResult); diff --git a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js index e31396b8799..3f20588afe6 100644 --- a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +++ b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js @@ -54,14 +54,6 @@ describe('DocumentsBatchTransition', () => { }); describe('#getProtocolVersion', () => { - it('should return the current protocol version', () => { - const result = stateTransitionJs.getProtocolVersion(); - - expect(result).to.equal(protocolVersion.latestVersion); - }); - }); - - describe('#getProtocolVersion - Rust', () => { it('should return the current protocol version', () => { const result = stateTransition.getProtocolVersion(); @@ -70,14 +62,6 @@ describe('DocumentsBatchTransition', () => { }); describe('#getType', () => { - it('should return State Transition type', () => { - const result = stateTransitionJs.getType(); - - expect(result).to.equal(stateTransitionTypes.DOCUMENTS_BATCH); - }); - }); - - describe('#getType - Rust', () => { it('should return State Transition type', () => { const result = stateTransition.getType(); @@ -87,33 +71,14 @@ describe('DocumentsBatchTransition', () => { describe('#getTransitions', () => { it('should return document transitions', () => { - const result = stateTransitionJs.getTransitions(); - - expect(result).to.equal(stateTransitionJs.transitions); - }); - }); + const result = stateTransition.getTransitions().map((t) => t.toObject()); - describe('#getTransitions - Rust', () => { - it('should return document transitions', () => { - const transitionsJs = stateTransitionJs.getTransitions().map((t) => t.toJSON()); - const transitions = stateTransition.getTransitions().map((t) => t.toJSON()); - expect(transitionsJs).to.deep.equal(transitions); + expect(result).to.deep.equal(stateTransitionJs.getTransitions().map((t) => t.toObject())); }); }); describe('#toJSON', () => { it('should return State Transition as JSON', () => { - expect(stateTransitionJs.toJSON()).to.deep.equal({ - protocolVersion: protocolVersion.latestVersion, - type: stateTransitionTypes.DOCUMENTS_BATCH, - ownerId: documentsJs[0].getOwnerId().toString(), - transitions: stateTransitionJs.getTransitions().map((d) => d.toJSON()), - signaturePublicKeyId: undefined, - signature: undefined, - }); - }); - - it('should return State Transition as JSON - Rust', () => { expect(stateTransition.toJSON()).to.deep.equal({ protocolVersion: protocolVersion.latestVersion, type: stateTransitionTypes.DOCUMENTS_BATCH, @@ -127,7 +92,7 @@ describe('DocumentsBatchTransition', () => { describe('#toObject', () => { it('should return State Transition as plain object', () => { - expect(stateTransitionJs.toObject()).to.deep.equal({ + expect(stateTransition.toObject()).to.deep.equal({ protocolVersion: protocolVersion.latestVersion, type: stateTransitionTypes.DOCUMENTS_BATCH, ownerId: documentsJs[0].getOwnerId(), @@ -136,13 +101,6 @@ describe('DocumentsBatchTransition', () => { signature: undefined, }); }); - - it('should return State Transition as plain object - Rust', () => { - const rawObject = stateTransition.toObject(); - const rawObjectJs = stateTransitionJs.toObject(); - - expect(rawObject).to.deep.equal(rawObjectJs); - }); }); describe('#toBuffer', () => { @@ -164,14 +122,6 @@ describe('DocumentsBatchTransition', () => { }); describe('#getOwnerId', () => { - it('should return owner id', async () => { - const result = stateTransitionJs.getOwnerId(); - - expect(result).to.deep.equal(getDocumentsFixture.ownerId); - }); - }); - - describe('#getOwnerId - Rust', () => { it('should return owner id', async () => { const result = stateTransition.getOwnerId(); @@ -180,16 +130,6 @@ describe('DocumentsBatchTransition', () => { }); describe('#getModifiedDataIds', () => { - it('should return ids of affected documents', () => { - const expectedIds = documentsJs.map((doc) => doc.getId()); - const result = stateTransitionJs.getModifiedDataIds(); - - expect(result.length).to.be.equal(10); - expect(result).to.be.deep.equal(expectedIds); - }); - }); - - describe('#getModifiedDataIds - Rust', () => { it('should return ids of affected documents', () => { const expectedIds = documentsJs.map((doc) => doc.getId().toBuffer()); const result = stateTransition.getModifiedDataIds().map((id) => id.toBuffer()); @@ -200,36 +140,18 @@ describe('DocumentsBatchTransition', () => { }); describe('#isDataContractStateTransition', () => { - it('should return false', () => { - expect(stateTransitionJs.isDataContractStateTransition()).to.be.false(); - }); - }); - - describe('#isDataContractStateTransition - Rust', () => { it('should return false', () => { expect(stateTransition.isDataContractStateTransition()).to.be.false(); }); }); describe('#isDocumentStateTransition', () => { - it('should return true', () => { - expect(stateTransitionJs.isDocumentStateTransition()).to.be.true(); - }); - }); - - describe('#isDocumentStateTransition - Rust', () => { it('should return true', () => { expect(stateTransition.isDocumentStateTransition()).to.be.true(); }); }); describe('#isIdentityStateTransition', () => { - it('should return false', () => { - expect(stateTransitionJs.isIdentityStateTransition()).to.be.false(); - }); - }); - - describe('#isIdentityStateTransition - Rust', () => { it('should return false', () => { expect(stateTransition.isIdentityStateTransition()).to.be.false(); }); diff --git a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js index ac0036beefa..1e7bbb4ac65 100644 --- a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +++ b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js @@ -1,4 +1,4 @@ -const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture'); +const getDocumentTransitionsFixture = require('../../../../../../lib/test/fixtures/getDocumentTransitionsFixture'); const { default: loadWasmDpp } = require('../../../../../../dist'); let DataContract; diff --git a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js index ff8314f0481..7f839f1d04e 100644 --- a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +++ b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js @@ -1,10 +1,10 @@ const DocumentJs = require('@dashevo/dpp/lib/document/Document'); -const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture'); -const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture'); -const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture'); - const { generate: generateEntropy } = require('@dashevo/dpp/lib/util/entropyGenerator'); +const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture'); +const getDocumentsFixture = require('../../../../../../../lib/test/fixtures/getDocumentsFixture'); +const getDocumentTransitionsFixture = require('../../../../../../../lib/test/fixtures/getDocumentTransitionsFixture'); + const { default: loadWasmDpp } = require('../../../../../../../dist'); let DataContract; From d31f52325bd30573dc24509323638b2f224f7118 Mon Sep 17 00:00:00 2001 From: Anton Suprunchuk Date: Thu, 23 Mar 2023 15:26:31 +0800 Subject: [PATCH 2/7] fix identifier conversion when using factory to create an extended document --- .../rs-dpp/src/document/document_factory.rs | 14 +++++++++++--- .../test/integration/document/Document.spec.js | 17 ++++------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/rs-dpp/src/document/document_factory.rs b/packages/rs-dpp/src/document/document_factory.rs index 04dda4d9f9f..85ed6dc4e78 100644 --- a/packages/rs-dpp/src/document/document_factory.rs +++ b/packages/rs-dpp/src/document/document_factory.rs @@ -1,13 +1,14 @@ use anyhow::Context; use chrono::Utc; -use std::collections::BTreeMap; +use std::collections::{BTreeMap, HashSet}; use itertools::Itertools; -use platform_value::{Bytes32, Value}; +use platform_value::{Bytes32, ReplacementType, Value}; use rand::rngs::StdRng; use rand::SeedableRng; use serde::{Deserialize, Serialize}; +use platform_value::btreemap_extensions::BTreeValueMapReplacementPathHelper; use crate::consensus::basic::document::InvalidDocumentTypeError; use crate::document::extended_document::{property_names, ExtendedDocument}; @@ -149,7 +150,7 @@ where (None, None) }; - let document = Document { + let mut document = Document { id: document_id, owner_id, properties: data @@ -160,6 +161,13 @@ where updated_at, }; + let (identifiers, _): (HashSet<_>, HashSet<_>) = + data_contract.get_identifiers_and_binary_paths_owned(document_type_name.as_str())?; + + document + .properties + .replace_at_paths(identifiers, ReplacementType::Identifier)?; + // let json_value = document.to_json_with_identifiers_using_bytes()?; // let validation_result = // self.document_validator diff --git a/packages/wasm-dpp/test/integration/document/Document.spec.js b/packages/wasm-dpp/test/integration/document/Document.spec.js index e6aba818a43..f9dc489e2a1 100644 --- a/packages/wasm-dpp/test/integration/document/Document.spec.js +++ b/packages/wasm-dpp/test/integration/document/Document.spec.js @@ -3,8 +3,6 @@ const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixt const { default: loadWasmDpp } = require('../../../dist'); -let ExtendedDocument; -let DataContract; let Metadata; let Identifier; @@ -15,23 +13,14 @@ describe('ExtendedDocument', () => { beforeEach(async () => { ({ - ExtendedDocument, - DataContract, Metadata, Identifier, } = await loadWasmDpp()); dataContract = await getDataContractFixture(); - const [documentJs] = getDocumentsFixture(dataContractJs).slice(8); - document = new ExtendedDocument(documentJs.toObject(), dataContract); - - const metadataFixtureJs = new MetadataJs({ - blockHeight: 42, - coreChainLockedHeight: 0, - timeMs: new Date().getTime(), - protocolVersion: 1, - }); + const documents = await getDocumentsFixture(dataContract); + [document] = documents.slice(8); metadataFixture = Metadata.from({ blockHeight: 42, @@ -64,6 +53,8 @@ describe('ExtendedDocument', () => { it('should return raw document - Rust', () => { const result = document.toObject(); + console.log(document.get('byteArrayField')); + expect(result).to.deep.equal({ $protocolVersion: document.getProtocolVersion(), $dataContractId: dataContract.getId().toBuffer(), From 0567d9930bdce2d04d4817364adbeabfe494f607 Mon Sep 17 00:00:00 2001 From: Anton Suprunchuk Date: Thu, 23 Mar 2023 16:24:51 +0800 Subject: [PATCH 3/7] fixed some issues --- .../fixtures/getChainAssetLockProofFixture.js | 22 +--- .../fixtures/getDashPayContractFixture.js | 17 +-- .../fixtures/getDashPayDocumentFixture.js | 38 +----- .../fixtures/getDocumentTransitionsFixture.js | 31 +---- .../test/fixtures/getDpnsContractFixture.js | 16 +-- .../test/fixtures/getDpnsDocumentFixture.js | 112 +---------------- .../getFeatureFlagsContractFixture.js | 16 +-- .../getFeatureFlagsDocumentsFixture.js | 32 +---- .../getIdentityCreateTransitionFixture.js | 37 +----- .../lib/test/fixtures/getIdentityFixture.js | 41 +----- .../getIdentityTopUpTransitionFixture.js | 25 +--- ...etMasternodeRewardShareDocumentsFixture.js | 28 +---- ...etMasternodeRewardSharesContractFixture.js | 16 +-- .../fixtures/getPreorderDocumentFixture.js | 41 +----- .../test/fixtures/getRawTransactionFixture.js | 119 +----------------- .../unit/document/DocumentFactory.spec.js | 10 +- .../basic/findDuplicatesByIndices.spec.js | 4 +- 17 files changed, 23 insertions(+), 582 deletions(-) diff --git a/packages/wasm-dpp/lib/test/fixtures/getChainAssetLockProofFixture.js b/packages/wasm-dpp/lib/test/fixtures/getChainAssetLockProofFixture.js index 8d3f4ae9d0b..0088e2820c1 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getChainAssetLockProofFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getChainAssetLockProofFixture.js @@ -1,21 +1 @@ -const ChainAssetLockProof = require('../../identity/stateTransition/assetLockProof/chain/ChainAssetLockProof'); - -function getChainAssetLockProofFixture() { - const outPoint = { - outpointHash: '6e200d059fb567ba19e92f5c2dcd3dde522fd4e0a50af223752db16158dabb1d', - outpointIndex: 0, - }; - - const binaryTransactionHash = Buffer.from(outPoint.outpointHash, 'hex'); - const indexBuffer = Buffer.alloc(4); - - indexBuffer.writeUInt32LE(outPoint.outpointIndex, 0); - - return new ChainAssetLockProof({ - type: 1, - coreChainLockedHeight: 42, - outPoint: Buffer.concat([binaryTransactionHash, indexBuffer]), - }); -} - -module.exports = getChainAssetLockProofFixture; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getDashPayContractFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDashPayContractFixture.js index f2153dfe4f6..a9651087855 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getDashPayContractFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getDashPayContractFixture.js @@ -1,16 +1 @@ -const dashPaySchema = require('@dashevo/dashpay-contract/schema/dashpay.schema.json'); -const DataContractFactory = require('../../dataContract/DataContractFactory'); - -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); - -const createDPPMock = require('../mocks/createDPPMock'); - -const ownerId = generateRandomIdentifier(); - -/** - * @return {DataContract} - */ -module.exports = function getDataContractFixture() { - const factory = new DataContractFactory(createDPPMock(), () => {}); - return factory.create(ownerId, dashPaySchema); -}; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getDashPayContractFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getDashPayDocumentFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDashPayDocumentFixture.js index c7036824fc2..93a1c0efa52 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getDashPayDocumentFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getDashPayDocumentFixture.js @@ -1,37 +1 @@ -const getDashPayContractFixture = require('./getDashPayContractFixture'); -const DocumentFactory = require('../../document/DocumentFactory'); -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); -const createDPPMock = require('../mocks/createDPPMock'); - -const ownerId = generateRandomIdentifier(); -const dataContract = getDashPayContractFixture(); - -/** - * @return {Document} - */ -function getContactRequestDocumentFixture(options = {}) { - const factory = new DocumentFactory( - createDPPMock(), - () => ({ - isValid: () => true, - }), - () => {}, - ); - - const data = { - toUserId: Buffer.alloc(32), - encryptedPublicKey: Buffer.alloc(96), - senderKeyIndex: 0, - recipientKeyIndex: 0, - accountReference: 0, - ...options, - }; - - return factory.create(dataContract, ownerId, 'contactRequest', data); -} - -module.exports = { - getContactRequestDocumentFixture, -}; - -module.exports.dataContract = dataContract; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getDashPayDocumentFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getDocumentTransitionsFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDocumentTransitionsFixture.js index 0011cbaa44d..3f59e19133e 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getDocumentTransitionsFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getDocumentTransitionsFixture.js @@ -1,30 +1 @@ -const DocumentFactory = require('../../document/DocumentFactory'); -const createDPPMock = require('../mocks/createDPPMock'); - -const getDocumentsFixture = require('./getDocumentsFixture'); - -function getDocumentTransitionsFixture(documents = {}) { - const { - create: createDocuments, - replace: replaceDocuments, - delete: deleteDocuments, - } = documents; - - const fixtureDocuments = getDocumentsFixture(); - - const factory = new DocumentFactory( - createDPPMock(), - () => { }, - () => { }, - ); - - const stateTransition = factory.createStateTransition({ - create: (createDocuments || fixtureDocuments), - replace: (replaceDocuments || []), - delete: (deleteDocuments || []), - }); - - return stateTransition.getTransitions(); -} - -module.exports = getDocumentTransitionsFixture; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getDpnsContractFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDpnsContractFixture.js index 529e66fa306..a54a3e120c6 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getDpnsContractFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getDpnsContractFixture.js @@ -1,15 +1 @@ -const dpnsDocuments = require('@dashevo/dpns-contract/schema/dpns-contract-documents.json'); -const DataContractFactory = require('../../dataContract/DataContractFactory'); -const createDPPMock = require('../mocks/createDPPMock'); - -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); - -const ownerId = generateRandomIdentifier(); - -/** - * @return {DataContract} - */ -module.exports = function getDataContractFixture() { - const factory = new DataContractFactory(createDPPMock(), () => {}); - return factory.create(ownerId, dpnsDocuments); -}; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getDpnsContractFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getDpnsDocumentFixture.js b/packages/wasm-dpp/lib/test/fixtures/getDpnsDocumentFixture.js index 6293e900b7f..2c87027b3b6 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getDpnsDocumentFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getDpnsDocumentFixture.js @@ -1,111 +1 @@ -const crypto = require('crypto'); -const getDpnsContractFixture = require('./getDpnsContractFixture'); -const DocumentFactory = require('../../document/DocumentFactory'); -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); -const createDPPMock = require('../mocks/createDPPMock'); - -const ownerId = generateRandomIdentifier(); -const dataContract = getDpnsContractFixture(); - -/** - * @return {Document} - */ -function getTopDocumentFixture(options = {}) { - const factory = new DocumentFactory( - createDPPMock(), - () => ({ - isValid: () => true, - }), - () => {}, - ); - - const label = options.label || 'grandparent'; - const normalizedLabel = options.normalizedLabel || label.toLowerCase(); - const data = { - label, - normalizedLabel, - normalizedParentDomainName: '', - preorderSalt: crypto.randomBytes(32), - records: { - dashUniqueIdentityId: ownerId, - }, - subdomainRules: { - allowSubdomains: true, - }, - ...options, - }; - - return factory.create(dataContract, ownerId, 'domain', data); -} - -/** - * @return {Document} - */ -function getParentDocumentFixture(options = {}) { - const factory = new DocumentFactory( - createDPPMock(), - () => ({ - isValid: () => true, - }), - () => {}, - ); - - const label = options.label || 'Parent'; - const normalizedLabel = options.normalizedLabel || label.toLowerCase(); - const data = { - label, - normalizedLabel, - normalizedParentDomainName: 'grandparent', - preorderSalt: crypto.randomBytes(32), - records: { - dashUniqueIdentityId: ownerId, - }, - subdomainRules: { - allowSubdomains: false, - }, - ...options, - }; - - return factory.create(dataContract, ownerId, 'domain', data); -} - -/** - * @return {Document} - */ -function getChildDocumentFixture(options = {}) { - const factory = new DocumentFactory( - createDPPMock(), - () => ({ - isValid: () => true, - }), - () => {}, - ); - - const label = options.label || 'Child'; - const normalizedLabel = options.normalizedLabel || label.toLowerCase(); - const parent = getParentDocumentFixture(); - const parentDomainName = `${parent.getData().normalizedLabel}.${parent.getData().normalizedParentDomainName}`; - const data = { - label, - normalizedLabel, - normalizedParentDomainName: parentDomainName, - preorderSalt: crypto.randomBytes(32), - records: { - dashUniqueIdentityId: ownerId, - }, - subdomainRules: { - allowSubdomains: false, - }, - ...options, - }; - - return factory.create(dataContract, ownerId, 'domain', data); -} - -module.exports = { - getTopDocumentFixture, - getParentDocumentFixture, - getChildDocumentFixture, -}; - -module.exports.dataContract = dataContract; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getDpnsDocumentFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsContractFixture.js b/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsContractFixture.js index bcfe82a841c..e2f293ed89b 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsContractFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsContractFixture.js @@ -1,15 +1 @@ -const featureFlagDocuments = require('@dashevo/feature-flags-contract/schema/feature-flags-documents.json'); -const DataContractFactory = require('../../dataContract/DataContractFactory'); -const createDPPMock = require('../mocks/createDPPMock'); - -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); - -const ownerId = generateRandomIdentifier(); - -/** - * @return {DataContract} - */ -module.exports = function getFeatureFlagsContractFixture() { - const factory = new DataContractFactory(createDPPMock(), () => {}); - return factory.create(ownerId, featureFlagDocuments); -}; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getFeatureFlagsContractFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js b/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js index b4763b2919d..7b1c334ca04 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js @@ -1,31 +1 @@ -const getFeatureFlagsContractFixture = require('./getFeatureFlagsContractFixture'); -const DocumentFactory = require('../../document/DocumentFactory'); -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); -const createDPPMock = require('../mocks/createDPPMock'); - -const ownerId = generateRandomIdentifier(); -const dataContract = getFeatureFlagsContractFixture(); - -/** - * @return {Document} - */ -function getFeatureFlagsDocumentsFixture() { - const factory = new DocumentFactory( - createDPPMock(), - () => ({ - isValid: () => true, - }), - () => {}, - ); - - return [ - factory.create(dataContract, ownerId, 'updateConsensusParams', { - enabled: true, - enableAtHeight: 77, - }), - ]; -} - -module.exports = getFeatureFlagsDocumentsFixture; - -module.exports.dataContract = dataContract; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getFeatureFlagsDocumentsFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getIdentityCreateTransitionFixture.js b/packages/wasm-dpp/lib/test/fixtures/getIdentityCreateTransitionFixture.js index dc9544714fc..caa915834d9 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getIdentityCreateTransitionFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getIdentityCreateTransitionFixture.js @@ -1,36 +1 @@ -const PrivateKey = require('@dashevo/dashcore-lib/lib/privatekey'); -const IdentityCreateTransition = require('../../identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition'); - -const IdentityPublicKey = require('../../identity/IdentityPublicKey'); - -const stateTransitionTypes = require('../../stateTransition/stateTransitionTypes'); - -const getInstantAssetLockProofFixture = require('./getInstantAssetLockProofFixture'); - -const protocolVersion = require('../../version/protocolVersion'); - -/** - * @param {PrivateKey} oneTimePrivateKey - * - * @return {IdentityCreateTransition} - */ -module.exports = function getIdentityCreateTransitionFixture(oneTimePrivateKey = new PrivateKey()) { - const rawStateTransition = { - protocolVersion: protocolVersion.latestVersion, - type: stateTransitionTypes.IDENTITY_CREATE, - assetLockProof: getInstantAssetLockProofFixture(oneTimePrivateKey).toObject(), - publicKeys: [ - { - id: 0, - type: IdentityPublicKey.TYPES.ECDSA_SECP256K1, - data: Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'), - purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION, - securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER, - readOnly: false, - signature: Buffer.alloc(0), - }, - ], - }; - - return new IdentityCreateTransition(rawStateTransition); -}; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getIdentityFixture.js b/packages/wasm-dpp/lib/test/fixtures/getIdentityFixture.js index 031d5149c53..e9bef1b103d 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getIdentityFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getIdentityFixture.js @@ -1,40 +1 @@ -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); - -const protocolVersion = require('../../version/protocolVersion'); - -const Identity = require('../../identity/Identity'); -const IdentityPublicKey = require('../../identity/IdentityPublicKey'); - -const staticId = generateRandomIdentifier(); - -/** - * @return {Identity} - */ -module.exports = function getIdentityFixture(id = staticId) { - const rawIdentity = { - protocolVersion: protocolVersion.latestVersion, - id: id.toBuffer(), - balance: 10, - revision: 0, - publicKeys: [ - { - id: 0, - type: IdentityPublicKey.TYPES.ECDSA_SECP256K1, - data: Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'), - purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION, - securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER, - readOnly: false, - }, - { - id: 1, - type: IdentityPublicKey.TYPES.ECDSA_SECP256K1, - data: Buffer.from('A8AK95PYMVX5VQKzOhcVQRCUbc9pyg3RiL7jttEMDU+L', 'base64'), - purpose: IdentityPublicKey.PURPOSES.ENCRYPTION, - securityLevel: IdentityPublicKey.SECURITY_LEVELS.MEDIUM, - readOnly: false, - }, - ], - }; - - return new Identity(rawIdentity); -}; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture.js b/packages/wasm-dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture.js index d79589dcddb..226b6f3fcff 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture.js @@ -1,24 +1 @@ -const IdentityTopUpTransition = require('../../identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition'); - -const stateTransitionTypes = require('../../stateTransition/stateTransitionTypes'); - -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); - -const getInstantAssetLockProofFixture = require('./getInstantAssetLockProofFixture'); - -const protocolVersion = require('../../version/protocolVersion'); - -/** - * - * @return {IdentityTopUpTransition} - */ -module.exports = function getIdentityTopUpTransitionFixture() { - const rawStateTransition = { - protocolVersion: protocolVersion.latestVersion, - type: stateTransitionTypes.IDENTITY_CREATE, - assetLockProof: getInstantAssetLockProofFixture().toObject(), - identityId: generateRandomIdentifier(), - }; - - return new IdentityTopUpTransition(rawStateTransition); -}; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js b/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js index 11ff3fbedf1..7565dd3c1e2 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js @@ -1,27 +1 @@ -const DocumentFactory = require('../../document/DocumentFactory'); -const createDPPMock = require('../mocks/createDPPMock'); -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); -const getMasternodeRewardSharesContractFixture = require('./getMasternodeRewardSharesContractFixture'); - -function getMasternodeRewardShareDocumentsFixture( - ownerId = generateRandomIdentifier(), - payToId = generateRandomIdentifier(), - dataContract = getMasternodeRewardSharesContractFixture(), -) { - const factory = new DocumentFactory( - createDPPMock(), - () => ({ - isValid: () => true, - }), - () => {}, - ); - - return [ - factory.create(dataContract, ownerId, 'rewardShare', { - payToId, - percentage: 500, - }), - ]; -} - -module.exports = getMasternodeRewardShareDocumentsFixture; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js b/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js index fdc602d519a..6b69b46e467 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js @@ -1,15 +1 @@ -const masternodeRewardSharesDocuments = require('@dashevo/masternode-reward-shares-contract/schema/masternode-reward-shares-documents.json'); -const DataContractFactory = require('../../dataContract/DataContractFactory'); -const createDPPMock = require('../mocks/createDPPMock'); -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); - -const ownerId = generateRandomIdentifier(); - -/** - * @return {DataContract} - */ -module.exports = function getMasternodeRewardSharesContractFixture() { - const factory = new DataContractFactory(createDPPMock(), () => {}); - - return factory.create(ownerId, masternodeRewardSharesDocuments); -}; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getMasternodeRewardSharesContractFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getPreorderDocumentFixture.js b/packages/wasm-dpp/lib/test/fixtures/getPreorderDocumentFixture.js index 4714669b203..f154917cb75 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getPreorderDocumentFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getPreorderDocumentFixture.js @@ -1,40 +1 @@ -const getDpnsContractFixture = require('./getDpnsContractFixture'); -const DocumentFactory = require('../../document/DocumentFactory'); -const { generate: generateEntropy } = require('../../util/entropyGenerator'); - -const generateRandomIdentifier = require('../utils/generateRandomIdentifier'); -const createDPPMock = require('../mocks/createDPPMock'); - -const ownerId = generateRandomIdentifier(); - -/** - * @return {Document} - */ -function getPreorderDocumentFixture(options = {}) { - const dataContract = getDpnsContractFixture(); - - const factory = new DocumentFactory( - createDPPMock(), - () => ({ - isValid: () => true, - }), - () => {}, - ); - - const label = options.label || 'Preorder'; - const normalizedLabel = options.normalizedLabel || label.toLowerCase(); - const data = { - label, - normalizedLabel, - parentDomainHash: '', - preorderSalt: generateEntropy(), - records: { - dashIdentity: ownerId, - }, - ...options, - }; - - return factory.create(dataContract, ownerId, 'preorder', data); -} - -module.exports = getPreorderDocumentFixture; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getPreorderDocumentFixture'); diff --git a/packages/wasm-dpp/lib/test/fixtures/getRawTransactionFixture.js b/packages/wasm-dpp/lib/test/fixtures/getRawTransactionFixture.js index d5c7415c02c..8d1ca0cd233 100644 --- a/packages/wasm-dpp/lib/test/fixtures/getRawTransactionFixture.js +++ b/packages/wasm-dpp/lib/test/fixtures/getRawTransactionFixture.js @@ -1,118 +1 @@ -/** - * Verbose raw transaction fixture - * - * @return Object - */ -module.exports = function getRawTransactionFixture() { - return { - txid: 'f1c1cbc37b5d5543eeb126a53de7863ea2b9d5dbd03b981337bbda76cc6d771c', - version: 2, - type: 0, - size: 817, - locktime: 34623, - vin: [ - { - txid: '3b8c0ef5f91c330f236f869eba2904432f03d1a3ab969882dae6f9417e77c760', - vout: 1, - scriptSig: { - asm: '3045022100cab5638d1498930dcc88047ba0c44b952988c390cd66e643de7b975b62170be40220181ede94c41ded6d83b586ce90e195ed09ad4c6b9dfcb76bc07fbba7b5e89e51[ALL] 03a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', - hex: '483045022100cab5638d1498930dcc88047ba0c44b952988c390cd66e643de7b975b62170be40220181ede94c41ded6d83b586ce90e195ed09ad4c6b9dfcb76bc07fbba7b5e89e51012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', - }, - value: 100.00000788, - valueSat: 10000000788, - address: 'yNPbcFfabtNmmxKdGwhHomdYfVs6gikbPf', - sequence: 4294967294, - }, - { - txid: '8ba79ebf35b55eed79601b17ec1c32ee5af592554fc3b6e5ff5fdc4d39854546', - vout: 0, - scriptSig: { - asm: '3045022100ecda52ffb4500b7e593bf6a1d1f7a5b7303acf3a20b58c1cb0200b34a523d1d902203295bfb668e69b79275ed03335a8652d7687012227ac492a12cf9d29c1f7a7cc[ALL] 03a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', - hex: '483045022100ecda52ffb4500b7e593bf6a1d1f7a5b7303acf3a20b58c1cb0200b34a523d1d902203295bfb668e69b79275ed03335a8652d7687012227ac492a12cf9d29c1f7a7cc012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', - }, - value: 11.25005000, - valueSat: 1125005000, - address: 'yNPbcFfabtNmmxKdGwhHomdYfVs6gikbPf', - sequence: 4294967294, - }, - { - txid: '9b192afc29f4b85795e6bdf829d6b7aa763915dea10b2cb21f23aafc0b3fb042', - vout: 0, - scriptSig: { - asm: '3045022100ddb49494296712b6f2db5031512d11dd470d338af010088fec65ed398cec0afe0220285d4b7d8a2b3ea0a18fa9d6fe375b401e8f6ae98281a1c3f1a9bd3742840702[ALL] 03a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', - hex: '483045022100ddb49494296712b6f2db5031512d11dd470d338af010088fec65ed398cec0afe0220285d4b7d8a2b3ea0a18fa9d6fe375b401e8f6ae98281a1c3f1a9bd3742840702012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', - }, - value: 11.25005000, - valueSat: 1125005000, - address: 'yNPbcFfabtNmmxKdGwhHomdYfVs6gikbPf', - sequence: 4294967294, - }, - { - txid: 'f5b471fbdacd35de483d029f4e9b4237e9fb3244d184e530c381a6961cc047be', - vout: 0, - scriptSig: { - asm: '3045022100ccf54a31a262e5ed9e58e1fa6c23938b81fd79dd62a1057f841e255a64a0e06c0220138773e3f5dd77b0bc1d1f1d01110b1b93741f631c177e7936c335dbaa19686f[ALL] 03a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', - hex: '483045022100ccf54a31a262e5ed9e58e1fa6c23938b81fd79dd62a1057f841e255a64a0e06c0220138773e3f5dd77b0bc1d1f1d01110b1b93741f631c177e7936c335dbaa19686f012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1', - }, - value: 11.25005000, - valueSat: 1125005000, - address: 'yNPbcFfabtNmmxKdGwhHomdYfVs6gikbPf', - sequence: 4294967294, - }, - { - txid: 'fa3759df9830aed2aa59d41f825eec5ba2aa58dc99d377b28488a92997a8cfb7', - vout: 0, - scriptSig: { - asm: '304402200b035f016087a5468cd27f9575fb496aaeaf2c454c8bb402c3624c20bdd4448f022015a23433ad620ea7c5ff92a8198262c66a20595902ddc4141722396ecadc07ca[ALL] 02a1dc26a61b5ed6fbecd4c0fe65b7dd8c637eee7cfce759cd0c55f83b6d9680b9', - hex: '47304402200b035f016087a5468cd27f9575fb496aaeaf2c454c8bb402c3624c20bdd4448f022015a23433ad620ea7c5ff92a8198262c66a20595902ddc4141722396ecadc07ca012102a1dc26a61b5ed6fbecd4c0fe65b7dd8c637eee7cfce759cd0c55f83b6d9680b9', - }, - value: 6.82471210, - valueSat: 682471210, - address: 'yc1C9TTSwXmN59rxpP5fKvtvrQa6MWVzaf', - sequence: 4294967294, - }, - ], - vout: [ - { - value: 3.55976180, - valueSat: 355976180, - n: 0, - scriptPubKey: { - asm: 'OP_DUP OP_HASH160 ad56adfd39caf20673de73b9eae51352e730a2f2 OP_EQUALVERIFY OP_CHECKSIG', - hex: '76a914ad56adfd39caf20673de73b9eae51352e730a2f288ac', - reqSigs: 1, - type: 'pubkeyhash', - addresses: [ - 'yc7yaznKps1rXWovLMXcMRQfc2AZUxoB3C', - ], - }, - spentTxId: 'b53f8b9a47e3af0491205c3d60689fed8d6d750bcfe9f1731a061f469c4f4e82', - spentIndex: 17, - spentHeight: 34899, - }, - { - value: 137.01510000, - valueSat: 13701510000, - n: 1, - scriptPubKey: { - asm: 'OP_DUP OP_HASH160 b9e06afc1400f95eaffce11e51e58b0a8390e88b OP_EQUALVERIFY OP_CHECKSIG', - hex: '76a914b9e06afc1400f95eaffce11e51e58b0a8390e88b88ac', - reqSigs: 1, - type: 'pubkeyhash', - addresses: [ - 'ydGGhXC6PXoBvUhG9rxs2LmriuEHdsjt4A', - ], - }, - }, - ], - hex: '020000000560c7777e41f9e6da829896aba3d1032f430429ba9e866f230f331cf9f50e8c3b010000006b483045022100cab5638d1498930dcc88047ba0c44b952988c390cd66e643de7b975b62170be40220181ede94c41ded6d83b586ce90e195ed09ad4c6b9dfcb76bc07fbba7b5e89e51012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1feffffff464585394ddc5fffe5b6c34f5592f55aee321cec171b6079ed5eb535bf9ea78b000000006b483045022100ecda52ffb4500b7e593bf6a1d1f7a5b7303acf3a20b58c1cb0200b34a523d1d902203295bfb668e69b79275ed03335a8652d7687012227ac492a12cf9d29c1f7a7cc012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1feffffff42b03f0bfcaa231fb22c0ba1de153976aab7d629f8bde69557b8f429fc2a199b000000006b483045022100ddb49494296712b6f2db5031512d11dd470d338af010088fec65ed398cec0afe0220285d4b7d8a2b3ea0a18fa9d6fe375b401e8f6ae98281a1c3f1a9bd3742840702012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1feffffffbe47c01c96a681c330e584d14432fbe937429b4e9f023d48de35cddafb71b4f5000000006b483045022100ccf54a31a262e5ed9e58e1fa6c23938b81fd79dd62a1057f841e255a64a0e06c0220138773e3f5dd77b0bc1d1f1d01110b1b93741f631c177e7936c335dbaa19686f012103a65caff6ca4c0415a3ac182dfc2a6d3a4dceb98e8b831e71501df38aa156f2c1feffffffb7cfa89729a98884b277d399dc58aaa25bec5e821fd459aad2ae3098df5937fa000000006a47304402200b035f016087a5468cd27f9575fb496aaeaf2c454c8bb402c3624c20bdd4448f022015a23433ad620ea7c5ff92a8198262c66a20595902ddc4141722396ecadc07ca012102a1dc26a61b5ed6fbecd4c0fe65b7dd8c637eee7cfce759cd0c55f83b6d9680b9feffffff02f4c33715000000001976a914ad56adfd39caf20673de73b9eae51352e730a2f288ac7073ac30030000001976a914b9e06afc1400f95eaffce11e51e58b0a8390e88b88ac3f870000', - blockhash: '000000e256b0ea8983f076771f019ebf4a6112f5c85396eab7f3e0660e9685c3', - height: 34624, - confirmations: 4607, - time: 1588755748, - blocktime: 1588755748, - instantlock: true, - instantlock_internal: false, - chainlock: true, - }; -}; +module.exports = require('@dashevo/dpp/lib/test/fixtures/getRawTransactionFixture'); diff --git a/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js b/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js index 1bda33c7814..b86e8bf8453 100644 --- a/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js +++ b/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js @@ -5,8 +5,10 @@ const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult') const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock'); const DocumentFactoryJS = require('@dashevo/dpp/lib/document/DocumentFactory'); +const getDataContractFixtureJs = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture'); const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture'); const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture'); +const getDocumentsFixtureJs = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture'); const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock'); const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync'); @@ -62,15 +64,15 @@ describe('DocumentFactory', () => { const protocolValidator = new ProtocolVersionValidator(); documentValidator = new DocumentValidator(protocolValidator); - ({ ownerId: ownerIdJs } = getDocumentsFixture); + ({ ownerId: ownerIdJs } = getDocumentsFixtureJs()[0]); ownerId = Identifier.from(ownerIdJs); - dataContractJs = getDataContractFixture(); + dataContractJs = getDataContractFixtureJs(); dataContract = DataContract.fromBuffer(dataContractJs.toBuffer()); const dc = DataContract.fromBuffer(dataContractJs.toBuffer()); dataContractId = dataContractJs.getId().toBuffer(); - documentsJs = getDocumentsFixture(dataContractJs); + documentsJs = getDocumentsFixtureJs(dataContractJs); documents = documentsJs.map((d) => { const doc = new ExtendedDocument(d.toObject(), dataContract); doc.setEntropy(d.entropy); @@ -348,7 +350,7 @@ describe('DocumentFactory', () => { }); it('should create DocumentsBatchTransition with passed documents', async () => { - const [newDocumentJs] = getDocumentsFixture(dataContractJs); + const [newDocumentJs] = getDocumentsFixtureJs(dataContractJs); const newDocument = new ExtendedDocument(newDocumentJs.toObject(), dataContract); const stateTransition = factory.createStateTransition({ diff --git a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js index 638117343db..1101d19ee7e 100644 --- a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +++ b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js @@ -1,8 +1,8 @@ const DocumentJs = require('@dashevo/dpp/lib/document/Document'); const { generate: generateEntropy } = require('@dashevo/dpp/lib/util/entropyGenerator'); -const getDataContractFixture = require('../../../../../../../lib/test/fixtures/getDataContractFixture'); -const getDocumentsFixture = require('../../../../../../../lib/test/fixtures/getDocumentsFixture'); +const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture'); +const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture'); const getDocumentTransitionsFixture = require('../../../../../../../lib/test/fixtures/getDocumentTransitionsFixture'); const { default: loadWasmDpp } = require('../../../../../../../dist'); From 75b08c93ce9bbcb75ba713bcd765d281a2bb1959 Mon Sep 17 00:00:00 2001 From: Anton Suprunchuk Date: Thu, 23 Mar 2023 16:49:52 +0800 Subject: [PATCH 4/7] replaced some fixtures --- .../test/integration/document/DocumentFacade.spec.js | 2 +- .../validateIdentityCreateTransitionBasicFactory.spec.js | 4 ++-- .../validateIdentityTopUpTransitionBasicFactory.spec.js | 4 ++-- .../createContactRequestDataTrigger.spec.js | 4 ++-- .../validation/basic/findDuplicatesById.spec.js | 6 +++--- .../wasm-dpp/test/unit/identity/IdentityFactory.spec.js | 6 +++--- .../validateStateTransitionKeySignatureFactory.spec.js | 4 ++-- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/wasm-dpp/test/integration/document/DocumentFacade.spec.js b/packages/wasm-dpp/test/integration/document/DocumentFacade.spec.js index c859a785818..51daa6f63ae 100644 --- a/packages/wasm-dpp/test/integration/document/DocumentFacade.spec.js +++ b/packages/wasm-dpp/test/integration/document/DocumentFacade.spec.js @@ -2,7 +2,7 @@ const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRa const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock'); const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture'); const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture'); -const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture'); +const getDocumentTransitionsFixture = require('../../../lib/test/fixtures/getDocumentTransitionsFixture'); const { default: loadWasmDpp } = require('../../../dist'); const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock'); diff --git a/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js b/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js index fb490ffb75b..704063bf275 100644 --- a/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +++ b/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js @@ -1,8 +1,8 @@ const { PrivateKey } = require('@dashevo/dashcore-lib'); -const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture'); - const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock'); +const getIdentityCreateTransitionFixture = require('../../../../../../../lib/test/fixtures/getIdentityCreateTransitionFixture'); + const { expectValidationError, expectJsonSchemaError } = require('../../../../../../../lib/test/expect/expectError'); const { default: loadWasmDpp } = require('../../../../../../../dist'); const getBlsAdapterMock = require('../../../../../../../lib/test/mocks/getBlsAdapterMock'); diff --git a/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js b/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js index 0dd570c89d8..ce51b8d3a1b 100644 --- a/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +++ b/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js @@ -1,6 +1,6 @@ -const getIdentityTopUpTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture'); - const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock'); +const getIdentityTopUpTransitionFixture = require('../../../../../../../lib/test/fixtures/getIdentityTopUpTransitionFixture'); + const { expectJsonSchemaError, expectValidationError, diff --git a/packages/wasm-dpp/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js b/packages/wasm-dpp/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js index c695d7214ce..2df79bb7291 100644 --- a/packages/wasm-dpp/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +++ b/packages/wasm-dpp/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js @@ -7,9 +7,9 @@ const DataTriggerConditionError = require('@dashevo/dpp/lib/errors/consensus/sta const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock'); const getDocumentTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture'); -const getDashPayContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDashPayContractFixture'); -const { getContactRequestDocumentFixture } = require('@dashevo/dpp/lib/test/fixtures/getDashPayDocumentFixture'); const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext'); +const getDashPayContractFixture = require('../../../../lib/test/fixtures/getDashPayContractFixture'); +const { getContactRequestDocumentFixture } = require('../../../../lib/test/fixtures/getDashPayDocumentFixture'); describe('createContactRequestDataTrigger', () => { let context; diff --git a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js index ef773982f59..b2b3849fd18 100644 --- a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +++ b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js @@ -1,4 +1,4 @@ -const getDocumentTransitionsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentTransitionsFixture'); +const getDocumentTransitionsFixture = require('../../../../../../../lib/test/fixtures/getDocumentTransitionsFixture'); const { default: loadWasmDpp } = require('../../../../../../../dist'); let findDuplicatesById; @@ -13,14 +13,14 @@ describe('findDuplicatesById', () => { rawDocumentTransitions = getDocumentTransitionsFixture().map((t) => t.toObject()); }); - it('should return empty array if there are no duplicated Documents - Rust', () => { + it('should return empty array if there are no duplicated Documents', () => { const result = findDuplicatesById(rawDocumentTransitions); expect(result).to.be.an('array'); expect(result).to.have.lengthOf(0); }); - it('should return duplicated Documents - Rust', () => { + it('should return duplicated Documents', () => { rawDocumentTransitions.push(rawDocumentTransitions[0]); console.dir(rawDocumentTransitions[0]); diff --git a/packages/wasm-dpp/test/unit/identity/IdentityFactory.spec.js b/packages/wasm-dpp/test/unit/identity/IdentityFactory.spec.js index fc3c883d529..71c70b71ff2 100644 --- a/packages/wasm-dpp/test/unit/identity/IdentityFactory.spec.js +++ b/packages/wasm-dpp/test/unit/identity/IdentityFactory.spec.js @@ -1,7 +1,7 @@ -const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture'); -const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture'); -const getChainAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture'); const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey'); +const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture'); +const getIdentityFixture = require('../../../lib/test/fixtures/getIdentityFixture'); +const getChainAssetLockProofFixture = require('../../../lib/test/fixtures/getChainAssetLockProofFixture'); const { default: loadWasmDpp } = require('../../../dist'); const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock'); diff --git a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js index 53f4fbc5a4f..5e022a5afe6 100644 --- a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +++ b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js @@ -1,8 +1,8 @@ const { Transaction, PrivateKey, Script } = require('@dashevo/dashcore-lib'); -const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture'); const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock'); -const getIdentityTopUpTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityTopUpTransitionFixture'); +const getIdentityCreateTransitionFixture = require('../../../../lib/test/fixtures/getIdentityCreateTransitionFixture'); +const getIdentityTopUpTransitionFixture = require('../../../../lib/test/fixtures/getIdentityTopUpTransitionFixture'); const { expectValidationError } = require('../../../../lib/test/expect/expectError'); const { default: loadWasmDpp } = require('../../../../dist'); From 262a6ada7ad2b81b581e1a8321b99b0c6f017783 Mon Sep 17 00:00:00 2001 From: Anton Suprunchuk Date: Fri, 24 Mar 2023 17:40:02 +0800 Subject: [PATCH 5/7] reformat --- packages/rs-dpp/src/document/document_factory.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rs-dpp/src/document/document_factory.rs b/packages/rs-dpp/src/document/document_factory.rs index e43a048181f..aa1c99e46cc 100644 --- a/packages/rs-dpp/src/document/document_factory.rs +++ b/packages/rs-dpp/src/document/document_factory.rs @@ -4,11 +4,11 @@ use std::collections::{BTreeMap, HashSet}; use itertools::Itertools; +use platform_value::btreemap_extensions::BTreeValueMapReplacementPathHelper; use platform_value::{Bytes32, ReplacementType, Value}; use rand::rngs::StdRng; use rand::SeedableRng; use serde::{Deserialize, Serialize}; -use platform_value::btreemap_extensions::BTreeValueMapReplacementPathHelper; use crate::consensus::basic::document::InvalidDocumentTypeError; use crate::document::extended_document::{property_names, ExtendedDocument}; From c345880bf933e303d4ca172c6165f3fe7874fd17 Mon Sep 17 00:00:00 2001 From: Anton Suprunchuk Date: Mon, 27 Mar 2023 15:19:45 +0800 Subject: [PATCH 6/7] fix tests --- .../basic/validateIdentityCreateTransitionBasicFactory.spec.js | 2 +- packages/wasm-dpp/test/unit/identity/IdentityFactory.spec.js | 2 +- .../validateStateTransitionKeySignatureFactory.spec.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js b/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js index 704063bf275..261a2efa2b4 100644 --- a/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +++ b/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js @@ -1,7 +1,7 @@ const { PrivateKey } = require('@dashevo/dashcore-lib'); const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock'); -const getIdentityCreateTransitionFixture = require('../../../../../../../lib/test/fixtures/getIdentityCreateTransitionFixture'); +const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture'); const { expectValidationError, expectJsonSchemaError } = require('../../../../../../../lib/test/expect/expectError'); const { default: loadWasmDpp } = require('../../../../../../../dist'); diff --git a/packages/wasm-dpp/test/unit/identity/IdentityFactory.spec.js b/packages/wasm-dpp/test/unit/identity/IdentityFactory.spec.js index 71c70b71ff2..d50f8a1541e 100644 --- a/packages/wasm-dpp/test/unit/identity/IdentityFactory.spec.js +++ b/packages/wasm-dpp/test/unit/identity/IdentityFactory.spec.js @@ -1,6 +1,6 @@ const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey'); const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture'); -const getIdentityFixture = require('../../../lib/test/fixtures/getIdentityFixture'); +const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture'); const getChainAssetLockProofFixture = require('../../../lib/test/fixtures/getChainAssetLockProofFixture'); const { default: loadWasmDpp } = require('../../../dist'); const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock'); diff --git a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js index 5e022a5afe6..1ce9b8cce9e 100644 --- a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +++ b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js @@ -1,7 +1,7 @@ const { Transaction, PrivateKey, Script } = require('@dashevo/dashcore-lib'); const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock'); -const getIdentityCreateTransitionFixture = require('../../../../lib/test/fixtures/getIdentityCreateTransitionFixture'); +const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture'); const getIdentityTopUpTransitionFixture = require('../../../../lib/test/fixtures/getIdentityTopUpTransitionFixture'); const { expectValidationError } = require('../../../../lib/test/expect/expectError'); From c9d876be3c1ad4c9a339fbb65854711fd561b261 Mon Sep 17 00:00:00 2001 From: Anton Suprunchuk Date: Mon, 27 Mar 2023 15:43:58 +0800 Subject: [PATCH 7/7] fix eslint errors --- packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js b/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js index b86e8bf8453..22177e253b0 100644 --- a/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js +++ b/packages/wasm-dpp/test/unit/document/DocumentFactory.spec.js @@ -6,8 +6,6 @@ const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock'); const DocumentFactoryJS = require('@dashevo/dpp/lib/document/DocumentFactory'); const getDataContractFixtureJs = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture'); -const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture'); -const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture'); const getDocumentsFixtureJs = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture'); const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock'); const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync'); @@ -64,7 +62,7 @@ describe('DocumentFactory', () => { const protocolValidator = new ProtocolVersionValidator(); documentValidator = new DocumentValidator(protocolValidator); - ({ ownerId: ownerIdJs } = getDocumentsFixtureJs()[0]); + ([{ ownerId: ownerIdJs }] = getDocumentsFixtureJs()); ownerId = Identifier.from(ownerIdJs); dataContractJs = getDataContractFixtureJs();