From 19d1796d26ff47c3a520de702895b5238e6b4205 Mon Sep 17 00:00:00 2001 From: julian merlo Date: Sat, 6 Jan 2024 20:35:07 -0300 Subject: [PATCH] Resolve test --- blockchain-watcher/README.md | 2 +- .../mappers/evm/methodNameByAddressMapper.ts | 2 +- .../solana/methodNameByInstructionMapper.ts | 4 ++-- .../solana/solanaTransactionFoundMapper.ts | 4 ++-- .../repositories/StaticJobRepository.ts | 4 ++-- .../{ => evm}/evmLogMessagePublished.test.ts | 4 ++-- .../evmTransactionFoundMapper.test.ts | 4 ++-- .../evm}/methodNameByAddressMapper.test.ts | 3 ++- .../solanaLogMessagePublishedMapper.test.ts | 4 ++-- .../solanaTransactionFoundMapper.test.ts} | 20 ++++++++++++------- 10 files changed, 29 insertions(+), 22 deletions(-) rename blockchain-watcher/test/infrastructure/mappers/{ => evm}/evmLogMessagePublished.test.ts (92%) rename blockchain-watcher/test/infrastructure/mappers/{ => evm}/evmTransactionFoundMapper.test.ts (93%) rename blockchain-watcher/test/{domain/actions/evm/mappers => infrastructure/mappers/evm}/methodNameByAddressMapper.test.ts (96%) rename blockchain-watcher/test/infrastructure/mappers/{ => solana}/solanaLogMessagePublishedMapper.test.ts (97%) rename blockchain-watcher/test/infrastructure/mappers/{solanaTransferRedeemedMapper.test.ts => solana/solanaTransactionFoundMapper.test.ts} (94%) diff --git a/blockchain-watcher/README.md b/blockchain-watcher/README.md index 7bd67fcc..f88af2db 100644 --- a/blockchain-watcher/README.md +++ b/blockchain-watcher/README.md @@ -111,7 +111,7 @@ Example: { "action": "HandleSolanaTransactions", "target": "sns", - "mapper": "solanaTransferRedeemedMapper", + "mapper": "solanaTransactionFoundMapper", "config": { "programId": "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb" } diff --git a/blockchain-watcher/src/infrastructure/mappers/evm/methodNameByAddressMapper.ts b/blockchain-watcher/src/infrastructure/mappers/evm/methodNameByAddressMapper.ts index 97385cc7..2aaeff4d 100644 --- a/blockchain-watcher/src/infrastructure/mappers/evm/methodNameByAddressMapper.ts +++ b/blockchain-watcher/src/infrastructure/mappers/evm/methodNameByAddressMapper.ts @@ -281,7 +281,7 @@ export enum MethodID { // Method id for Portico contract MethodIDReceiveMessageAndSwap = "0x3d528f35", // CCTP - MethodCCTP = "", + MethodCCTP = "", // TODO: find input matchers } const ethBase = new Map([ diff --git a/blockchain-watcher/src/infrastructure/mappers/solana/methodNameByInstructionMapper.ts b/blockchain-watcher/src/infrastructure/mappers/solana/methodNameByInstructionMapper.ts index 51f153b4..a96b96e3 100644 --- a/blockchain-watcher/src/infrastructure/mappers/solana/methodNameByInstructionMapper.ts +++ b/blockchain-watcher/src/infrastructure/mappers/solana/methodNameByInstructionMapper.ts @@ -21,8 +21,8 @@ export const methodNameByInstructionMapper = ( return { id: methodId, - name: selectedMethod.name, - method: selectedMethod.method.toString(), + name: selectedMethod?.name, + method: selectedMethod?.method?.toString(), }; }; diff --git a/blockchain-watcher/src/infrastructure/mappers/solana/solanaTransactionFoundMapper.ts b/blockchain-watcher/src/infrastructure/mappers/solana/solanaTransactionFoundMapper.ts index 1ddde30c..413fb407 100644 --- a/blockchain-watcher/src/infrastructure/mappers/solana/solanaTransactionFoundMapper.ts +++ b/blockchain-watcher/src/infrastructure/mappers/solana/solanaTransactionFoundMapper.ts @@ -18,7 +18,7 @@ const TRANSACTION_STATUS_FAILED = "failed"; const connection = new Connection(configuration.chains.solana.rpcs[0]); -export const solanaTransferRedeemedMapper = async ( +export const solanaTransactionFoundMapper = async ( tx: solana.Transaction, { programId, commitment }: { programId: string; commitment?: Commitment } ): Promise[]> => { @@ -48,7 +48,7 @@ export const solanaTransferRedeemedMapper = async ( const accountAddress = accountKeys[instruction.accountKeyIndexes[2]]; const { message } = await getPostedMessage(connection, accountAddress, commitment); - const { sequence, emitterAddress, emitterChain } = message || {}; // TODO: This values + const { sequence, emitterAddress, emitterChain } = message || {}; // TODO: Validate this values const methods = methodNameByInstructionMapper(instruction, programIdIndex); results.push({ diff --git a/blockchain-watcher/src/infrastructure/repositories/StaticJobRepository.ts b/blockchain-watcher/src/infrastructure/repositories/StaticJobRepository.ts index aa288607..254a95e6 100644 --- a/blockchain-watcher/src/infrastructure/repositories/StaticJobRepository.ts +++ b/blockchain-watcher/src/infrastructure/repositories/StaticJobRepository.ts @@ -19,7 +19,7 @@ import { FileMetadataRepository, SnsEventRepository } from "./index"; import { HandleSolanaTransactions } from "../../domain/actions/solana/HandleSolanaTransactions"; import { solanaLogMessagePublishedMapper, - solanaTransferRedeemedMapper, + solanaTransactionFoundMapper, evmLogMessagePublishedMapper, evmTransactionFoundMapper, } from "../mappers"; @@ -125,7 +125,7 @@ export class StaticJobRepository implements JobRepository { this.mappers.set("evmLogMessagePublishedMapper", evmLogMessagePublishedMapper); this.mappers.set("evmTransactionFoundMapper", evmTransactionFoundMapper); this.mappers.set("solanaLogMessagePublishedMapper", solanaLogMessagePublishedMapper); - this.mappers.set("solanaTransferRedeemedMapper", solanaTransferRedeemedMapper); + this.mappers.set("solanaTransactionFoundMapper", solanaTransactionFoundMapper); // Targets const snsTarget = () => this.snsRepo.asTarget(); diff --git a/blockchain-watcher/test/infrastructure/mappers/evmLogMessagePublished.test.ts b/blockchain-watcher/test/infrastructure/mappers/evm/evmLogMessagePublished.test.ts similarity index 92% rename from blockchain-watcher/test/infrastructure/mappers/evmLogMessagePublished.test.ts rename to blockchain-watcher/test/infrastructure/mappers/evm/evmLogMessagePublished.test.ts index 772c41c9..c58e3ca6 100644 --- a/blockchain-watcher/test/infrastructure/mappers/evmLogMessagePublished.test.ts +++ b/blockchain-watcher/test/infrastructure/mappers/evm/evmLogMessagePublished.test.ts @@ -1,6 +1,6 @@ +import { evmLogMessagePublishedMapper } from "../../../../src/infrastructure/mappers/evm/evmLogMessagePublishedMapper"; import { describe, it, expect } from "@jest/globals"; -import { evmLogMessagePublishedMapper } from "../../../src/infrastructure/mappers/evmLogMessagePublishedMapper"; -import { HandleEvmLogs } from "../../../src/domain/actions"; +import { HandleEvmLogs } from "../../../../src/domain/actions"; const address = "0x98f3c9e6e3face36baad05fe09d375ef1464288b"; const topic = "0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2"; diff --git a/blockchain-watcher/test/infrastructure/mappers/evmTransactionFoundMapper.test.ts b/blockchain-watcher/test/infrastructure/mappers/evm/evmTransactionFoundMapper.test.ts similarity index 93% rename from blockchain-watcher/test/infrastructure/mappers/evmTransactionFoundMapper.test.ts rename to blockchain-watcher/test/infrastructure/mappers/evm/evmTransactionFoundMapper.test.ts index 99685ebf..4acf430a 100644 --- a/blockchain-watcher/test/infrastructure/mappers/evmTransactionFoundMapper.test.ts +++ b/blockchain-watcher/test/infrastructure/mappers/evm/evmTransactionFoundMapper.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from "@jest/globals"; -import { evmTransactionFoundMapper } from "../../../src/infrastructure/mappers/evmTransactionFoundMapper"; -import { HandleEvmTransactions } from "../../../src/domain/actions"; +import { evmTransactionFoundMapper } from "../../../../src/infrastructure/mappers/evm/evmTransactionFoundMapper"; +import { HandleEvmTransactions } from "../../../../src/domain/actions"; const address = "0xf890982f9310df57d00f659cf4fd87e65aded8d7"; const topic = "0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e"; diff --git a/blockchain-watcher/test/domain/actions/evm/mappers/methodNameByAddressMapper.test.ts b/blockchain-watcher/test/infrastructure/mappers/evm/methodNameByAddressMapper.test.ts similarity index 96% rename from blockchain-watcher/test/domain/actions/evm/mappers/methodNameByAddressMapper.test.ts rename to blockchain-watcher/test/infrastructure/mappers/evm/methodNameByAddressMapper.test.ts index 8a592a67..b9140323 100644 --- a/blockchain-watcher/test/domain/actions/evm/mappers/methodNameByAddressMapper.test.ts +++ b/blockchain-watcher/test/infrastructure/mappers/evm/methodNameByAddressMapper.test.ts @@ -1,4 +1,5 @@ -import { methodNameByAddressMapper } from "../../../../../src/domain/actions/evm/mappers/methodNameByAddressMapper"; + +import { methodNameByAddressMapper } from "../../../../src/infrastructure/mappers/evm/methodNameByAddressMapper"; import { describe, it, expect } from "@jest/globals"; describe("methodNameByAddressMapper", () => { diff --git a/blockchain-watcher/test/infrastructure/mappers/solanaLogMessagePublishedMapper.test.ts b/blockchain-watcher/test/infrastructure/mappers/solana/solanaLogMessagePublishedMapper.test.ts similarity index 97% rename from blockchain-watcher/test/infrastructure/mappers/solanaLogMessagePublishedMapper.test.ts rename to blockchain-watcher/test/infrastructure/mappers/solana/solanaLogMessagePublishedMapper.test.ts index 8630d5e8..3f75d12f 100644 --- a/blockchain-watcher/test/infrastructure/mappers/solanaLogMessagePublishedMapper.test.ts +++ b/blockchain-watcher/test/infrastructure/mappers/solana/solanaLogMessagePublishedMapper.test.ts @@ -1,7 +1,7 @@ +import { solanaLogMessagePublishedMapper } from "../../../../src/infrastructure/mappers/solana/solanaLogMessagePublishedMapper"; import { expect, describe, it, jest } from "@jest/globals"; -import { solana } from "../../../src/domain/entities"; -import { solanaLogMessagePublishedMapper } from "../../../src/infrastructure/mappers/solanaLogMessagePublishedMapper"; import { getPostedMessage } from "@certusone/wormhole-sdk/lib/cjs/solana/wormhole"; +import { solana } from "../../../../src/domain/entities"; jest.mock("@certusone/wormhole-sdk/lib/cjs/solana/wormhole"); diff --git a/blockchain-watcher/test/infrastructure/mappers/solanaTransferRedeemedMapper.test.ts b/blockchain-watcher/test/infrastructure/mappers/solana/solanaTransactionFoundMapper.test.ts similarity index 94% rename from blockchain-watcher/test/infrastructure/mappers/solanaTransferRedeemedMapper.test.ts rename to blockchain-watcher/test/infrastructure/mappers/solana/solanaTransactionFoundMapper.test.ts index c4983fcd..bbc9e14e 100644 --- a/blockchain-watcher/test/infrastructure/mappers/solanaTransferRedeemedMapper.test.ts +++ b/blockchain-watcher/test/infrastructure/mappers/solana/solanaTransactionFoundMapper.test.ts @@ -1,11 +1,11 @@ import { expect, describe, it, jest } from "@jest/globals"; -import { solana } from "../../../src/domain/entities"; -import { solanaTransferRedeemedMapper } from "../../../src/infrastructure/mappers"; +import { solana } from "../../../../src/domain/entities"; +import { solanaTransactionFoundMapper } from "../../../../src/infrastructure/mappers"; import { getPostedMessage } from "@certusone/wormhole-sdk/lib/cjs/solana/wormhole"; jest.mock("@certusone/wormhole-sdk/lib/cjs/solana/wormhole"); -describe("solanaTransferRedeemedMapper", () => { +describe("solanaTransactionFoundMapper", () => { it("should map a token bridge tx to a transfer-redeemed event", async () => { const mockGetPostedMessage = getPostedMessage as jest.MockedFunction; mockGetPostedMessage.mockResolvedValueOnce({ @@ -136,15 +136,18 @@ describe("solanaTransferRedeemedMapper", () => { version: "legacy", } as any as solana.Transaction; - const events = await solanaTransferRedeemedMapper(tx, { programId }); + const events = await solanaTransactionFoundMapper(tx, { programId }); expect(events).toHaveLength(1); - expect(events[0].name).toBe("transfer-redeemed"); + expect(events[0].name).toBe("solana-transaction-found"); expect(events[0].address).toBe(programId); expect(events[0].chainId).toBe(1); expect(events[0].txHash).toBe(tx.transaction.signatures[0]); expect(events[0].blockHeight).toBe(BigInt(tx.slot)); expect(events[0].blockTime).toBe(tx.blockTime); + expect(events[0].attributes.name).toBe("transfer-redeemed"); + expect(events[0].attributes.method).toBe("0"); + expect(events[0].attributes.status).toBe("completed"); }); it("should map a tx involving token bridge relayer (aka connect) to a transfer-redeemed event", async () => { @@ -343,14 +346,17 @@ describe("solanaTransferRedeemedMapper", () => { version: "legacy", } as any as solana.Transaction; - const events = await solanaTransferRedeemedMapper(tx, { programId }); + const events = await solanaTransactionFoundMapper(tx, { programId }); expect(events).toHaveLength(1); - expect(events[0].name).toBe("transfer-redeemed"); + expect(events[0].name).toBe("solana-transaction-found"); expect(events[0].address).toBe(programId); expect(events[0].chainId).toBe(1); expect(events[0].txHash).toBe(tx.transaction.signatures[0]); expect(events[0].blockHeight).toBe(BigInt(tx.slot)); expect(events[0].blockTime).toBe(tx.blockTime); + expect(events[0].attributes.name).toBe(undefined); + expect(events[0].attributes.method).toBe(undefined); + expect(events[0].attributes.status).toBe("completed"); }); });