Resolve test
This commit is contained in:
parent
153273ea2f
commit
19d1796d26
|
@ -111,7 +111,7 @@ Example:
|
||||||
{
|
{
|
||||||
"action": "HandleSolanaTransactions",
|
"action": "HandleSolanaTransactions",
|
||||||
"target": "sns",
|
"target": "sns",
|
||||||
"mapper": "solanaTransferRedeemedMapper",
|
"mapper": "solanaTransactionFoundMapper",
|
||||||
"config": {
|
"config": {
|
||||||
"programId": "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb"
|
"programId": "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb"
|
||||||
}
|
}
|
||||||
|
|
|
@ -281,7 +281,7 @@ export enum MethodID {
|
||||||
// Method id for Portico contract
|
// Method id for Portico contract
|
||||||
MethodIDReceiveMessageAndSwap = "0x3d528f35",
|
MethodIDReceiveMessageAndSwap = "0x3d528f35",
|
||||||
// CCTP
|
// CCTP
|
||||||
MethodCCTP = "",
|
MethodCCTP = "", // TODO: find input matchers
|
||||||
}
|
}
|
||||||
|
|
||||||
const ethBase = new Map<string, Protocol>([
|
const ethBase = new Map<string, Protocol>([
|
||||||
|
|
|
@ -21,8 +21,8 @@ export const methodNameByInstructionMapper = (
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: methodId,
|
id: methodId,
|
||||||
name: selectedMethod.name,
|
name: selectedMethod?.name,
|
||||||
method: selectedMethod.method.toString(),
|
method: selectedMethod?.method?.toString(),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ const TRANSACTION_STATUS_FAILED = "failed";
|
||||||
|
|
||||||
const connection = new Connection(configuration.chains.solana.rpcs[0]);
|
const connection = new Connection(configuration.chains.solana.rpcs[0]);
|
||||||
|
|
||||||
export const solanaTransferRedeemedMapper = async (
|
export const solanaTransactionFoundMapper = async (
|
||||||
tx: solana.Transaction,
|
tx: solana.Transaction,
|
||||||
{ programId, commitment }: { programId: string; commitment?: Commitment }
|
{ programId, commitment }: { programId: string; commitment?: Commitment }
|
||||||
): Promise<TransactionFoundEvent<SolanaTransactionFound>[]> => {
|
): Promise<TransactionFoundEvent<SolanaTransactionFound>[]> => {
|
||||||
|
@ -48,7 +48,7 @@ export const solanaTransferRedeemedMapper = async (
|
||||||
|
|
||||||
const accountAddress = accountKeys[instruction.accountKeyIndexes[2]];
|
const accountAddress = accountKeys[instruction.accountKeyIndexes[2]];
|
||||||
const { message } = await getPostedMessage(connection, accountAddress, commitment);
|
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);
|
const methods = methodNameByInstructionMapper(instruction, programIdIndex);
|
||||||
|
|
||||||
results.push({
|
results.push({
|
||||||
|
|
|
@ -19,7 +19,7 @@ import { FileMetadataRepository, SnsEventRepository } from "./index";
|
||||||
import { HandleSolanaTransactions } from "../../domain/actions/solana/HandleSolanaTransactions";
|
import { HandleSolanaTransactions } from "../../domain/actions/solana/HandleSolanaTransactions";
|
||||||
import {
|
import {
|
||||||
solanaLogMessagePublishedMapper,
|
solanaLogMessagePublishedMapper,
|
||||||
solanaTransferRedeemedMapper,
|
solanaTransactionFoundMapper,
|
||||||
evmLogMessagePublishedMapper,
|
evmLogMessagePublishedMapper,
|
||||||
evmTransactionFoundMapper,
|
evmTransactionFoundMapper,
|
||||||
} from "../mappers";
|
} from "../mappers";
|
||||||
|
@ -125,7 +125,7 @@ export class StaticJobRepository implements JobRepository {
|
||||||
this.mappers.set("evmLogMessagePublishedMapper", evmLogMessagePublishedMapper);
|
this.mappers.set("evmLogMessagePublishedMapper", evmLogMessagePublishedMapper);
|
||||||
this.mappers.set("evmTransactionFoundMapper", evmTransactionFoundMapper);
|
this.mappers.set("evmTransactionFoundMapper", evmTransactionFoundMapper);
|
||||||
this.mappers.set("solanaLogMessagePublishedMapper", solanaLogMessagePublishedMapper);
|
this.mappers.set("solanaLogMessagePublishedMapper", solanaLogMessagePublishedMapper);
|
||||||
this.mappers.set("solanaTransferRedeemedMapper", solanaTransferRedeemedMapper);
|
this.mappers.set("solanaTransactionFoundMapper", solanaTransactionFoundMapper);
|
||||||
|
|
||||||
// Targets
|
// Targets
|
||||||
const snsTarget = () => this.snsRepo.asTarget();
|
const snsTarget = () => this.snsRepo.asTarget();
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import { evmLogMessagePublishedMapper } from "../../../../src/infrastructure/mappers/evm/evmLogMessagePublishedMapper";
|
||||||
import { describe, it, expect } from "@jest/globals";
|
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 address = "0x98f3c9e6e3face36baad05fe09d375ef1464288b";
|
||||||
const topic = "0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2";
|
const topic = "0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2";
|
|
@ -1,6 +1,6 @@
|
||||||
import { describe, it, expect } from "@jest/globals";
|
import { describe, it, expect } from "@jest/globals";
|
||||||
import { evmTransactionFoundMapper } from "../../../src/infrastructure/mappers/evmTransactionFoundMapper";
|
import { evmTransactionFoundMapper } from "../../../../src/infrastructure/mappers/evm/evmTransactionFoundMapper";
|
||||||
import { HandleEvmTransactions } from "../../../src/domain/actions";
|
import { HandleEvmTransactions } from "../../../../src/domain/actions";
|
||||||
|
|
||||||
const address = "0xf890982f9310df57d00f659cf4fd87e65aded8d7";
|
const address = "0xf890982f9310df57d00f659cf4fd87e65aded8d7";
|
||||||
const topic = "0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e";
|
const topic = "0xbccc00b713f54173962e7de6098f643d8ebf53d488d71f4b2a5171496d038f9e";
|
|
@ -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";
|
import { describe, it, expect } from "@jest/globals";
|
||||||
|
|
||||||
describe("methodNameByAddressMapper", () => {
|
describe("methodNameByAddressMapper", () => {
|
|
@ -1,7 +1,7 @@
|
||||||
|
import { solanaLogMessagePublishedMapper } from "../../../../src/infrastructure/mappers/solana/solanaLogMessagePublishedMapper";
|
||||||
import { expect, describe, it, jest } from "@jest/globals";
|
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 { getPostedMessage } from "@certusone/wormhole-sdk/lib/cjs/solana/wormhole";
|
||||||
|
import { solana } from "../../../../src/domain/entities";
|
||||||
|
|
||||||
jest.mock("@certusone/wormhole-sdk/lib/cjs/solana/wormhole");
|
jest.mock("@certusone/wormhole-sdk/lib/cjs/solana/wormhole");
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { expect, describe, it, jest } from "@jest/globals";
|
import { expect, describe, it, jest } from "@jest/globals";
|
||||||
import { solana } from "../../../src/domain/entities";
|
import { solana } from "../../../../src/domain/entities";
|
||||||
import { solanaTransferRedeemedMapper } from "../../../src/infrastructure/mappers";
|
import { solanaTransactionFoundMapper } from "../../../../src/infrastructure/mappers";
|
||||||
import { getPostedMessage } from "@certusone/wormhole-sdk/lib/cjs/solana/wormhole";
|
import { getPostedMessage } from "@certusone/wormhole-sdk/lib/cjs/solana/wormhole";
|
||||||
|
|
||||||
jest.mock("@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 () => {
|
it("should map a token bridge tx to a transfer-redeemed event", async () => {
|
||||||
const mockGetPostedMessage = getPostedMessage as jest.MockedFunction<typeof getPostedMessage>;
|
const mockGetPostedMessage = getPostedMessage as jest.MockedFunction<typeof getPostedMessage>;
|
||||||
mockGetPostedMessage.mockResolvedValueOnce({
|
mockGetPostedMessage.mockResolvedValueOnce({
|
||||||
|
@ -136,15 +136,18 @@ describe("solanaTransferRedeemedMapper", () => {
|
||||||
version: "legacy",
|
version: "legacy",
|
||||||
} as any as solana.Transaction;
|
} as any as solana.Transaction;
|
||||||
|
|
||||||
const events = await solanaTransferRedeemedMapper(tx, { programId });
|
const events = await solanaTransactionFoundMapper(tx, { programId });
|
||||||
|
|
||||||
expect(events).toHaveLength(1);
|
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].address).toBe(programId);
|
||||||
expect(events[0].chainId).toBe(1);
|
expect(events[0].chainId).toBe(1);
|
||||||
expect(events[0].txHash).toBe(tx.transaction.signatures[0]);
|
expect(events[0].txHash).toBe(tx.transaction.signatures[0]);
|
||||||
expect(events[0].blockHeight).toBe(BigInt(tx.slot));
|
expect(events[0].blockHeight).toBe(BigInt(tx.slot));
|
||||||
expect(events[0].blockTime).toBe(tx.blockTime);
|
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 () => {
|
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",
|
version: "legacy",
|
||||||
} as any as solana.Transaction;
|
} as any as solana.Transaction;
|
||||||
|
|
||||||
const events = await solanaTransferRedeemedMapper(tx, { programId });
|
const events = await solanaTransactionFoundMapper(tx, { programId });
|
||||||
|
|
||||||
expect(events).toHaveLength(1);
|
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].address).toBe(programId);
|
||||||
expect(events[0].chainId).toBe(1);
|
expect(events[0].chainId).toBe(1);
|
||||||
expect(events[0].txHash).toBe(tx.transaction.signatures[0]);
|
expect(events[0].txHash).toBe(tx.transaction.signatures[0]);
|
||||||
expect(events[0].blockHeight).toBe(BigInt(tx.slot));
|
expect(events[0].blockHeight).toBe(BigInt(tx.slot));
|
||||||
expect(events[0].blockTime).toBe(tx.blockTime);
|
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");
|
||||||
});
|
});
|
||||||
});
|
});
|
Loading…
Reference in New Issue