Skip to content

Commit 06a39dd

Browse files
committed
Addressed feedback & fixed test flake
1 parent e920293 commit 06a39dd

File tree

7 files changed

+33
-26
lines changed

7 files changed

+33
-26
lines changed

jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module.exports = {
33
preset: 'ts-jest',
44
testEnvironment: 'node',
55
testMatch: ['**/test/**/*.test.ts'],
6-
testTimeout: 240 * 1000,
6+
testTimeout: 60 * 1000,
77

88
coverageReporters: ['html'],
99
collectCoverageFrom: ['src/**/*.ts', '!src/test/*.ts', '!src/simulateScript/deno-sandbox/*.ts'],

src/localFunctionsTestnet.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ const handleOracleRequest = async (
144144
admin: Wallet,
145145
simulationConfigPath?: string,
146146
) => {
147-
const requestData = await buildRequestDataObject(requestEventData.data)
147+
const requestData = await buildRequestObject(requestEventData.data)
148148
const response = await simulateDONExecution(requestData, simulationConfigPath)
149149

150150
const errorHexstring = response.errorString
@@ -284,34 +284,37 @@ const encodeReport = (
284284
return encodedReport
285285
}
286286

287-
const buildRequestDataObject = async (requestData: string): Promise<FunctionsRequestParams> => {
288-
const decodedRequestData = await cbor.decodeAll(Buffer.from(requestData.slice(2), 'hex'))
287+
const buildRequestObject = async (
288+
requestDataHexString: string,
289+
): Promise<FunctionsRequestParams> => {
290+
const decodedRequestData = await cbor.decodeAll(Buffer.from(requestDataHexString.slice(2), 'hex'))
289291

290292
const requestDataObject = {} as FunctionsRequestParams
291-
293+
// The decoded request data is an array of alternating keys and values, therefore we can iterate over it in steps of 2
292294
for (let i = 0; i < decodedRequestData.length - 1; i += 2) {
293-
const elem = decodedRequestData[i]
294-
switch (elem) {
295+
const requestDataKey = decodedRequestData[i]
296+
const requestDataValue = decodedRequestData[i + 1]
297+
switch (requestDataKey) {
295298
case 'codeLocation':
296-
requestDataObject.codeLocation = decodedRequestData[i + 1]
299+
requestDataObject.codeLocation = requestDataValue
297300
break
298301
case 'secretsLocation':
299302
// Unused as secrets provided as an argument to startLocalFunctionsTestnet() are used instead
300303
break
301304
case 'language':
302-
requestDataObject.codeLanguage = decodedRequestData[i + 1]
305+
requestDataObject.codeLanguage = requestDataValue
303306
break
304307
case 'source':
305-
requestDataObject.source = decodedRequestData[i + 1]
308+
requestDataObject.source = requestDataValue
306309
break
307310
case 'secrets':
308311
// Unused as secrets provided as an argument to startLocalFunctionsTestnet() are used instead
309312
break
310313
case 'args':
311-
requestDataObject.args = decodedRequestData[i + 1]
314+
requestDataObject.args = requestDataValue
312315
break
313316
case 'bytesArgs':
314-
requestDataObject.bytesArgs = decodedRequestData[i + 1].map((bytesArg: Buffer) => {
317+
requestDataObject.bytesArgs = requestDataValue.map((bytesArg: Buffer) => {
315318
return '0x' + bytesArg.toString('hex')
316319
})
317320
break

src/simulateScript/simulateScript.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,11 @@ export const simulateScript = async ({
126126

127127
const { code, signal } = await simulationComplete
128128

129-
fs.rmSync(scriptPath)
129+
try {
130+
fs.rmSync(scriptPath)
131+
} catch {
132+
// The temp file may have already been deleted
133+
}
130134

131135
let capturedTerminalOutput: string
132136
let parsedOutput: SandboxResult = {}

test/integration/ResponseListener.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
ResponseListener,
77
simulatedDonId,
88
} from '../../src'
9-
import { setupLocalTestnet } from '../utils'
9+
import { setupLocalTestnetFixture } from '../utils'
1010

1111
import { Contract, Wallet, utils } from 'ethers'
1212

@@ -18,7 +18,7 @@ describe('Functions toolkit classes', () => {
1818
let allowlistedUser_A: Wallet
1919

2020
beforeAll(async () => {
21-
const testSetup = await setupLocalTestnet(8002)
21+
const testSetup = await setupLocalTestnetFixture(8002)
2222
linkTokenAddress = testSetup.linkTokenAddress
2323
functionsRouterAddress = testSetup.functionsRouterAddress
2424
exampleClient = testSetup.exampleConsumer
@@ -72,7 +72,7 @@ describe('Functions toolkit classes', () => {
7272
utils.formatBytes32String(simulatedDonId),
7373
)
7474

75-
const succReq = await succReqTx.wait(1)
75+
const succReq = await succReqTx.wait()
7676
const succRequestId = succReq.events[0].topics[1]
7777

7878
const succResponse = await functionsListener.listenForResponse(succRequestId)

test/integration/integration.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
simulatedSecretsKeys,
88
} from '../../src'
99
import { mockOffchainSecretsEndpoints, mockGatewayUrl } from './apiFixture'
10-
import { setupLocalTestnet } from '../utils'
10+
import { setupLocalTestnetFixture } from '../utils'
1111

1212
import { BigNumber, Contract, Wallet, utils } from 'ethers'
1313

@@ -25,7 +25,7 @@ describe('Functions toolkit classes', () => {
2525
let subFunder_A: Wallet
2626

2727
beforeAll(async () => {
28-
const testSetup = await setupLocalTestnet(8001)
28+
const testSetup = await setupLocalTestnetFixture(8001)
2929
donId = testSetup.donId
3030
linkTokenContract = testSetup.linkTokenContract
3131
linkTokenAddress = testSetup.linkTokenAddress

test/integration/localFunctionsTestnet.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
ResponseListener,
66
ReturnType,
77
} from '../../src'
8-
import { setupLocalTestnet } from '../utils'
8+
import { setupLocalTestnetFixture } from '../utils'
99

1010
import { utils } from 'ethers'
1111

@@ -22,7 +22,7 @@ describe('Local Functions Testnet', () => {
2222
let getFunds: GetFunds
2323

2424
beforeAll(async () => {
25-
const testSetup = await setupLocalTestnet(8003)
25+
const testSetup = await setupLocalTestnetFixture(8003)
2626
linkTokenAddress = testSetup.linkTokenAddress
2727
functionsRouterAddress = testSetup.functionsRouterAddress
2828
exampleClient = testSetup.exampleConsumer
@@ -77,7 +77,7 @@ describe('Local Functions Testnet', () => {
7777
utils.formatBytes32String(simulatedDonId),
7878
)
7979

80-
const req = await reqTx.wait(1)
80+
const req = await reqTx.wait()
8181
const requestId = req.events[0].topics[1]
8282
const response = await functionsListener.listenForResponse(requestId)
8383

@@ -116,7 +116,7 @@ describe('Local Functions Testnet', () => {
116116
codeLocation: 0,
117117
secretsLocation: 1,
118118
language: 0,
119-
source: 'return Functions.encodeUint256(Math.floor(Math.random() * 1_000_000_000))',
119+
source: 'return Functions.encodeUint256(Math.floor((Math.random() + 0.1) * 1_000_000_000))',
120120
encryptedSecretsReference: '0xabcd',
121121
requestSignature: [],
122122
args: ['hello', 'world'],
@@ -126,7 +126,7 @@ describe('Local Functions Testnet', () => {
126126
utils.formatBytes32String(simulatedDonId),
127127
)
128128

129-
const req = await reqTx.wait(1)
129+
const req = await reqTx.wait()
130130
const requestId = req.events[0].topics[1]
131131
const response = await functionsListener.listenForResponse(requestId)
132132

@@ -164,7 +164,7 @@ describe('Local Functions Testnet', () => {
164164
codeLocation: 0,
165165
secretsLocation: 1,
166166
language: 0,
167-
source: 'throw Error(`${Math.floor(Math.random() * 100)}`)',
167+
source: 'throw Error(`${Math.floor((Math.random() + 0.1) * 100)}`)',
168168
encryptedSecretsReference: '0xabcd',
169169
requestSignature: [],
170170
args: ['hello', 'world'],
@@ -174,7 +174,7 @@ describe('Local Functions Testnet', () => {
174174
utils.formatBytes32String(simulatedDonId),
175175
)
176176

177-
const req = await reqTx.wait(1)
177+
const req = await reqTx.wait()
178178
const requestId = req.events[0].topics[1]
179179
const response = await functionsListener.listenForResponse(requestId)
180180

test/utils/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import type { GetFunds } from '../../src'
1010
import type { Contract } from 'ethers'
1111
import type { Server } from 'ganache'
1212

13-
export const setupLocalTestnet = async (
13+
export const setupLocalTestnetFixture = async (
1414
port: number,
1515
): Promise<{
1616
donId: string

0 commit comments

Comments
 (0)