Skip to content

Commit

Permalink
tests: introduce a configurable JSON RPC provider for tests
Browse files Browse the repository at this point in the history
  • Loading branch information
tilacog committed Mar 22, 2023
1 parent 1c0004f commit 3b48b06
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 8 deletions.
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,4 @@ jobs:
POSTGRES_TEST_USERNAME: testuser
POSTGRES_TEST_PASSWORD: testpass
NODE_OPTIONS: '--dns-result-order=ipv4first'
INDEXER_TEST_JRPC_PROVIDER_URL: ${{ secrets.TESTS_RPC_PROVIDER }}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
resolveChainAlias,
resolveChainId,
SubgraphDeployment,
getTestProvider,
} from '@graphprotocol/indexer-common'
import { BigNumber, ethers, utils } from 'ethers'

Expand Down Expand Up @@ -66,7 +67,7 @@ const setupMonitor = async () => {
async: false,
level: __LOG_LEVEL__ ?? 'error',
})
ethereum = ethers.getDefaultProvider('goerli')
ethereum = getTestProvider('goerli')
contracts = await connectContracts(ethereum, 5)
networkSubgraph = await NetworkSubgraph.create({
logger,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import {
resolveChainId,
AllocationManager,
SubgraphManager,
getTestProvider,
} from '@graphprotocol/indexer-common'
import { CombinedError } from '@urql/core'
import { GraphQLError } from 'graphql'
Expand Down Expand Up @@ -283,7 +284,7 @@ const setup = async () => {
queryFeeModels = defineQueryFeeModels(sequelize)
managementModels = defineIndexerManagementModels(sequelize)
sequelize = await sequelize.sync({ force: true })
ethereum = ethers.getDefaultProvider('goerli')
ethereum = getTestProvider('goerli')
wallet = Wallet.createRandom()
contracts = await connectContracts(ethereum, 5)
logger = createLogger({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ import {
import { defineIndexerManagementModels, IndexerManagementModels } from '../../models'
import { CombinedError } from '@urql/core'
import { GraphQLError } from 'graphql'
import { IndexingStatusResolver, NetworkSubgraph } from '@graphprotocol/indexer-common'
import {
IndexingStatusResolver,
NetworkSubgraph,
getTestProvider,
} from '@graphprotocol/indexer-common'

// Make global Jest variable available
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down Expand Up @@ -98,7 +102,7 @@ const setupAll = async () => {
sequelize = await connectDatabase(__DATABASE__)
models = defineIndexerManagementModels(sequelize)
address = '0xtest'
contracts = await connectContracts(ethers.getDefaultProvider('goerli'), 5)
contracts = await connectContracts(getTestProvider('goerli'), 5)
sequelize = await sequelize.sync({ force: true })
logger = createLogger({
name: 'Indexer API Client',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import {
IndexingStatusResolver,
NetworkSubgraph,
SubgraphIdentifierType,
getTestProvider,
} from '@graphprotocol/indexer-common'

// Make global Jest variable available
Expand Down Expand Up @@ -134,7 +135,7 @@ const setupAll = async () => {
sequelize = await connectDatabase(__DATABASE__)
models = defineIndexerManagementModels(sequelize)
address = '0xtest'
contracts = await connectContracts(ethers.getDefaultProvider('goerli'), 5)
contracts = await connectContracts(getTestProvider('goerli'), 5)
await sequelize.sync({ force: true })
logger = createLogger({
name: 'Indexer API Client',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@ import {
IndexerManagementModels,
POIDisputeAttributes,
} from '../../models'
import { IndexingStatusResolver, NetworkSubgraph } from '@graphprotocol/indexer-common'
import {
IndexingStatusResolver,
NetworkSubgraph,
getTestProvider,
} from '@graphprotocol/indexer-common'

// Make global Jest variable available
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down Expand Up @@ -192,7 +196,7 @@ const setupAll = async () => {
sequelize = await connectDatabase(__DATABASE__)
models = defineIndexerManagementModels(sequelize)
address = '0xtest'
contracts = await connectContracts(ethers.getDefaultProvider('goerli'), 5)
contracts = await connectContracts(getTestProvider('goerli'), 5)
await sequelize.sync({ force: true })
logger = createLogger({
name: 'POI dispute tests',
Expand Down
15 changes: 15 additions & 0 deletions packages/indexer-common/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
import {
BaseProvider,
JsonRpcProvider,
getDefaultProvider,
} from '@ethersproject/providers'

export const parseBoolean = (
val: string | boolean | number | undefined | null,
): boolean => {
Expand All @@ -8,3 +14,12 @@ export const parseBoolean = (
export function nullPassThrough<T, U>(fn: (x: T) => U): (x: T | null) => U | null {
return (x: T | null) => (x === null ? null : fn(x))
}

export function getTestProvider(network: string): BaseProvider {
const testJsonRpcProviderUrl = process.env.INDEXER_TEST_JRPC_PROVIDER_URL
if (testJsonRpcProviderUrl) {
return new JsonRpcProvider(testJsonRpcProviderUrl)
} else {
return getDefaultProvider(network)
}
}
3 changes: 2 additions & 1 deletion packages/indexer-service/src/server/__tests__/server.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import {
IndexingStatusResolver,
NetworkSubgraph,
QueryFeeModels,
getTestProvider,
} from '@graphprotocol/indexer-common'

// Make global Jest variable available
Expand Down Expand Up @@ -60,7 +61,7 @@ const setup = async () => {
queryFeeModels = defineQueryFeeModels(sequelize)
models = defineIndexerManagementModels(sequelize)
address = '0x90f8bf6a479f320ead074411a4b0e7944ea8c9c1'
contracts = await connectContracts(ethers.getDefaultProvider('goerli'), 5)
contracts = await connectContracts(getTestProvider('goerli'), 5)
await sequelize.sync({ force: true })
const statusEndpoint = 'http://localhost:8030/graphql'
indexingStatusResolver = new IndexingStatusResolver({
Expand Down

0 comments on commit 3b48b06

Please sign in to comment.