Skip to content

Commit 091b610

Browse files
committed
fix: mocks
1 parent ac2445f commit 091b610

File tree

3 files changed

+39
-26
lines changed

3 files changed

+39
-26
lines changed

packages/indexer-common/src/indexing-fees/__tests__/dips.test.ts

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
jest.mock('../../allocations/escrow-accounts')
21
import {
32
DipsManager,
43
GraphNode,
@@ -31,8 +30,6 @@ import { Sequelize } from 'sequelize'
3130
import { testNetworkSpecification } from '../../indexer-management/__tests__/util'
3231
import { BigNumber } from 'ethers'
3332
import { CollectPaymentStatus } from '@graphprotocol/dips-proto/generated/gateway'
34-
import { getEscrowSenderForSigner } from '../../allocations/escrow-accounts'
35-
import { GatewayDipsServiceMessages } from '../gateway-dips-service-client'
3633

3734
// Make global Jest variables available
3835
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -386,6 +383,7 @@ describe('DipsCollector', () => {
386383
network.tapCollector!,
387384
network.wallet,
388385
graphNode,
386+
jest.fn(),
389387
)
390388
expect(dipsCollector).toBeDefined()
391389
})
@@ -398,6 +396,7 @@ describe('DipsCollector', () => {
398396
network.tapCollector!,
399397
network.wallet,
400398
graphNode,
399+
jest.fn(),
401400
)
402401
expect(dipsCollector).toBeDefined()
403402
expect(startCollectionLoop).toHaveBeenCalled()
@@ -420,6 +419,7 @@ describe('DipsCollector', () => {
420419
network.tapCollector!,
421420
network.wallet,
422421
graphNode,
422+
jest.fn(),
423423
),
424424
).toThrow('dipperEndpoint is not set')
425425
})
@@ -481,8 +481,8 @@ describe('DipsCollector', () => {
481481
status: CollectPaymentStatus.ACCEPT,
482482
tapReceipt: Buffer.from('1234', 'hex'),
483483
})
484-
jest
485-
.spyOn(GatewayDipsServiceMessages, 'decodeTapReceipt')
484+
dipsCollector.gatewayDipsServiceMessagesCodec.decodeTapReceipt = jest
485+
.fn()
486486
.mockImplementation(() => {
487487
logger.info('MOCK Decoding TAP receipt')
488488
return {
@@ -494,7 +494,8 @@ describe('DipsCollector', () => {
494494
value: '1000',
495495
}
496496
})
497-
;(getEscrowSenderForSigner as jest.Mock).mockImplementation(() => {
497+
dipsCollector.escrowSenderGetter = jest.fn().mockImplementation(() => {
498+
logger.info('MOCK Getting escrow sender for signer')
498499
return toAddress('0x123456df40c29949a75a6693c77834c00b8a5678')
499500
})
500501

@@ -513,7 +514,7 @@ describe('DipsCollector', () => {
513514
})
514515
expect(receipt).not.toBeNull()
515516
expect(receipt?.signer_address).toBe(
516-
toAddress('0x123456df40c29949a75a6693c77834c00b8a5678'),
517+
toAddress('0xabcd56df41234949a75a6693c77834c00b8abbbb'),
517518
)
518519
expect(receipt?.value).toBe('1000')
519520
})

packages/indexer-common/src/indexing-fees/dips.ts

+25-13
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
Network,
1616
QueryFeeModels,
1717
sequentialTimerMap,
18+
SubgraphClient,
1819
SubgraphIdentifierType,
1920
TapCollector,
2021
upsertIndexingRule,
@@ -23,7 +24,7 @@ import { Op } from 'sequelize'
2324

2425
import {
2526
createGatewayDipsServiceClient,
26-
GatewayDipsServiceMessages,
27+
GatewayDipsServiceMessagesCodec,
2728
} from './gateway-dips-service-client'
2829
import {
2930
CollectPaymentStatus,
@@ -43,9 +44,13 @@ const normalizeAddressForDB = (address: string) => {
4344
return toAddress(address).toLowerCase().replace('0x', '')
4445
}
4546

47+
type GetEscrowSenderForSigner = (
48+
tapSubgraph: SubgraphClient,
49+
signer: Address,
50+
) => Promise<Address>
4651
export class DipsManager {
4752
declare gatewayDipsServiceClient: GatewayDipsServiceClientImpl
48-
53+
declare gatewayDipsServiceMessagesCodec: GatewayDipsServiceMessagesCodec
4954
constructor(
5055
private logger: Logger,
5156
private models: IndexerManagementModels,
@@ -58,6 +63,7 @@ export class DipsManager {
5863
this.gatewayDipsServiceClient = createGatewayDipsServiceClient(
5964
this.network.specification.indexerOptions.dipperEndpoint,
6065
)
66+
this.gatewayDipsServiceMessagesCodec = new GatewayDipsServiceMessagesCodec()
6167
}
6268
// Cancel an agreement associated to an allocation if it exists
6369
async tryCancelAgreement(allocationId: string) {
@@ -71,7 +77,7 @@ export class DipsManager {
7177
if (agreement) {
7278
try {
7379
const cancellation =
74-
await GatewayDipsServiceMessages.createSignedCancellationRequest(
80+
await this.gatewayDipsServiceMessagesCodec.createSignedCancellationRequest(
7581
uuidToHex(agreement.id),
7682
this.network.wallet,
7783
)
@@ -176,6 +182,7 @@ export class DipsManager {
176182

177183
export class DipsCollector {
178184
declare gatewayDipsServiceClient: GatewayDipsServiceClientImpl
185+
declare gatewayDipsServiceMessagesCodec: GatewayDipsServiceMessagesCodec
179186
constructor(
180187
private logger: Logger,
181188
private managementModels: IndexerManagementModels,
@@ -184,13 +191,15 @@ export class DipsCollector {
184191
private tapCollector: TapCollector,
185192
private wallet: Wallet,
186193
private graphNode: GraphNode,
194+
public escrowSenderGetter: GetEscrowSenderForSigner,
187195
) {
188196
if (!this.specification.indexerOptions.dipperEndpoint) {
189197
throw new Error('dipperEndpoint is not set')
190198
}
191199
this.gatewayDipsServiceClient = createGatewayDipsServiceClient(
192200
this.specification.indexerOptions.dipperEndpoint,
193201
)
202+
this.gatewayDipsServiceMessagesCodec = new GatewayDipsServiceMessagesCodec()
194203
}
195204

196205
static create(
@@ -201,6 +210,7 @@ export class DipsCollector {
201210
tapCollector: TapCollector,
202211
wallet: Wallet,
203212
graphNode: GraphNode,
213+
escrowSenderGetter?: GetEscrowSenderForSigner,
204214
) {
205215
const collector = new DipsCollector(
206216
logger,
@@ -210,6 +220,7 @@ export class DipsCollector {
210220
tapCollector,
211221
wallet,
212222
graphNode,
223+
escrowSenderGetter ?? getEscrowSenderForSigner,
213224
)
214225
collector.startCollectionLoop()
215226
return collector
@@ -260,12 +271,13 @@ export class DipsCollector {
260271
return
261272
}
262273
const entityCount = entityCounts[0]
263-
const collection = await GatewayDipsServiceMessages.createSignedCollectionRequest(
264-
uuidToHex(agreement.id),
265-
agreement.last_allocation_id,
266-
entityCount,
267-
this.wallet,
268-
)
274+
const collection =
275+
await this.gatewayDipsServiceMessagesCodec.createSignedCollectionRequest(
276+
uuidToHex(agreement.id),
277+
agreement.last_allocation_id,
278+
entityCount,
279+
this.wallet,
280+
)
269281
try {
270282
this.logger.info(`Collecting payment for agreement ${agreement.id}`)
271283
const response = await this.gatewayDipsServiceClient.CollectPayment({
@@ -277,15 +289,15 @@ export class DipsCollector {
277289
throw new Error('TapCollector not initialized')
278290
}
279291
// Store the tap receipt in the database
280-
this.logger.info(`Decoding TAP receipt for agreement`)
281-
const tapReceipt = GatewayDipsServiceMessages.decodeTapReceipt(
292+
this.logger.info('Decoding TAP receipt for agreement')
293+
const tapReceipt = this.gatewayDipsServiceMessagesCodec.decodeTapReceipt(
282294
response.tapReceipt,
283295
this.tapCollector?.tapContracts.tapVerifier.address,
284296
)
285-
// TODO: check that the signer of the TAP receipt is a signer
297+
// Check that the signer of the TAP receipt is a signer
286298
// on the corresponding escrow account for the payer (sender) of the
287299
// indexing agreement
288-
const escrowSender = await getEscrowSenderForSigner(
300+
const escrowSender = await this.escrowSenderGetter(
289301
this.tapCollector?.tapSubgraph,
290302
tapReceipt.signer_address,
291303
)

packages/indexer-common/src/indexing-fees/gateway-dips-service-client.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ export const collectPaymentsTypes = {
4343
],
4444
}
4545

46-
export class GatewayDipsServiceMessages {
47-
static createSignedCancellationRequest = async (
46+
export class GatewayDipsServiceMessagesCodec {
47+
async createSignedCancellationRequest(
4848
agreementId: string,
4949
wallet: Wallet,
50-
): Promise<Uint8Array> => {
50+
): Promise<Uint8Array> {
5151
const signature = await wallet._signTypedData(
5252
cancelAgreementDomain,
5353
cancelAgreementTypes,
@@ -58,12 +58,12 @@ export class GatewayDipsServiceMessages {
5858
)
5959
}
6060

61-
static createSignedCollectionRequest = async (
61+
async createSignedCollectionRequest(
6262
agreementId: string,
6363
allocationId: string,
6464
entityCount: number,
6565
wallet: Wallet,
66-
): Promise<Uint8Array> => {
66+
): Promise<Uint8Array> {
6767
const signature = await wallet._signTypedData(
6868
collectPaymentsDomain,
6969
collectPaymentsTypes,
@@ -81,7 +81,7 @@ export class GatewayDipsServiceMessages {
8181
)
8282
}
8383

84-
static decodeTapReceipt = (receipt: Uint8Array, verifyingContract: string) => {
84+
decodeTapReceipt(receipt: Uint8Array, verifyingContract: string) {
8585
const [message, signature] = defaultAbiCoder.decode(
8686
['tuple(address,uint64,uint64,uint128)', 'bytes'],
8787
receipt,

0 commit comments

Comments
 (0)