UNPKG

@ledgerhq/coin-stellar

Version:
162 lines 8.88 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 buildTransaction_1 = require("./buildTransaction"); const bridge_fixture_1 = require("../types/bridge.fixture"); const config_1 = __importDefault(require("../config")); describe("buildTransaction", () => { const sender = "GAT4LBXYJGJJJRSNK74NPFLO55CDDXSYVMQODSEAAH3M6EY4S7LPH5GV"; beforeAll(() => { config_1.default.setCoinConfig(() => ({ status: { type: "active" }, explorer: { url: "https://stellar.coin.ledger.com", //"https://horizon-testnet.stellar.org/", fetchLimit: 100, }, })); }); it("throws an error if transaction has no NetworkInfo", async () => { // Given const account = (0, bridge_fixture_1.createFixtureAccount)({ freshAddress: sender }); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ fees: (0, bignumber_js_1.default)(1) }); // When await expect((0, buildTransaction_1.buildTransaction)(account, transaction)).rejects.toThrow("stellar family"); }); it("throws an error when no fees are setted in the transaction", async () => { // Given const account = (0, bridge_fixture_1.createFixtureAccount)(); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ networkInfo: { family: "stellar" }, }); // When await expect((0, buildTransaction_1.buildTransaction)(account, transaction)).rejects.toThrow("FeeNotLoaded"); }); it.skip("crash if transaction amount is 0", async () => { // Given const account = (0, bridge_fixture_1.createFixtureAccount)({ freshAddress: sender }); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ amount: (0, bignumber_js_1.default)(0), fees: (0, bignumber_js_1.default)(1), networkInfo: { family: "stellar" }, }); // When const builtTransaction = await (0, buildTransaction_1.buildTransaction)(account, transaction); // Then expect(builtTransaction).toBeUndefined(); }); it("throws an error when recipient is an invalid address", async () => { // Given const account = (0, bridge_fixture_1.createFixtureAccount)({ freshAddress: sender }); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ amount: (0, bignumber_js_1.default)(10), fees: (0, bignumber_js_1.default)(1), networkInfo: { family: "stellar" }, recipient: "NEW", }); // When await expect((0, buildTransaction_1.buildTransaction)(account, transaction)).rejects.toThrow("destination is invalid"); }); it("returns a built transaction in Stellar format", async () => { // Given const account = (0, bridge_fixture_1.createFixtureAccount)({ freshAddress: sender }); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ amount: (0, bignumber_js_1.default)(10), fees: (0, bignumber_js_1.default)(1), networkInfo: { family: "stellar" }, }); // When const builtTransaction = await (0, buildTransaction_1.buildTransaction)(account, transaction); // Then expect(builtTransaction.fee).toEqual("1"); expect(builtTransaction.source).toEqual(sender); expect(builtTransaction.operations).toHaveLength(1); const operation = builtTransaction.operations[0]; expect(operation.type).toEqual("payment"); expect(operation.destination).toEqual(transaction.recipient); expect(operation.amount).toEqual("0.0000010"); expect(operation.asset.code).toEqual("XLM"); expect(operation.asset.issuer).toBeUndefined(); expect(builtTransaction.toXDR().slice(0, 67)).toEqual("AAAAAgAAAAAnxYb4SZKUxk1X+NeVbu9EMd5YqyDhyIAB9s8THJfW8wAAAAEBn2AnAAA"); expect(builtTransaction.toXDR().slice(70)).toEqual("AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAADw9kGYtpM1vsCgDoHjZOVO/sjTKLsmA51f8vdM9oaecgAAAAAAAAAAAAAACgAAAAAAAAAA"); }); it("returns a built transaction in Stellar format when useAllAmount", async () => { // Given const account = (0, bridge_fixture_1.createFixtureAccount)({ freshAddress: sender, balance: (0, bignumber_js_1.default)(600239412), spendableBalance: (0, bignumber_js_1.default)(500239412), }); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ amount: (0, bignumber_js_1.default)(10), fees: (0, bignumber_js_1.default)(1), networkInfo: { family: "stellar" }, useAllAmount: true, }); // When const builtTransaction = await (0, buildTransaction_1.buildTransaction)(account, transaction); // Then expect(builtTransaction.fee).toEqual("1"); expect(builtTransaction.source).toEqual(sender); expect(builtTransaction.operations).toHaveLength(1); const operation = builtTransaction.operations[0]; expect(operation.type).toEqual("payment"); expect(operation.destination).toEqual(transaction.recipient); expect(operation.amount).toEqual("50.0239411"); expect(operation.asset.code).toEqual("XLM"); expect(operation.asset.issuer).toBeUndefined(); expect(builtTransaction.toXDR().slice(0, 67)).toEqual("AAAAAgAAAAAnxYb4SZKUxk1X+NeVbu9EMd5YqyDhyIAB9s8THJfW8wAAAAEBn2AnAAA"); expect(builtTransaction.toXDR().slice(70)).toEqual("AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAADw9kGYtpM1vsCgDoHjZOVO/sjTKLsmA51f8vdM9oaecgAAAAAAAAAAHdEMMwAAAAAAAAAA"); }); it("returns a built transaction in Stellar format when asset used is USDC", async () => { // Given const account = (0, bridge_fixture_1.createFixtureAccount)({ freshAddress: sender }); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ amount: (0, bignumber_js_1.default)(10), fees: (0, bignumber_js_1.default)(1), networkInfo: { family: "stellar" }, recipient: "GDRQAROTM7WYEHZ42SXUVUOHO36MLQKLFIZ5Y2JBWVQRPCJ3SQBBA3LH", assetCode: "USDC", assetIssuer: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", }); // When const builtTransaction = await (0, buildTransaction_1.buildTransaction)(account, transaction); // Then expect(builtTransaction.fee).toEqual("1"); expect(builtTransaction.source).toEqual(sender); expect(builtTransaction.operations).toHaveLength(1); const operation = builtTransaction.operations[0]; expect(operation.type).toEqual("payment"); expect(operation.asset.code).toEqual("USDC"); expect(operation.asset.issuer).toEqual("GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"); expect(builtTransaction.toXDR().slice(0, 67)).toEqual("AAAAAgAAAAAnxYb4SZKUxk1X+NeVbu9EMd5YqyDhyIAB9s8THJfW8wAAAAEBn2AnAAA"); }); it("returns a built transaction in Stellar format", async () => { // Given const account = (0, bridge_fixture_1.createFixtureAccount)({ freshAddress: sender }); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ amount: (0, bignumber_js_1.default)(10), fees: (0, bignumber_js_1.default)(1), networkInfo: { family: "stellar" }, memoType: "MEMO_TEXT", memoValue: "Hello", }); // When const builtTransaction = await (0, buildTransaction_1.buildTransaction)(account, transaction); // Then expect(builtTransaction.fee).toEqual("1"); expect(builtTransaction.source).toEqual(sender); expect(builtTransaction.operations).toHaveLength(1); expect(builtTransaction.memo.type).toEqual("text"); expect(builtTransaction.memo.value).toEqual("Hello"); const operation = builtTransaction.operations[0]; expect(operation.type).toEqual("payment"); expect(operation.asset.code).toEqual("XLM"); expect(operation.asset.issuer).toBeUndefined(); expect(builtTransaction.toXDR().slice(0, 67)).toEqual("AAAAAgAAAAAnxYb4SZKUxk1X+NeVbu9EMd5YqyDhyIAB9s8THJfW8wAAAAEBn2AnAAA"); expect(builtTransaction.toXDR().slice(70)).toEqual("AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAVIZWxsbwAAAAAAAAEAAAAAAAAAAQAAAADw9kGYtpM1vsCgDoHjZOVO/sjTKLsmA51f8vdM9oaecgAAAAAAAAAAAAAACgAAAAAAAAAA"); }); }); //# sourceMappingURL=buildTransaction.integ.test.js.map