UNPKG

@ledgerhq/coin-stellar

Version:
125 lines 4.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const stellar_sdk_1 = require("@stellar/stellar-sdk"); const bignumber_js_1 = __importDefault(require("bignumber.js")); const crypto_1 = require("crypto"); const config_1 = __importDefault(require("../config")); const bridge_fixture_1 = require("../types/bridge.fixture"); const buildTransaction_1 = __importDefault(require("./buildTransaction")); const signOperation_1 = require("./signOperation"); const stellarKp = stellar_sdk_1.Keypair.random(); const mockLoadAccount = jest.fn().mockResolvedValue( // Stub of Horizon.AccountResponse { id: stellarKp.publicKey(), //"GB3KJPLFUYN5VL6R3GU3EGCGVCKFDSD7BEDX42HWG5BWFKB3KQGJJRMA", sequence: "0", balances: [ { balance: "1000", asset_type: "native", //AssetType.native, buying_liabilities: "", selling_liabilities: "", }, ], accountId: () => stellarKp.publicKey(), //"GB3KJPLFUYN5VL6R3GU3EGCGVCKFDSD7BEDX42HWG5BWFKB3KQGJJRMA", sequenceNumber: () => "0", incrementSequenceNumber: () => "1", }); jest.mock("../network", () => ({ ...jest.requireActual("../network"), loadAccount: () => mockLoadAccount(), fetchSequence: jest.fn(), })); describe.skip("signOperation", () => { let spySignTransaction; const fakeSigner = { getPublicKey: jest.fn(), signTransaction: (addr, tx) => spySignTransaction(addr, tx), }; const signerContext = (_deviceId, fn) => fn(fakeSigner); const signOperation = (0, signOperation_1.buildSignOperation)(signerContext); const deviceId = "dummyDeviceId"; beforeAll(() => { config_1.default.setCoinConfig(() => ({ status: { type: "active" }, explorer: { url: "https://localhost", }, })); }); // beforeEach(() => { // }); it("returns events in the right order", done => { // GIVEN spySignTransaction = async (_addr, tx) => { // const signature = stellarKp.sign(tx); const signature = stellarKp.signDecorated(tx).toXDR(); const hashSig = await crypto_1.subtle.digest("SHA-256", signature); const hash = Buffer.from(hashSig); // expect(stellarKp.verify(tx, hash)).toBeTruthy(); return Promise.resolve({ signature: hash }); }; const account = (0, bridge_fixture_1.createFixtureAccount)({ freshAddress: stellarKp.publicKey(), freshAddressPath: stellarKp.publicKey(), }); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ amount: (0, bignumber_js_1.default)(1), fees: (0, bignumber_js_1.default)(1), networkInfo: { family: "stellar" }, }); // WHEN & THEN const expectedEvent = [ { type: "device-signature-requested", }, { type: "device-signature-granted", }, { type: "signed", }, ]; let eventIdx = 0; (0, buildTransaction_1.default)(account, transaction).then(unsigned => { const sig = stellarKp.sign(unsigned.hash()); expect(stellarKp.verify(unsigned.hash(), sig)).toBeTruthy(); unsigned.addSignature(stellarKp.publicKey(), sig.toString("base64")); }); signOperation({ account, deviceId, transaction }).forEach(e => { try { expect(e.type).toEqual(expectedEvent[eventIdx].type); eventIdx++; if (eventIdx === expectedEvent.length) { done(); } } catch (err) { done(err); } }); }); it.skip("returns signature value from LedgerSigner", done => { // GIVEN const account = (0, bridge_fixture_1.createFixtureAccount)(); const transaction = (0, bridge_fixture_1.createFixtureTransaction)({ amount: (0, bignumber_js_1.default)(1), fees: (0, bignumber_js_1.default)(1), networkInfo: { family: "stellar" }, }); // WHEN & THEN const subscriber = signOperation({ account, deviceId, transaction }).subscribe((e) => { if (e.type === "signed") { const signature = e.signedOperation.signature; expect(signature).toEqual("SBYTES"); // Cleanup subscriber.unsubscribe(); done(); } }); }); }); //# sourceMappingURL=signOperation.test.js.map