@ledgerhq/coin-aptos
Version:
Ledger Aptos Coin integration
453 lines • 21.8 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const bridge_fixture_1 = require("../../bridge/bridge.fixture");
const getTransactionStatus_1 = __importDefault(require("../../bridge/getTransactionStatus"));
const errors_1 = require("@ledgerhq/errors");
const constants_1 = require("../../constants");
const aptosResources = {
activeBalance: (0, bignumber_js_1.default)(45988443248),
pendingInactiveBalance: (0, bignumber_js_1.default)(67874023),
inactiveBalance: (0, bignumber_js_1.default)(567600900),
stakingPositions: [
{
active: (0, bignumber_js_1.default)(123456789),
inactive: (0, bignumber_js_1.default)(567567567),
pendingInactive: (0, bignumber_js_1.default)(5345),
validatorId: "validator-1",
},
{
active: (0, bignumber_js_1.default)(3),
inactive: (0, bignumber_js_1.default)(33333),
pendingInactive: (0, bignumber_js_1.default)(67868678),
validatorId: "validator-2",
},
{
active: (0, bignumber_js_1.default)(45864986459),
inactive: (0, bignumber_js_1.default)(0),
pendingInactive: (0, bignumber_js_1.default)(0),
validatorId: "validator-3",
},
],
};
describe("getTransactionStatus Test", () => {
it("should return error for AmountRequired", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.fees = (0, bignumber_js_1.default)(2);
transaction.recipient = "0x" + "0".repeat(64);
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.AmountRequired(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(2),
amount: (0, bignumber_js_1.default)(0),
totalSpent: (0, bignumber_js_1.default)(2),
};
expect(result).toEqual(expected);
});
it("should return error for FeeNotLoaded", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
account.spendableBalance = (0, bignumber_js_1.default)(10);
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.fees = null;
transaction.amount = (0, bignumber_js_1.default)(2);
transaction.recipient = "0x" + "0".repeat(64);
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
fees: new errors_1.FeeNotLoaded(),
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(0),
amount: (0, bignumber_js_1.default)(2),
totalSpent: (0, bignumber_js_1.default)(2),
};
expect(result).toEqual(expected);
});
it("should return error for NotEnoughBalance", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
account.spendableBalance = (0, bignumber_js_1.default)(1);
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.recipient = "0x" + "0".repeat(64);
transaction.amount = (0, bignumber_js_1.default)(2);
transaction.fees = (0, bignumber_js_1.default)(2);
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(2),
amount: (0, bignumber_js_1.default)(2),
totalSpent: (0, bignumber_js_1.default)(4),
};
expect(result).toEqual(expected);
});
it("should return error for NotEnoughBalance and amount equal to zero with use all amount option", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
account.spendableBalance = (0, bignumber_js_1.default)(1);
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.recipient = "0x" + "0".repeat(64);
transaction.amount = (0, bignumber_js_1.default)(2);
transaction.fees = (0, bignumber_js_1.default)(2);
transaction.useAllAmount = true;
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(2),
amount: (0, bignumber_js_1.default)(0),
totalSpent: (0, bignumber_js_1.default)(2),
};
expect(result).toEqual(expected);
});
it("should return error for NotEnoughBalance for token account when not enough tokens", async () => {
const account = (0, bridge_fixture_1.createFixtureAccountWithSubAccount)("coin");
account.spendableBalance = (0, bignumber_js_1.default)(300);
const transaction = (0, bridge_fixture_1.createFixtureTransactionWithSubAccount)();
transaction.recipient = "0x" + "0".repeat(64);
transaction.amount = (0, bignumber_js_1.default)(2000);
transaction.fees = (0, bignumber_js_1.default)(200);
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(200),
amount: (0, bignumber_js_1.default)(2000),
totalSpent: (0, bignumber_js_1.default)(2000),
};
expect(result).toEqual(expected);
});
it("should return error for NotEnoughBalance with use all amount option", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
account.spendableBalance = (0, bignumber_js_1.default)(1);
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.recipient = "0x" + "0".repeat(64);
transaction.amount = (0, bignumber_js_1.default)(2);
transaction.fees = (0, bignumber_js_1.default)(2);
transaction.useAllAmount = true;
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(2),
amount: (0, bignumber_js_1.default)(0),
totalSpent: (0, bignumber_js_1.default)(2),
};
expect(result).toEqual(expected);
});
it("should return error for NotEnoughBalance for token account with use all amount option when not enough fees", async () => {
const account = (0, bridge_fixture_1.createFixtureAccountWithSubAccount)("coin");
account.spendableBalance = (0, bignumber_js_1.default)(10);
const transaction = (0, bridge_fixture_1.createFixtureTransactionWithSubAccount)();
transaction.recipient = "0x" + "0".repeat(64);
transaction.amount = (0, bignumber_js_1.default)(2000);
transaction.fees = (0, bignumber_js_1.default)(200);
transaction.useAllAmount = true;
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(200),
amount: (0, bignumber_js_1.default)(1000),
totalSpent: (0, bignumber_js_1.default)(1000),
};
expect(result).toEqual(expected);
});
it("should return error for NotEnoughBalanceFees", async () => {
const account = (0, bridge_fixture_1.createFixtureAccountWithSubAccount)("coin");
account.spendableBalance = (0, bignumber_js_1.default)(1);
const transaction = (0, bridge_fixture_1.createFixtureTransactionWithSubAccount)();
transaction.recipient = "0x" + "0".repeat(64);
transaction.amount = (0, bignumber_js_1.default)(2);
transaction.fees = (0, bignumber_js_1.default)(0);
transaction.errors = { maxGasAmount: "GasInsufficientBalance" };
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(0),
amount: (0, bignumber_js_1.default)(2),
totalSpent: (0, bignumber_js_1.default)(2),
};
expect(result).toEqual(expected);
});
it("should return error for RecipientRequired", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
account.spendableBalance = (0, bignumber_js_1.default)(10);
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.amount = (0, bignumber_js_1.default)(2);
transaction.fees = (0, bignumber_js_1.default)(2);
transaction.recipient = "";
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
recipient: new errors_1.RecipientRequired(),
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(2),
amount: (0, bignumber_js_1.default)(2),
totalSpent: (0, bignumber_js_1.default)(4),
};
expect(result).toEqual(expected);
});
it("should return error for InvalidAddress", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.amount = (0, bignumber_js_1.default)(2);
transaction.fees = (0, bignumber_js_1.default)(2);
transaction.recipient = "0x";
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
recipient: new errors_1.InvalidAddress(),
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(2),
amount: (0, bignumber_js_1.default)(2),
totalSpent: (0, bignumber_js_1.default)(4),
};
expect(result).toEqual(expected);
});
it("should return error for InvalidAddressBecauseDestinationIsAlsoSource", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.amount = (0, bignumber_js_1.default)(2);
transaction.fees = (0, bignumber_js_1.default)(2);
transaction.recipient = "0x" + "0".repeat(64);
account.freshAddress = transaction.recipient;
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
recipient: new errors_1.InvalidAddressBecauseDestinationIsAlsoSource(),
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(2),
amount: (0, bignumber_js_1.default)(2),
totalSpent: (0, bignumber_js_1.default)(4),
};
expect(result).toEqual(expected);
});
it("should return error for RecipientRequired", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.amount = (0, bignumber_js_1.default)(2);
transaction.fees = (0, bignumber_js_1.default)(2);
transaction.recipient = "";
account.freshAddress = transaction.recipient;
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
recipient: new errors_1.RecipientRequired(),
amount: new errors_1.NotEnoughBalance(),
},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(2),
amount: (0, bignumber_js_1.default)(2),
totalSpent: (0, bignumber_js_1.default)(4),
};
expect(result).toEqual(expected);
});
it("should return right amount and total spent with use all amount option", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)();
account.spendableBalance = (0, bignumber_js_1.default)(10);
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
transaction.recipient = "0x" + "0".repeat(64);
transaction.fees = (0, bignumber_js_1.default)(2);
transaction.useAllAmount = true;
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {},
warnings: {},
estimatedFees: (0, bignumber_js_1.default)(2),
amount: (0, bignumber_js_1.default)(8),
totalSpent: (0, bignumber_js_1.default)(10),
};
expect(result).toEqual(expected);
});
it("should return not enough balance if trying to stake more than the current balance", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(123456),
spendableBalance: (0, bignumber_js_1.default)(123456),
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ mode: "stake", amount: (0, bignumber_js_1.default)(123453336) });
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughBalance(),
},
};
expect(result).toMatchObject(expected);
});
it(`should return not enough balance to stake if trying to stake less than ${constants_1.MIN_COINS_ON_SHARES_POOL} APT`, async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(123456),
spendableBalance: (0, bignumber_js_1.default)(123456),
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ mode: "stake", amount: (0, bignumber_js_1.default)(5) });
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughToStake(),
},
};
expect(result).toMatchObject(expected);
});
it(`should return not enough balance to stake if trying to stake the max balance but it is less than ${constants_1.MIN_COINS_ON_SHARES_POOL} APT`, async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(4),
spendableBalance: (0, bignumber_js_1.default)(4),
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ mode: "stake", useAllAmount: true });
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughToStake(),
},
};
expect(result).toMatchObject(expected);
});
it("should return an error if there's no staking position to restake", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(4),
spendableBalance: (0, bignumber_js_1.default)(4),
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ mode: "restake" });
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
recipient: new errors_1.RecipientRequired(),
},
};
expect(result).toMatchObject(expected);
});
it("should return an error if there's not enough pending inactive balance", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(4),
spendableBalance: (0, bignumber_js_1.default)(4),
aptosResources,
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({
mode: "restake",
recipient: "validator-1",
amount: (0, bignumber_js_1.default)(67874022223),
fees: (0, bignumber_js_1.default)(1),
});
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughBalance(),
},
};
expect(result).toMatchObject(expected);
});
it(`should return not enough amount if trying to restake but it is less than ${constants_1.MIN_COINS_ON_SHARES_POOL} APT`, async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(4),
spendableBalance: (0, bignumber_js_1.default)(4),
aptosResources,
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({
mode: "restake",
recipient: "validator-2",
amount: (0, bignumber_js_1.default)(4),
fees: (0, bignumber_js_1.default)(1),
});
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughToRestake(),
},
};
expect(result).toMatchObject(expected);
});
it("should return an error if there's no staking position to unstake", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(4),
spendableBalance: (0, bignumber_js_1.default)(4),
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ mode: "unstake" });
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
recipient: new errors_1.RecipientRequired(),
},
};
expect(result).toMatchObject(expected);
});
it(`should return not enough to unstake if the amount to unstake is less than ${constants_1.MIN_COINS_ON_SHARES_POOL} APT`, async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(4),
spendableBalance: (0, bignumber_js_1.default)(4),
aptosResources,
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({
mode: "unstake",
recipient: "validator-2",
amount: (0, bignumber_js_1.default)(2),
fees: (0, bignumber_js_1.default)(0.5),
});
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughToUnstake(),
},
};
expect(result).toMatchObject(expected);
});
it("should return an error if there's no staking position to withdraw", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(4),
spendableBalance: (0, bignumber_js_1.default)(4),
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ mode: "withdraw" });
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
recipient: new errors_1.RecipientRequired(),
},
};
expect(result).toMatchObject(expected);
});
it("should return an error if there's not enough inactive balance to withdraw", async () => {
const account = (0, bridge_fixture_1.createFixtureAccount)({
balance: (0, bignumber_js_1.default)(4),
spendableBalance: (0, bignumber_js_1.default)(4),
aptosResources,
});
const transaction = (0, bridge_fixture_1.createFixtureTransaction)({
mode: "restake",
recipient: "validator-1",
amount: (0, bignumber_js_1.default)(56756756745),
fees: (0, bignumber_js_1.default)(1),
});
const result = await (0, getTransactionStatus_1.default)(account, transaction);
const expected = {
errors: {
amount: new errors_1.NotEnoughBalance(),
},
};
expect(result).toMatchObject(expected);
});
});
//# sourceMappingURL=getTransactionStatus.test.js.map