wormhole-explorer/blockchain-watcher/test/infrastructure/mappers/evm/evmLogMessagePublished.test.ts

64 lines
2.8 KiB
TypeScript
Raw Normal View History

import { describe, it, expect } from "@jest/globals";
import { evmLogMessagePublishedMapper } from "../../../../src/infrastructure/mappers/evm/evmLogMessagePublishedMapper";
import { HandleEvmLogs } from "../../../../src/domain/actions";
const address = "0x98f3c9e6e3face36baad05fe09d375ef1464288b";
const topic = "0x6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2";
const txHash = "0xcbdefc83080a8f60cbde7785eb2978548fd5c1f7d0ea2c024cce537845d339c7";
let statsRepo = {
count: () => {},
measure: () => {},
report: () => Promise.resolve(""),
};
const handler = new HandleEvmLogs(
{
filter: { addresses: [address], topics: [topic] },
abi: "event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)",
metricName: "process_source_ethereum_event",
commitment: "latest",
chainId: 2,
chain: "ethereum",
id: "poll-log-message-published-ethereum",
},
evmLogMessagePublishedMapper,
async () => {},
statsRepo
);
describe("evmLogMessagePublished", () => {
it("should be able to map log to LogMessagePublished", async () => {
const [result] = await handler.handle([
{
blockTime: 1699443287,
blockNumber: 18521386n,
blockHash: "0x894136d03446d47116319d59b5ec3190c05248e16c8728c2848bf7452732341c",
address: "0x98f3c9e6e3face36baad05fe09d375ef1464288b",
removed: false,
data: "0x00000000000000000000000000000000000000000000000000000000000212b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000085010000000000000000000000000000000000000000000000000000000045be2810000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480002f022f6b3e80ec1219065fee8e46eb34c1cfd056a8d52d93df2c7e0165eaf364b00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
transactionHash: txHash,
transactionIndex: "0x62",
topics: [topic, "0x0000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585"],
logIndex: 0,
[Blockchain Watcher] Feature 798/enable evm karura chain (#831) * adding gen-relayer watcher code to branch * folder rename * adding some new abstract types for processor redesign * added first cut of new process manager logic * large refactoring to environment configuration * Add basic default config * prettier run * modifying event handler interface * abstract handler typing changes * Blockchain watcher: adding domain and infra layers (#786) * reorg domain-infra * watch evm blocks action * adding evm log parser * wider prettier * renaming watch action * adding doc * persist latest metadata * gh action for blockchain-watcher * adding log-message-published mapper * deps: remove peers and nodemon * adding handler for LogMessagePublished * added parser for log message published --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> * Blockchain Watcher: ethereum -> sns implementation (#790) * evm block repo implementation * adding sns publisher * adding external config and initial runner * fix: start from latest if no fromBlock configured * feat: add dryRun option * fix: handler filtering and eth_getLogs filter payload * local e2e * actual sns arns for testnet * smaller docker image * deployment changes * [Blockchain Watcher] Apply missing formatting for log message published (#791) * Apply missing formatting for log message published * keep extracting * emitterAddress -> emitter * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * group entities in different files * [Blockchain watcher] Adding light observability (#793) * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * better error logs * wait when no block available * grouping watchers * adding 429 handling http client * abstracting polling iteration * Load jobs dinamically * changing deployment strategy to jobs per pod * group actions per platform * [Blockchain Watcher] Add StartJob action + rate limit handling (#799) * using configured default winston logger * wait for new block * adding basic metrics * staging mainnet config * send hexa block number * simpler log format * group entities in different files * grouping watchers * adding 429 handling http client * abstracting polling iteration * Load jobs dinamically * changing deployment strategy to jobs per pod * adding poll solana txs action * adding solana repo implementation * solana: mapping to logmsgpublished * fixing solana mapper test * updating readme * adding some metrics * adding solana worker * adding finality param to get solana block * minor changes - using confirmed for solana log extraction * updating version * add solana env var * [Blockchain Watcher] Feature-813/fix-coverage-report (#815) * Fix coverage report * Run prettier * Rollback global coverage value * Set global coverage value to 55 * Add github PR template * Run prettier * Rename github template file --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * private solana urls as secret * adding prod cfg files * Change repository name and cretae error foulder (#819) * Change repository name and cretae error foulder * Rename SolanaFailure file * Rename SolanaFailure file --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * passing node_options for solana * adding missing envs templates * cru * ratelimited solana client + increase coverage * [Blockchain Watcher] Feature 817/add hexagonal prefix (#824) * Put hexadecimal prefix * Create id variable * Add error log * Add error log * Remove bigint in getBlock params --------- Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local> * fix never ending solana jobs * adding job counter metric * solana: add retry handling for 429s * cleanup * remove duplicated tests * [Blockchain watcher] feature-798/enable-evm-karura-chain * [Blockchain watcher] feature-798/enable-evm-karura-chain * Add karura job in mainnet * Mapped karura addresses * Improve address tesnet * Delete from block * Resolve comment in PR, mapped chainId into EvmLog entity * Revert address change * Mapped mainet address * Create chains constants * Imporve config mock * Resolve comment * Mapped chainId into repository * Run prettier * Change commitment status for karura * Run prettier --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: matias martinez <matias@xlabs.xyz> Co-authored-by: Matías Martínez <131624652+mat1asm@users.noreply.github.com> Co-authored-by: Julian Merlo <julianmerlo@MacBook-Pro-de-Julian.local>
2023-11-30 07:43:37 -08:00
chainId: 2,
},
]);
expect(result.name).toBe("log-message-published");
expect(result.chainId).toBe(2);
expect(result.txHash).toBe(
"0xcbdefc83080a8f60cbde7785eb2978548fd5c1f7d0ea2c024cce537845d339c7"
);
expect(result.blockHeight).toBe(18521386n);
expect(result.blockTime).toBe(1699443287);
expect(result.attributes.sequence).toBe(135858);
expect(result.attributes.sender.toLowerCase()).toBe(
"0x3ee18b2214aff97000d974cf647e7c347e8fa585"
);
expect(result.attributes.nonce).toBe(0);
expect(result.attributes.consistencyLevel).toBe(1);
});
});