@ledgerhq/coin-aptos
Version:
Ledger Aptos Coin integration
49 lines • 2.89 kB
JavaScript
import { signTransaction } from "../../network";
import { createFixtureAccount } from "../../bridge/bridge.fixture";
import { AccountAddress, RawTransaction, generateSigningMessageForTransaction, generateSignedTransaction, } from "@aptos-labs/ts-sdk";
jest.mock("@aptos-labs/ts-sdk", () => {
const originalModule = jest.requireActual("@aptos-labs/ts-sdk");
const partialMockedModule = Object.keys(originalModule).reduce((pre, methodName) => {
pre[methodName] = jest.fn();
return pre;
}, {});
return {
...partialMockedModule,
// mock all except these
AccountAddress: originalModule.AccountAddress,
Hex: originalModule.Hex,
};
});
let mockedGenerateSigningMessageForTransaction;
let mockedGenerateSignedTransaction;
describe("signTransaction", () => {
beforeAll(() => {
mockedGenerateSigningMessageForTransaction = jest.mocked(generateSigningMessageForTransaction);
mockedGenerateSignedTransaction = jest.mocked(generateSignedTransaction);
});
afterEach(() => {
jest.resetAllMocks();
});
it("should throw an error", async () => {
mockedGenerateSigningMessageForTransaction.mockReturnValue("signingMessage");
const mockGenerateSignedTransactionSpy = jest.spyOn({ generateSignedTransaction: mockedGenerateSignedTransaction }, "generateSignedTransaction");
const signerContext = jest.fn().mockImplementation(() => ({ signature: "0x7aa193705193f4" }));
const account = createFixtureAccount();
const deviceId = "nanoX";
const rawTxn = new RawTransaction(new AccountAddress(Uint8Array.from(Buffer.from("thisaddressmustbe32byteslooooong"))), BigInt(1), "", BigInt(100), BigInt(50), BigInt(1), { chainId: 1 });
expect(signTransaction(signerContext, account, deviceId, rawTxn)).rejects.toThrow("Account must have a public signing key");
expect(mockGenerateSignedTransactionSpy).toHaveBeenCalledTimes(0);
});
it("should sign a transaction", async () => {
mockedGenerateSigningMessageForTransaction.mockReturnValue("signingMessage");
const mockGenerateSignedTransactionSpy = jest.spyOn({ generateSignedTransaction: mockedGenerateSignedTransaction }, "generateSignedTransaction");
const signerContext = jest.fn().mockImplementation(() => ({ signature: "0x7aa193705193f4" }));
const account = createFixtureAccount();
account.xpub = "0xb69a68cc64f7aa193705193f4dd598320a0a74baf7e4b50c9980c5bd60a82390";
const deviceId = "nanoX";
const rawTxn = new RawTransaction(AccountAddress.fromString(account.xpub), BigInt(1), "", BigInt(100), BigInt(50), BigInt(1), { chainId: 1 });
await signTransaction(signerContext, account, deviceId, rawTxn);
expect(mockGenerateSignedTransactionSpy).toHaveBeenCalledTimes(1);
});
});
//# sourceMappingURL=index.test.js.map