Skip to content

Commit c436e87

Browse files
committed
*: Update and fix tests
1 parent 8ca85b5 commit c436e87

File tree

9 files changed

+170
-30
lines changed

9 files changed

+170
-30
lines changed

packages/indexer-agent/jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module.exports = {
66
collectCoverage: true,
77
preset: 'ts-jest',
88
testEnvironment: 'node',
9-
testPathIgnorePatterns: ['/node_modules/', '/dist/'],
9+
testPathIgnorePatterns: ['/node_modules/', '/dist/', '.yalc'],
1010
globals: {
1111
__DATABASE__: {
1212
host: process.env.POSTGRES_TEST_HOST || bail('POSTGRES_TEST_HOST is not defined'),

packages/indexer-agent/src/__tests__/indexer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
POIDisputeAttributes,
1818
} from '@graphprotocol/indexer-common'
1919
import { BigNumber, Wallet } from 'ethers'
20-
import { Sequelize } from 'sequelize/types'
20+
import { Sequelize } from 'sequelize'
2121
import { Indexer } from '../indexer'
2222

2323
const TEST_DISPUTE_1: POIDisputeAttributes = {

packages/indexer-cli/jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ module.exports = {
22
collectCoverage: true,
33
preset: 'ts-jest',
44
testEnvironment: 'node',
5-
testPathIgnorePatterns: ['/node_modules/', '/dist/']
5+
testPathIgnorePatterns: ['/node_modules/', '/dist/', '.yalc']
66
}

packages/indexer-common/jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module.exports = {
66
collectCoverage: true,
77
preset: 'ts-jest',
88
testEnvironment: 'node',
9-
testPathIgnorePatterns: ['/node_modules/', '/dist/'],
9+
testPathIgnorePatterns: ['/node_modules/', '/dist/', '/.yalc'],
1010
globals: {
1111
__DATABASE__: {
1212
host: process.env.POSTGRES_TEST_HOST || bail('POSTGRES_TEST_HOST is not defined'),

packages/indexer-common/src/indexer-management/__tests__/indexing-rules.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Sequelize } from 'sequelize/types'
1+
import { Sequelize } from 'sequelize'
22
import gql from 'graphql-tag'
33
import { ethers } from 'ethers'
44
import {
@@ -30,7 +30,6 @@ declare const __DATABASE__: any
3030
const SET_INDEXING_RULE_MUTATION = gql`
3131
mutation setIndexingRule($rule: IndexingRuleInput!) {
3232
setIndexingRule(rule: $rule) {
33-
id
3433
deployment
3534
allocationAmount
3635
parallelAllocations
@@ -60,7 +59,6 @@ const DELETE_INDEXING_RULES_MUTATION = gql`
6059
const INDEXING_RULE_QUERY = gql`
6160
query indexingRule($deployment: String!, $merged: Boolean!) {
6261
indexingRule(deployment: $deployment, merged: $merged) {
63-
id
6462
deployment
6563
allocationAmount
6664
parallelAllocations
@@ -78,7 +76,6 @@ const INDEXING_RULE_QUERY = gql`
7876
const INDEXING_RULES_QUERY = gql`
7977
query indexingRuls($merged: Boolean!) {
8078
indexingRules(merged: $merged) {
81-
id
8279
deployment
8380
allocationAmount
8481
parallelAllocations

packages/indexer-common/src/indexer-management/__tests__/poi-disputes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Sequelize } from 'sequelize/types'
1+
import { Sequelize } from 'sequelize'
22
import gql from 'graphql-tag'
33
import { ethers } from 'ethers'
44
import {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
collectCoverage: true,
3+
preset: 'ts-jest',
4+
testEnvironment: 'node',
5+
testPathIgnorePatterns: ['/node_modules/', '/dist/', '.yalc']
6+
}
Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,28 @@
1+
const bail = (s) => {
2+
throw new Error(s)
3+
}
4+
15
module.exports = {
26
collectCoverage: true,
37
preset: 'ts-jest',
48
testEnvironment: 'node',
5-
testPathIgnorePatterns: ['/node_modules/', '/dist/']
9+
testPathIgnorePatterns: ['/node_modules/', '/dist/', '.yalc'],
10+
globals: {
11+
"ts-jest": {
12+
isolatedModules: true,
13+
},
14+
__DATABASE__: {
15+
host: process.env.POSTGRES_TEST_HOST || bail('POSTGRES_TEST_HOST is not defined'),
16+
port: parseInt(process.env.POSTGRES_TEST_PORT || '5432'),
17+
username:
18+
process.env.POSTGRES_TEST_USERNAME ||
19+
bail('POSTGRES_TEST_USERNAME is not defined'),
20+
password:
21+
process.env.POSTGRES_TEST_PASSWORD ||
22+
bail('POSTGRES_TEST_PASSWORD is not defined'),
23+
database:
24+
process.env.POSTGRES_TEST_DATABASE ||
25+
bail('POSTGRES_TEST_DATABASE is not defined'),
26+
},
27+
},
628
}

packages/indexer-service/src/server/__tests__/server.test.ts

Lines changed: 135 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,155 @@
22
* Assumes a graph-node is running
33
*/
44

5-
import * as supertest from 'supertest'
6-
import * as express from 'express'
7-
import { constants } from 'ethers'
5+
import supertest from 'supertest'
6+
import express from 'express'
7+
import { BigNumber, ethers, Wallet } from 'ethers'
88

9-
import { createLogger, createMetrics } from '@graphprotocol/common-ts'
9+
import {
10+
connectContracts,
11+
connectDatabase,
12+
createLogger,
13+
createMetrics,
14+
NetworkContracts,
15+
toAddress,
16+
} from '@graphprotocol/common-ts'
1017

11-
import { createApp } from '..'
18+
import { createServer } from '..'
1219
import { QueryProcessor } from '../../queries'
20+
import { ensureAttestationSigners, monitorEligibleAllocations } from '../../allocations'
21+
import { AllocationReceiptManager } from '../../query-fees'
22+
import {
23+
createIndexerManagementClient,
24+
defineIndexerManagementModels,
25+
defineQueryFeeModels,
26+
IndexerManagementClient,
27+
IndexerManagementModels,
28+
IndexingStatusResolver,
29+
NetworkSubgraph,
30+
QueryFeeModels,
31+
} from '@graphprotocol/indexer-common'
32+
import { Sequelize } from 'sequelize'
1333

14-
describe('Server', () => {
15-
let app: express.Express
34+
// Make global Jest variable available
35+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
36+
declare const __DATABASE__: any
37+
38+
let app: express.Express
39+
let sequelize: Sequelize
40+
let models: IndexerManagementModels
41+
let queryFeeModels: QueryFeeModels
42+
let address: string
43+
let contracts: NetworkContracts
44+
let indexingStatusResolver: IndexingStatusResolver
45+
let networkSubgraph: NetworkSubgraph
46+
let client: IndexerManagementClient
47+
let receiptManager: AllocationReceiptManager
1648

49+
describe('Server', () => {
1750
beforeAll(async () => {
18-
const logger = createLogger({ name: 'server.test.ts' })
51+
const logger = createLogger({ name: 'server.test.ts', level: 'trace' })
1952
const metrics = createMetrics()
2053

21-
app = await createApp({
54+
sequelize = await connectDatabase(__DATABASE__)
55+
56+
queryFeeModels = defineQueryFeeModels(sequelize)
57+
models = defineIndexerManagementModels(sequelize)
58+
address = '0x90f8bf6a479f320ead074411a4b0e7944ea8c9c1'
59+
contracts = await connectContracts(ethers.getDefaultProvider('rinkeby'), 4)
60+
await sequelize.sync({ force: true })
61+
indexingStatusResolver = new IndexingStatusResolver({
62+
logger: logger,
63+
statusEndpoint: 'http://localhost:8030/graphql',
64+
})
65+
networkSubgraph = await NetworkSubgraph.create({
66+
logger,
67+
endpoint: 'https://gateway.testnet.thegraph.com/network',
68+
deployment: undefined,
69+
})
70+
71+
client = await createIndexerManagementClient({
72+
models,
73+
address,
74+
contracts,
75+
indexingStatusResolver,
76+
networkSubgraph,
77+
logger,
78+
defaults: {
79+
// This is just a dummy, since we're never writing to the management
80+
// client from the indexer service.
81+
globalIndexingRule: {
82+
allocationAmount: BigNumber.from('0'),
83+
},
84+
},
85+
features: {
86+
injectDai: true,
87+
},
88+
})
89+
90+
receiptManager = new AllocationReceiptManager(
91+
sequelize,
92+
queryFeeModels,
93+
logger,
94+
toAddress(address), //update maybe
95+
)
96+
97+
const release = {
98+
version: '0.0.1',
99+
dependencies: {
100+
'@graphprotocol/common-ts': '1.8.0',
101+
},
102+
}
103+
104+
// Monitor indexer allocations that we may receive traffic for
105+
const allocations = monitorEligibleAllocations({
106+
indexer: toAddress(address),
107+
logger,
108+
networkSubgraph,
109+
interval: 120_000,
110+
})
111+
const wallet = Wallet.fromMnemonic(
112+
'myth like bonus scare over problem client lizard pioneer submit female collect',
113+
)
114+
115+
// Ensure there is an attestation signer for every allocation
116+
const signers = ensureAttestationSigners({
117+
logger,
118+
allocations,
119+
wallet,
120+
chainId: 4,
121+
disputeManagerAddress: contracts.disputeManager.address,
122+
})
123+
124+
const queryProcessor = new QueryProcessor({
125+
logger: logger.child({ component: 'QueryProcessor' }),
126+
graphNode: 'http://localhost:8000/',
127+
metrics,
128+
receiptManager,
129+
signers,
130+
})
131+
132+
app = await createServer({
22133
logger,
23134
port: 9600,
24-
queryProcessor: new QueryProcessor({
25-
logger: logger.child({ component: 'QueryProcessor' }),
26-
graphNode: 'http://localhost:9000/',
27-
metrics,
28-
receiptManager,
29-
chainId: 1,
30-
disputeManagerAddress: constants.AddressZero,
31-
}),
32-
graphNodeStatusEndpoint: 'http://localhost:9030/graphql',
135+
queryProcessor,
136+
graphNodeStatusEndpoint: 'http://localhost:8030/graphql',
33137
metrics,
34138
freeQueryAuthToken: '',
139+
indexerManagementClient: client,
140+
release,
141+
operatorPublicKey: wallet.publicKey,
142+
networkSubgraph,
143+
networkSubgraphAuthToken: 'superdupersecrettoken',
144+
serveNetworkSubgraph: false,
35145
})
36146
})
37147

38-
it('is ready to roll', async () => {
39-
await supertest(app).get('/').expect(200)
148+
afterAll(async () => {
149+
await sequelize.drop({})
150+
})
151+
152+
it('is ready to roll', done => {
153+
supertest(app).get('/').expect(200, done)
154+
//expect(response.body.message).toBe('ready to roll!')
40155
})
41156
})

0 commit comments

Comments
 (0)