diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 57a8da879..d2fdab15d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,7 +84,7 @@ jobs: NODE3_PRIVATE_KEY: ${{ secrets.NODE3_PRIVATE_KEY }} IPFS_GATEWAY: http://172.15.0.16:8080/ ARWEAVE_GATEWAY: https://arweave.net/ - RPCS: '{ "1": {"rpc": "https://rpc.eth.gateway.fm", "chainId": 1, "network": "mainet", "chunkSize": 100}, "137": {"rpc": "https://polygon.meowrpc.com", "chainId": 137, "network": "polygon", "chunkSize": 100 }, "80001": {"rpc": "https://rpc-mumbai.maticvigil.com","chainId": 80001, "network": "polygon-mumbai", "chunkSize": 100 } }' + RPCS: '{ "8996": {"rpc": "http://127.0.0.1:8545", "chainId": 8996, "network": "development", "chunkSize": 100}}' DB_URL: 'http://localhost:8108/?apiKey=xyz' DB_TYPE: 'typesense' FEE_TOKENS: '{ "1": "0x967da4048cD07aB37855c090aAF366e4ce1b9F48", "137": "0x282d8efCe846A88B159800bd4130ad77443Fa1A1", "80001": "0xd8992Ed72C445c35Cb4A2be468568Ed1079357c8", "56": "0xDCe07662CA8EbC241316a15B611c89711414Dd1a" }' diff --git a/src/test/.env.test b/src/test/.env.test index 4a2079fcc..74162ec50 100644 --- a/src/test/.env.test +++ b/src/test/.env.test @@ -9,6 +9,7 @@ ARWEAVE_GATEWAY=https://arweave.net/ NODE1_PRIVATE_KEY=0xcb345bd2b11264d523ddaf383094e2675c420a17511c3102a53817f13474a7ff NODE2_PRIVATE_KEY=0x3634cc4a3d2694a1186a7ce545f149e022eea103cc254d18d08675104bb4b5ac INDEXER_INTERVAL=9000 -#ADDRESS_FILE=${HOME}/.ocean/ocean-contracts/artifacts/address.json +ADDRESS_FILE=${HOME}/.ocean/ocean-contracts/artifacts/address.json LOG_LEVEL=debug DB_TYPE=elasticsearch +ANOTHER_WALLET_PRIVATE_KEY='0xef4b441145c1d0f3b4bc6d61d29f5c6e502359481152f869247c7a4244d45209' \ No newline at end of file diff --git a/src/test/integration/compute.test.ts b/src/test/integration/compute.test.ts index 395fd9900..a41853c71 100644 --- a/src/test/integration/compute.test.ts +++ b/src/test/integration/compute.test.ts @@ -18,6 +18,7 @@ import type { ComputeEnvironment } from '../../@types/C2D.js' import { + Blockchain, // DB_TYPES, ENVIRONMENT_VARIABLES, EVENTS, @@ -42,7 +43,6 @@ import { } from 'ethers' import { publishAsset, orderAsset } from '../utils/assets.js' import { computeAsset, algoAsset } from '../data/assets.js' -import { RPCS } from '../../@types/blockchain.js' import { DEFAULT_TEST_TIMEOUT, OverrideEnvConfig, @@ -67,13 +67,13 @@ import { getAlgoChecksums, validateAlgoForDataset } from '../../components/core/compute/utils.js' +import { RPCS } from '../../@types/blockchain.js' describe('Compute', () => { let previousConfiguration: OverrideEnvConfig[] let config: OceanNodeConfig let dbconn: Database let oceanNode: OceanNode - let provider: any let publisherAccount: any let consumerAccount: any let computeEnvironments: any @@ -85,15 +85,12 @@ describe('Compute', () => { let providerFeesComputeDataset: ProviderFees let providerFeesComputeAlgo: ProviderFees let indexer: OceanIndexer + let blockchain: Blockchain const now = new Date().getTime() / 1000 const computeJobValidUntil = now + 60 * 15 // 15 minutes from now should be enough let firstEnv: ComputeEnvironment - const wallet = new ethers.Wallet( - '0xef4b441145c1d0f3b4bc6d61d29f5c6e502359481152f869247c7a4244d45209' - ) - // const chainId = DEVELOPMENT_CHAIN_ID - const mockSupportedNetworks: RPCS = getMockSupportedNetworks() + let wallet: ethers.Wallet const chainId = 8996 // randomly use a set of trusted algos or empty arrays // should validate if set and match, invalidate otherwise @@ -105,13 +102,12 @@ describe('Compute', () => { let datasetDDO: any before(async () => { + const mockSupportedNetworks: RPCS = getMockSupportedNetworks() previousConfiguration = await setupEnvironment( TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig( [ ENVIRONMENT_VARIABLES.RPCS, - ENVIRONMENT_VARIABLES.INDEXER_NETWORKS, - ENVIRONMENT_VARIABLES.PRIVATE_KEY, ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, ENVIRONMENT_VARIABLES.ADDRESS_FILE, ENVIRONMENT_VARIABLES.OPERATOR_SERVICE_URL @@ -119,9 +115,7 @@ describe('Compute', () => { // ENVIRONMENT_VARIABLES.DB_TYPE ], [ - JSON.stringify(mockSupportedNetworks), - JSON.stringify([8996]), - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', + mockSupportedNetworks, JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), `${homedir}/.ocean/ocean-contracts/artifacts/address.json`, JSON.stringify(['http://localhost:31000']) @@ -130,6 +124,9 @@ describe('Compute', () => { ] ) ) + const rpc: string = 'http://127.0.0.1:8545' + const provider = new JsonRpcProvider(rpc) + wallet = new ethers.Wallet(process.env.ANOTHER_WALLET_PRIVATE_KEY, provider) config = await getConfiguration(true) dbconn = await new Database(config.dbConfig) oceanNode = await OceanNode.getInstance(dbconn) @@ -137,9 +134,12 @@ describe('Compute', () => { oceanNode.addIndexer(indexer) oceanNode.addC2DEngines(config) - provider = new JsonRpcProvider('http://127.0.0.1:8545') - publisherAccount = (await provider.getSigner(0)) as Signer - consumerAccount = (await provider.getSigner(1)) as Signer + blockchain = new Blockchain(rpc, 'development', 8996, [ + 'http://172.0.0.3:8545', + 'http://127.0.0.1:8545' + ]) + publisherAccount = blockchain.getSigner() as Signer + consumerAccount = wallet as Signer const artifactsAddresses = getOceanArtifactsAdresses() publisherAddress = await publisherAccount.getAddress() diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 347b2cb09..fb51a5ed2 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -40,7 +40,6 @@ import { OverrideEnvConfig, TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig, - getMockSupportedNetworks, setupEnvironment, tearDownEnvironment } from '../utils/utils.js' @@ -60,7 +59,6 @@ import { deployAccessListContract, getContract } from '../utils/contracts.js' describe('Should run a complete node flow.', () => { let config: OceanNodeConfig let oceanNode: OceanNode - let provider: JsonRpcProvider let publisherAccount: Signer let consumerAccounts: Signer[] @@ -69,12 +67,10 @@ describe('Should run a complete node flow.', () => { let ddo: any let did: string const orderTxIds: string[] = [] - - const mockSupportedNetworks: RPCS = getMockSupportedNetworks() + let wallet: ethers.Wallet + let blockchain: Blockchain let previousConfiguration: OverrideEnvConfig[] - - let blockchain: Blockchain let contractAcessList: Contract let signer: Signer @@ -84,17 +80,11 @@ describe('Should run a complete node flow.', () => { TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig( [ - ENVIRONMENT_VARIABLES.RPCS, - ENVIRONMENT_VARIABLES.INDEXER_NETWORKS, - ENVIRONMENT_VARIABLES.PRIVATE_KEY, ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, ENVIRONMENT_VARIABLES.ALLOWED_ADMINS, ENVIRONMENT_VARIABLES.ADDRESS_FILE ], [ - JSON.stringify(mockSupportedNetworks), - JSON.stringify([8996]), - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), `${homedir}/.ocean/ocean-contracts/artifacts/address.json` @@ -102,11 +92,14 @@ describe('Should run a complete node flow.', () => { ) ) + const rpc: string = 'http://127.0.0.1:8545' config = await getConfiguration(true) // Force reload the configuration const database = await new Database(config.dbConfig) oceanNode = await OceanNode.getInstance(database) const indexer = new OceanIndexer(database, config.indexingNetworks) oceanNode.addIndexer(indexer) + const provider = new JsonRpcProvider(rpc) + wallet = new ethers.Wallet(process.env.ANOTHER_WALLET_PRIVATE_KEY, provider) const rpcs: RPCS = config.supportedNetworks const chain: SupportedNetwork = rpcs[String(DEVELOPMENT_CHAIN_ID)] @@ -117,13 +110,15 @@ describe('Should run a complete node flow.', () => { chain.fallbackRPCs ) - provider = new JsonRpcProvider('http://127.0.0.1:8545') - - publisherAccount = (await provider.getSigner(0)) as Signer + blockchain = new Blockchain(rpc, 'development', 8996, [ + 'http://172.0.0.3:8545', + 'http://127.0.0.1:8545' + ]) + publisherAccount = blockchain.getSigner() as Signer consumerAccounts = [ - (await provider.getSigner(1)) as Signer, - (await provider.getSigner(2)) as Signer, - (await provider.getSigner(3)) as Signer + wallet as Signer, + new ethers.Wallet(process.env.NODE1_PRIVATE_KEY) as Signer, + new ethers.Wallet(process.env.NODE2_PRIVATE_KEY) as Signer ] consumerAddresses = await Promise.all(consumerAccounts.map((a) => a.getAddress())) }) diff --git a/src/test/integration/download.test.ts b/src/test/integration/download.test.ts index 05f2d1bc6..acf36728c 100644 --- a/src/test/integration/download.test.ts +++ b/src/test/integration/download.test.ts @@ -1,13 +1,13 @@ import { expect, assert } from 'chai' -import { JsonRpcProvider, Signer, ethers } from 'ethers' +import { Signer, ethers, JsonRpcProvider } from 'ethers' import { Database } from '../../components/database/index.js' import { OceanIndexer } from '../../components/Indexer/index.js' import { OceanNode } from '../../OceanNode.js' -import { RPCS } from '../../@types/blockchain.js' import { streamToString, streamToObject } from '../../utils/util.js' import { expectedTimeoutFailure, waitToIndex } from './testUtils.js' import { + Blockchain, ENVIRONMENT_VARIABLES, EVENTS, PROTOCOL_COMMANDS, @@ -29,7 +29,6 @@ import { OverrideEnvConfig, TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig, - getMockSupportedNetworks, setupEnvironment, tearDownEnvironment } from '../utils/utils.js' @@ -48,7 +47,6 @@ describe('Should run a complete node flow.', () => { let config: OceanNodeConfig let database: Database let oceanNode: OceanNode - let provider: JsonRpcProvider let publisherAccount: Signer let consumerAccount: Signer let consumerAddress: string @@ -56,8 +54,9 @@ describe('Should run a complete node flow.', () => { let publishedDataset: any let actualDDO: any let indexer: OceanIndexer + let wallet: ethers.Wallet + let blockchain: Blockchain - const mockSupportedNetworks: RPCS = getMockSupportedNetworks() const serviceId = '0' let previousConfiguration: OverrideEnvConfig[] @@ -68,17 +67,11 @@ describe('Should run a complete node flow.', () => { TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig( [ - ENVIRONMENT_VARIABLES.RPCS, - ENVIRONMENT_VARIABLES.INDEXER_NETWORKS, - ENVIRONMENT_VARIABLES.PRIVATE_KEY, ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, ENVIRONMENT_VARIABLES.ALLOWED_ADMINS, ENVIRONMENT_VARIABLES.ADDRESS_FILE ], [ - JSON.stringify(mockSupportedNetworks), - JSON.stringify([8996]), - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), `${homedir}/.ocean/ocean-contracts/artifacts/address.json` @@ -96,11 +89,16 @@ describe('Should run a complete node flow.', () => { if (!network) { network = getOceanArtifactsAdresses().development } - - provider = new JsonRpcProvider('http://127.0.0.1:8545') - - publisherAccount = (await provider.getSigner(0)) as Signer - consumerAccount = (await provider.getSigner(1)) as Signer + const rpc: string = 'http://127.0.0.1:8545' + const provider = new JsonRpcProvider(rpc) + wallet = new ethers.Wallet(process.env.ANOTHER_WALLET_PRIVATE_KEY, provider) + blockchain = new Blockchain(rpc, 'development', 8996, [ + 'http://172.0.0.3:8545', + 'http://127.0.0.1:8545' + ]) + + publisherAccount = blockchain.getSigner() as Signer + consumerAccount = wallet as Signer consumerAddress = await consumerAccount.getAddress() }) diff --git a/src/test/integration/encryptDecryptDDO.test.ts b/src/test/integration/encryptDecryptDDO.test.ts index 174469394..f85a8715d 100644 --- a/src/test/integration/encryptDecryptDDO.test.ts +++ b/src/test/integration/encryptDecryptDDO.test.ts @@ -1,12 +1,4 @@ -import { - Contract, - ethers, - getAddress, - hexlify, - JsonRpcProvider, - Signer, - ZeroAddress -} from 'ethers' +import { Contract, ethers, getAddress, hexlify, Signer, ZeroAddress } from 'ethers' import { assert, expect } from 'chai' import { getEventFromTx, streamToString } from '../../utils/util.js' import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } @@ -23,6 +15,7 @@ import { encrypt } from '../../utils/crypt.js' import { Database } from '../../components/database/index.js' import { DecryptDdoHandler } from '../../components/core/handler/ddoHandler.js' import { + Blockchain, ENVIRONMENT_VARIABLES, getConfiguration, PROTOCOL_COMMANDS @@ -44,7 +37,6 @@ import { OceanIndexer } from '../../components/Indexer/index.js' describe('Should encrypt and decrypt DDO', () => { let database: Database let oceanNode: OceanNode - let provider: JsonRpcProvider let publisherAccount: Signer let publisherAddress: string let factoryContract: Contract @@ -57,6 +49,7 @@ describe('Should encrypt and decrypt DDO', () => { let documentHash: any let indexer: OceanIndexer const nonce = Math.floor(Date.now() / 1000).toString() + let blockchain: Blockchain const chainId = 8996 const mockSupportedNetworks: RPCS = { @@ -71,29 +64,26 @@ describe('Should encrypt and decrypt DDO', () => { let previousConfiguration: OverrideEnvConfig[] before(async () => { - provider = new JsonRpcProvider('http://127.0.0.1:8545') - publisherAccount = (await provider.getSigner(0)) as Signer - publisherAddress = await publisherAccount.getAddress() - genericAsset = genericDDO previousConfiguration = await setupEnvironment( TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig( + [ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, ENVIRONMENT_VARIABLES.ADDRESS_FILE], [ - ENVIRONMENT_VARIABLES.PRIVATE_KEY, - ENVIRONMENT_VARIABLES.RPCS, - ENVIRONMENT_VARIABLES.INDEXER_NETWORKS, - ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, - ENVIRONMENT_VARIABLES.ADDRESS_FILE - ], - [ - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', - JSON.stringify(mockSupportedNetworks), - JSON.stringify([8996]), - JSON.stringify([publisherAddress]), + JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), `${homedir}/.ocean/ocean-contracts/artifacts/address.json` ] ) ) + + const rpc: string = 'http://127.0.0.1:8545' + blockchain = new Blockchain(rpc, 'development', 8996, [ + 'http://172.0.0.3:8545', + 'http://127.0.0.1:8545' + ]) + + publisherAccount = blockchain.getSigner() as Signer + publisherAddress = await publisherAccount.getAddress() + genericAsset = genericDDO let artifactsAddresses = getOceanArtifactsAdressesByChainId(DEVELOPMENT_CHAIN_ID) if (!artifactsAddresses) { artifactsAddresses = getOceanArtifactsAdresses().development diff --git a/src/test/integration/encryptFile.test.ts b/src/test/integration/encryptFile.test.ts index acbef3475..d29a294ac 100644 --- a/src/test/integration/encryptFile.test.ts +++ b/src/test/integration/encryptFile.test.ts @@ -1,7 +1,7 @@ import { expect, assert } from 'chai' import { getConfiguration } from '../../utils/config.js' import { OceanNode } from '../../OceanNode.js' -import { ENVIRONMENT_VARIABLES, PROTOCOL_COMMANDS } from '../../utils/constants.js' +import { PROTOCOL_COMMANDS } from '../../utils/constants.js' import { OceanNodeConfig } from '../../@types/OceanNode.js' import { Readable } from 'stream' import { EncryptFileHandler } from '../../components/core/handler/encryptHandler.js' @@ -11,7 +11,6 @@ import fs from 'fs' import { OverrideEnvConfig, TEST_ENV_CONFIG_FILE, - buildEnvOverrideConfig, setupEnvironment, tearDownEnvironment } from '../utils/utils.js' @@ -23,13 +22,7 @@ describe('Encrypt File', () => { let previousConfiguration: OverrideEnvConfig[] before(async () => { - previousConfiguration = await setupEnvironment( - TEST_ENV_CONFIG_FILE, - buildEnvOverrideConfig( - [ENVIRONMENT_VARIABLES.PRIVATE_KEY], - ['0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58'] - ) - ) + previousConfiguration = await setupEnvironment(TEST_ENV_CONFIG_FILE) config = await getConfiguration(true) // Force reload the configuration const dbconn = await new Database(config.dbConfig) oceanNode = await OceanNode.getInstance(dbconn) diff --git a/src/test/integration/indexer.test.ts b/src/test/integration/indexer.test.ts index 5c8b53c21..4ffd994d9 100644 --- a/src/test/integration/indexer.test.ts +++ b/src/test/integration/indexer.test.ts @@ -1,8 +1,8 @@ import { expect, assert } from 'chai' import { createHash } from 'crypto' import { - JsonRpcProvider, Signer, + JsonRpcProvider, Contract, ethers, getAddress, @@ -62,7 +62,6 @@ import { EncryptMethod } from '../../@types/fileObject.js' describe('Indexer stores a new metadata events and orders.', () => { let database: Database let oceanNode: OceanNode - let provider: JsonRpcProvider let factoryContract: Contract let nftContract: Contract let publisherAccount: Signer @@ -81,6 +80,8 @@ describe('Indexer stores a new metadata events and orders.', () => { let reusedOrderEvent: any let initialOrderCount: number let indexer: OceanIndexer + let wallet: ethers.Wallet + let blockchain: Blockchain const feeToken = '0x312213d6f6b5FCF9F56B7B8946A6C727Bf4Bc21f' const serviceIndex = 0 // dummy index const consumeMarketFeeAddress = ZeroAddress // marketplace fee Collector @@ -93,18 +94,8 @@ describe('Indexer stores a new metadata events and orders.', () => { previousConfiguration = await setupEnvironment( null, buildEnvOverrideConfig( - [ - ENVIRONMENT_VARIABLES.RPCS, - ENVIRONMENT_VARIABLES.INDEXER_NETWORKS, - ENVIRONMENT_VARIABLES.PRIVATE_KEY, - ENVIRONMENT_VARIABLES.ADDRESS_FILE - ], - [ - JSON.stringify(mockSupportedNetworks), - JSON.stringify([8996]), - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', - `${homedir}/.ocean/ocean-contracts/artifacts/address.json` - ] + [ENVIRONMENT_VARIABLES.ADDRESS_FILE], + [`${homedir}/.ocean/ocean-contracts/artifacts/address.json`] ) ) @@ -117,10 +108,16 @@ describe('Indexer stores a new metadata events and orders.', () => { if (!artifactsAddresses) { artifactsAddresses = getOceanArtifactsAdresses().development } - - provider = new JsonRpcProvider('http://127.0.0.1:8545') - publisherAccount = (await provider.getSigner(0)) as Signer - consumerAccount = (await provider.getSigner(1)) as Signer + const rpc: string = 'http://127.0.0.1:8545' + const provider = new JsonRpcProvider(rpc) + wallet = new ethers.Wallet(process.env.ANOTHER_WALLET_PRIVATE_KEY, provider) + blockchain = new Blockchain(rpc, 'development', 8996, [ + 'http://172.0.0.3:8545', + 'http://127.0.0.1:8545' + ]) + + publisherAccount = blockchain.getSigner() as Signer + consumerAccount = wallet as Signer genericAsset = JSON.parse(JSON.stringify(genericDDO)) factoryContract = new ethers.Contract( artifactsAddresses.ERC721Factory, diff --git a/src/test/integration/operationsDashboard.test.ts b/src/test/integration/operationsDashboard.test.ts index 074644318..4f8dfd26b 100644 --- a/src/test/integration/operationsDashboard.test.ts +++ b/src/test/integration/operationsDashboard.test.ts @@ -3,7 +3,6 @@ import { Readable } from 'stream' import { Signer, JsonRpcProvider, ethers, Contract, parseUnits } from 'ethers' import { Database } from '../../components/database/index.js' import { OceanNode } from '../../OceanNode.js' -import { RPCS } from '../../@types/blockchain.js' import { downloadAsset } from '../data/assets.js' import { publishAsset } from '../utils/assets.js' import { homedir } from 'os' @@ -12,7 +11,6 @@ import { OverrideEnvConfig, TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig, - getMockSupportedNetworks, setupEnvironment, tearDownEnvironment } from '../utils/utils.js' @@ -22,7 +20,8 @@ import { PROTOCOL_COMMANDS, getConfiguration, EVENTS, - INDEXER_CRAWLING_EVENTS + INDEXER_CRAWLING_EVENTS, + Blockchain } from '../../utils/index.js' import { OceanNodeConfig } from '../../@types/OceanNode.js' import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' assert { type: 'json' } @@ -60,6 +59,7 @@ describe('Should test admin operations', () => { let publishedDataset: any let dbconn: Database let indexer: OceanIndexer + let blockchain: Blockchain const currentDate = new Date() const expiryTimestamp = new Date( currentDate.getFullYear() + 1, @@ -67,16 +67,8 @@ describe('Should test admin operations', () => { currentDate.getDate() ).getTime() const provider = new JsonRpcProvider('http://127.0.0.1:8545') - const wallet = new ethers.Wallet( - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', - provider - ) - const destinationWallet = new ethers.Wallet( - '0xef4b441145c1d0f3b4bc6d61d29f5c6e502359481152f869247c7a4244d45209', - provider - ) - - const mockSupportedNetworks: RPCS = getMockSupportedNetworks() + let wallet: Signer + let destinationWallet: Signer let previousConfiguration: OverrideEnvConfig[] @@ -86,19 +78,13 @@ describe('Should test admin operations', () => { TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig( [ - ENVIRONMENT_VARIABLES.RPCS, - ENVIRONMENT_VARIABLES.INDEXER_NETWORKS, - ENVIRONMENT_VARIABLES.PRIVATE_KEY, ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, ENVIRONMENT_VARIABLES.ALLOWED_ADMINS, ENVIRONMENT_VARIABLES.ADDRESS_FILE ], [ - JSON.stringify(mockSupportedNetworks), - JSON.stringify([8996]), - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), - JSON.stringify([await wallet.getAddress()]), + JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), `${homedir}/.ocean/ocean-contracts/artifacts/address.json` ] ) @@ -109,6 +95,17 @@ describe('Should test admin operations', () => { oceanNode = await OceanNode.getInstance(dbconn) indexer = new OceanIndexer(dbconn, config.indexingNetworks) oceanNode.addIndexer(indexer) + const rpc: string = 'http://127.0.0.1:8545' + blockchain = new Blockchain(rpc, 'development', 8996, [ + 'http://172.0.0.3:8545', + 'http://127.0.0.1:8545' + ]) + + wallet = blockchain.getSigner() + destinationWallet = new ethers.Wallet( + process.env.ANOTHER_WALLET_PRIVATE_KEY, + provider + ) as Signer }) async function getSignature(message: string) { diff --git a/src/test/integration/transactionValidation.test.ts b/src/test/integration/transactionValidation.test.ts index 104c677f8..f9f5552e7 100644 --- a/src/test/integration/transactionValidation.test.ts +++ b/src/test/integration/transactionValidation.test.ts @@ -1,5 +1,5 @@ import { expect, assert } from 'chai' -import { JsonRpcProvider, Signer } from 'ethers' +import { JsonRpcProvider, Signer, ethers } from 'ethers' import { validateOrderTransaction } from '../../components/core/utils/validateOrders.js' import { expectedTimeoutFailure, waitToIndex } from './testUtils.js' import { genericDDO } from '../data/ddo.js' @@ -10,7 +10,6 @@ import { getOceanArtifactsAdressesByChainId } from '../../utils/address.js' import { publishAsset, orderAsset, reOrderAsset } from '../utils/assets.js' -import { RPCS } from '../../@types/blockchain.js' import { OceanIndexer } from '../../components/Indexer/index.js' import { OceanNode } from '../../OceanNode.js' import { OceanNodeConfig } from '../../@types/OceanNode.js' @@ -20,11 +19,11 @@ import { OverrideEnvConfig, TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig, - getMockSupportedNetworks, setupEnvironment, tearDownEnvironment } from '../utils/utils.js' import { homedir } from 'os' +import { Blockchain } from '../../utils/blockchain.js' describe('validateOrderTransaction Function with Orders', () => { let database: Database let oceanNode: OceanNode @@ -39,27 +38,19 @@ describe('validateOrderTransaction Function with Orders', () => { let resolvedDDO: any let publishedDataset: any let indexer: OceanIndexer + let wallet: ethers.Wallet + let blockchain: Blockchain const serviceId = '0' // dummy index const timeout = 0 let config: OceanNodeConfig - const mockSupportedNetworks: RPCS = getMockSupportedNetworks() let previousConfiguration: OverrideEnvConfig[] before(async () => { previousConfiguration = await setupEnvironment( TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig( + [ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, ENVIRONMENT_VARIABLES.ADDRESS_FILE], [ - ENVIRONMENT_VARIABLES.RPCS, - ENVIRONMENT_VARIABLES.INDEXER_NETWORKS, - ENVIRONMENT_VARIABLES.PRIVATE_KEY, - ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, - ENVIRONMENT_VARIABLES.ADDRESS_FILE - ], - [ - JSON.stringify(mockSupportedNetworks), - JSON.stringify([8996]), - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), `${homedir}/.ocean/ocean-contracts/artifacts/address.json` ] @@ -76,11 +67,17 @@ describe('validateOrderTransaction Function with Orders', () => { if (!network) { network = getOceanArtifactsAdresses().development } + const rpc: string = 'http://127.0.0.1:8545' + provider = new JsonRpcProvider(rpc) + wallet = new ethers.Wallet(process.env.ANOTHER_WALLET_PRIVATE_KEY, provider) - provider = new JsonRpcProvider('http://127.0.0.1:8545') + blockchain = new Blockchain(rpc, 'development', 8996, [ + 'http://172.0.0.3:8545', + 'http://127.0.0.1:8545' + ]) - publisherAccount = (await provider.getSigner(0)) as Signer - consumerAccount = (await provider.getSigner(1)) as Signer + publisherAccount = blockchain.getSigner() as Signer + consumerAccount = wallet as Signer consumerAddress = await consumerAccount.getAddress() let artifactsAddresses = getOceanArtifactsAdressesByChainId(DEVELOPMENT_CHAIN_ID) diff --git a/src/test/unit/blockchain.test.ts b/src/test/unit/blockchain.test.ts index 978c1fe1b..bb198262a 100644 --- a/src/test/unit/blockchain.test.ts +++ b/src/test/unit/blockchain.test.ts @@ -3,14 +3,15 @@ import { OceanNodeConfig } from '../../@types/OceanNode.js' import { RPCS, SupportedNetwork } from '../../@types/blockchain.js' import { Blockchain } from '../../utils/blockchain.js' import { getConfiguration } from '../../utils/config.js' -import { ENVIRONMENT_VARIABLES } from '../../utils/constants.js' import { DEFAULT_TEST_TIMEOUT, OverrideEnvConfig, buildEnvOverrideConfig, setupEnvironment, - tearDownEnvironment + tearDownEnvironment, + TEST_ENV_CONFIG_FILE } from '../utils/utils.js' +import { ENVIRONMENT_VARIABLES } from '../../utils/constants.js' import { expectedTimeoutFailure } from '../integration/testUtils.js' import { DEVELOPMENT_CHAIN_ID, KNOWN_CONFIDENTIAL_EVMS } from '../../utils/address.js' import { isConfidentialEVM } from '../../utils/asset.js' @@ -28,7 +29,7 @@ describe('Should validate blockchain network connections', () => { '{ "8996":{ "rpc":"http://172.0.0.1:8545", "fallbackRPCs": ["http://172.0.0.3:8545","http://127.0.0.1:8545"], "chainId": 8996, "network": "development", "chunkSize": 100 }}' ] ) - envOverrides = await setupEnvironment(null, envOverrides) + envOverrides = await setupEnvironment(TEST_ENV_CONFIG_FILE, envOverrides) config = await getConfiguration(true) rpcs = config.supportedNetworks @@ -78,7 +79,6 @@ describe('Should validate blockchain network connections', () => { } expect(isConfidentialEVM(DEVELOPMENT_CHAIN_ID)).to.be.equal(false) }) - after(async () => { await tearDownEnvironment(envOverrides) }) diff --git a/src/test/unit/download.test.ts b/src/test/unit/download.test.ts index 49cfd178f..e5f5ff067 100644 --- a/src/test/unit/download.test.ts +++ b/src/test/unit/download.test.ts @@ -3,36 +3,26 @@ import { OceanNode } from '../../OceanNode.js' import { Database } from '../../components/database/index.js' import { getConfiguration } from '../../utils/config.js' import { EncryptHandler } from '../../components/core/handler/encryptHandler.js' -import { ENVIRONMENT_VARIABLES, PROTOCOL_COMMANDS } from '../../utils/constants.js' +import { PROTOCOL_COMMANDS } from '../../utils/constants.js' import { EncryptMethod } from '../../@types/fileObject.js' import { OceanNodeConfig } from '../../@types/OceanNode.js' import { Readable } from 'stream' import { streamToString } from '../../utils/util.js' -import { - OverrideEnvConfig, - buildEnvOverrideConfig, - setupEnvironment, - tearDownEnvironment -} from '../utils/utils.js' import { decrypt } from '../../utils/crypt.js' import { validateFilesStructure } from '../../components/core/handler/downloadHandler.js' import { AssetUtils, isConfidentialChainDDO } from '../../utils/asset.js' import { DDO } from '../../@types/DDO/DDO.js' import { Service } from '../../@types/DDO/Service.js' import { DEVELOPMENT_CHAIN_ID, KNOWN_CONFIDENTIAL_EVMS } from '../../utils/address.js' +import { TEST_ENV_CONFIG_FILE, setupEnvironment } from '../utils/utils.js' -let envOverrides: OverrideEnvConfig[] let config: OceanNodeConfig let db: Database let oceanNode: OceanNode describe('Should validate files structure for download', () => { before(async () => { - envOverrides = buildEnvOverrideConfig( - [ENVIRONMENT_VARIABLES.PRIVATE_KEY], - ['0x3634cc4a3d2694a1186a7ce545f149e022eea103cc254d18d08675104bb4b5ac'] - ) - envOverrides = await setupEnvironment(null, envOverrides) + await setupEnvironment(TEST_ENV_CONFIG_FILE) config = await getConfiguration(true) db = await new Database(config.dbConfig) oceanNode = OceanNode.getInstance(db) @@ -171,8 +161,4 @@ describe('Should validate files structure for download', () => { isConfidentialChainDDO(DEVELOPMENT_CHAIN_ID, otherDDOConfidential.services[0]) ).to.be.equal(false) }) - - after(async () => { - await tearDownEnvironment(envOverrides) - }) }) diff --git a/src/test/unit/indexer/validation.test.ts b/src/test/unit/indexer/validation.test.ts index dda552f0b..9756a3ffb 100644 --- a/src/test/unit/indexer/validation.test.ts +++ b/src/test/unit/indexer/validation.test.ts @@ -3,39 +3,13 @@ import { getValidationSignature, validateObject } from '../../../components/core/utils/validateDdoHandler.js' -import { ENVIRONMENT_VARIABLES } from '../../../utils/index.js' - +import { TEST_ENV_CONFIG_FILE, setupEnvironment } from '../../utils/utils.js' import { expect } from 'chai' -import { - setupEnvironment, - tearDownEnvironment, - buildEnvOverrideConfig, - OverrideEnvConfig -} from '../../utils/utils.js' -describe('Schema validation tests', async () => { - let envOverrides: OverrideEnvConfig[] - envOverrides = buildEnvOverrideConfig( - [ - ENVIRONMENT_VARIABLES.PRIVATE_KEY, - ENVIRONMENT_VARIABLES.IPFS_GATEWAY, - ENVIRONMENT_VARIABLES.ARWEAVE_GATEWAY, - ENVIRONMENT_VARIABLES.RPCS - ], - [ - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', - 'https://ipfs.io/', - 'https://arweave.net/', - '{ "1": "https://rpc.eth.gateway.fm", "137": "https://polygon.meowrpc.com" }' - ] - ) - envOverrides = await setupEnvironment(null, envOverrides) - - after(() => { - // Restore original local setup / env variables after test - tearDownEnvironment(envOverrides) +describe('Schema validation tests', () => { + before(() => { + setupEnvironment(TEST_ENV_CONFIG_FILE) }) - it('should pass the validation on version 4.1.0', async () => { const validationResult = await validateObject(DDOExample, 137, DDOExample.nftAddress) expect(validationResult[0]).to.eql(true) diff --git a/src/test/unit/ocean.test.ts b/src/test/unit/ocean.test.ts index 3da38e0be..ad696dccf 100644 --- a/src/test/unit/ocean.test.ts +++ b/src/test/unit/ocean.test.ts @@ -8,6 +8,7 @@ import { ENVIRONMENT_VARIABLES, getConfiguration } from '../../utils/index.js' import { expect } from 'chai' import { OverrideEnvConfig, + TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig, setupEnvironment, tearDownEnvironment @@ -18,22 +19,13 @@ let envOverrides: OverrideEnvConfig[] describe('Status command tests', async () => { // need to do it first envOverrides = buildEnvOverrideConfig( + [ENVIRONMENT_VARIABLES.RPCS, ENVIRONMENT_VARIABLES.INDEXER_NETWORKS], [ - ENVIRONMENT_VARIABLES.PRIVATE_KEY, - ENVIRONMENT_VARIABLES.IPFS_GATEWAY, - ENVIRONMENT_VARIABLES.ARWEAVE_GATEWAY, - ENVIRONMENT_VARIABLES.RPCS, - ENVIRONMENT_VARIABLES.INDEXER_NETWORKS - ], - [ - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', - 'https://ipfs.io/', - 'https://arweave.net/', '{ "1": "https://rpc.eth.gateway.fm", "137": "https://polygon.meowrpc.com" }', JSON.stringify([1, 137]) ] ) - envOverrides = await setupEnvironment(null, envOverrides) + envOverrides = await setupEnvironment(TEST_ENV_CONFIG_FILE, envOverrides) // because of this const config = await getConfiguration(true) const db = await new Database(config.dbConfig) diff --git a/src/test/unit/oceanP2P.test.ts b/src/test/unit/oceanP2P.test.ts index 7eff298fa..24fa77d79 100644 --- a/src/test/unit/oceanP2P.test.ts +++ b/src/test/unit/oceanP2P.test.ts @@ -2,13 +2,7 @@ import { assert } from 'chai' import { getConfiguration } from '../../utils/config.js' import { OceanP2P } from '../../components/P2P/index.js' import { delay } from '../integration/testUtils.js' -import { ENVIRONMENT_VARIABLES } from '../../utils/constants.js' -import { - TEST_ENV_CONFIG_FILE, - buildEnvOverrideConfig, - setupEnvironment, - tearDownEnvironment -} from '../utils/utils.js' +import { TEST_ENV_CONFIG_FILE, setupEnvironment } from '../utils/utils.js' describe('OceanP2P Test', () => { let node1: OceanP2P @@ -16,21 +10,8 @@ describe('OceanP2P Test', () => { let config1: any let config2: any const mDNSInterval: number = 1 - - const envOverrides = buildEnvOverrideConfig( - [ - ENVIRONMENT_VARIABLES.PRIVATE_KEY, - ENVIRONMENT_VARIABLES.NODE1_PRIVATE_KEY, - ENVIRONMENT_VARIABLES.NODE2_PRIVATE_KEY - ], - [ - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', - '0xcb345bd2b11264d523ddaf383094e2675c420a17511c3102a53817f13474a7ff', - '0x3634cc4a3d2694a1186a7ce545f149e022eea103cc254d18d08675104bb4b5ac' - ] - ) before(() => { - setupEnvironment(TEST_ENV_CONFIG_FILE, envOverrides) + setupEnvironment(TEST_ENV_CONFIG_FILE) }) it('Start instance of OceanP2P node1', async () => { @@ -98,10 +79,6 @@ describe('OceanP2P Test', () => { 'Node1 not found in node2 peer list' ) }) - - after(() => { - tearDownEnvironment(envOverrides) - }) }) describe('OceanP2P Test without DB_URL set', () => {