@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
70 lines • 3.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const txTrackingHelper_1 = require("./txTrackingHelper");
const hw_app_eth_1 = require("@ledgerhq/hw-app-eth");
const createMockTransaction = (selector) => ({
data: Buffer.from(selector.slice(2) + "0".repeat(128), "hex"),
recipient: "0x1234567890123456789012345678901234567890",
amount: "0",
gasPrice: "0",
gasLimit: "21000",
nonce: 0,
});
describe("getTxType", () => {
describe("ERC20 transactions", () => {
it("should return 'transfer' for ERC20 transfer selector", () => {
const tx = createMockTransaction(hw_app_eth_1.ERC20_CLEAR_SIGNED_SELECTORS.TRANSFER);
const result = (0, txTrackingHelper_1.getTxType)(tx);
expect(result).toBe("transfer");
});
it("should return 'approve' for ERC20 approve selector", () => {
const tx = createMockTransaction(hw_app_eth_1.ERC20_CLEAR_SIGNED_SELECTORS.APPROVE);
const result = (0, txTrackingHelper_1.getTxType)(tx);
expect(result).toBe("approve");
});
});
describe("DAPP transactions", () => {
it("should return the DAPP selector value for known DAPP transactions", () => {
const dappSelectors = Object.keys(hw_app_eth_1.DAPP_SELECTORS);
if (dappSelectors.length > 0) {
const firstSelector = dappSelectors[0];
const expectedValue = hw_app_eth_1.DAPP_SELECTORS[firstSelector];
const tx = createMockTransaction(firstSelector);
const result = (0, txTrackingHelper_1.getTxType)(tx);
expect(result).toBe(expectedValue);
}
});
});
describe("Unknown transactions", () => {
it("should return 'transfer' for unknown selectors", () => {
const tx = createMockTransaction("0x12345678");
const result = (0, txTrackingHelper_1.getTxType)(tx);
expect(result).toBe("transfer");
});
it("should return 'transfer' for transactions without data", () => {
const tx = {
data: undefined,
};
const result = (0, txTrackingHelper_1.getTxType)(tx);
expect(result).toBe("transfer");
});
it("should return 'transfer' for transactions with empty data", () => {
const tx = {
data: Buffer.alloc(0),
};
const result = (0, txTrackingHelper_1.getTxType)(tx);
expect(result).toBe("transfer");
});
});
describe("Selector extract", () => {
it("should correctly extract 4-byte selector from transaction data", () => {
const transferSelector = hw_app_eth_1.ERC20_CLEAR_SIGNED_SELECTORS.TRANSFER;
const tx = createMockTransaction(transferSelector);
const expectedSelector = transferSelector;
const txSelector = `0x${tx.data?.toString("hex").substring(0, 8)}`;
expect(txSelector).toBe(expectedSelector);
expect((0, txTrackingHelper_1.getTxType)(tx)).toBe("transfer");
});
});
});
//# sourceMappingURL=txTrackingHelper.test.js.map