@ledgerhq/coin-ton
Version:
67 lines • 2.71 kB
JavaScript
import { Address, Cell, beginCell, storeMessage } from "@ton/core";
import BigNumber from "bignumber.js";
import { fetchAccountInfo } from "../../bridge/bridgeHelpers/api";
import { buildSignOperation } from "../../signOperation";
import { account, accountInfo, totalFees, transaction } from "../fixtures/common.fixtures";
jest.mock("../../bridge/bridgeHelpers/api");
const spySignTransaction = jest.fn().mockImplementation(async () => Promise.resolve(beginCell()
.store(storeMessage({
info: {
type: "external-in",
dest: Address.parse("EQDzd8aeBOU-jqYw_ZSuZjceI5p-F4b7HMprAsUJAtRPbJfg"),
importFee: BigInt(0),
},
body: new Cell(),
}))
.endCell()));
const mockSignerContext = (_, fn) => {
return fn({
signTransaction: spySignTransaction,
getAddress: jest.fn(),
validateAddress: jest.fn(),
});
};
describe("signOperation", () => {
beforeAll(() => {
const fetchAccountInfoMock = jest.mocked(fetchAccountInfo);
fetchAccountInfoMock.mockReturnValue(Promise.resolve(accountInfo));
});
it("should return an optimistic operation and a signed hash returned by the app bindings", done => {
const signOperation = buildSignOperation(mockSignerContext);
const signOpObservable = signOperation({
account,
transaction: { ...transaction, fees: totalFees },
deviceId: "",
});
signOpObservable.subscribe(obs => {
if (obs.type === "signed") {
const { signedOperation: { signature, operation }, } = obs;
const { amount } = transaction;
expect(operation).toEqual({
id: "",
hash: "",
type: "OUT",
value: new BigNumber(amount).plus(totalFees),
fee: totalFees,
blockHash: null,
blockHeight: null,
senders: [account.freshAddress],
recipients: [transaction.recipient],
accountId: account.id,
date: expect.any(Date),
extra: {
comment: {
isEncrypted: false,
text: "",
},
explorerHash: "",
lt: "",
},
});
expect(signature).toBe("te6cckEBAQEASAAAi4gB5u+NPAnKfR1MYfspXMxuPEc0/C8N9jmU1gWKEgWontgEQA83fGngTlPo6mMP2UrmY3HiOafheG+xzKawLFCQLUT2wCDSMh+F");
done();
}
});
});
});
//# sourceMappingURL=signOperation.unit.test.js.map