UNPKG

@ledgerhq/coin-aptos

Version:
453 lines 21.8 kB
"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