@ledgerhq/coin-casper
Version:
Ledger Casper integration
179 lines • 8.93 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const bignumber_js_1 = require("bignumber.js");
const transaction_1 = __importStar(require("./transaction"));
const fixtures_1 = require("../test/fixtures");
describe("transaction", () => {
// Using the createMockAccount function from fixtures
const account = (0, fixtures_1.createMockAccount)({
id: "casper:0:testAccount",
balance: new bignumber_js_1.BigNumber(100000000),
spendableBalance: new bignumber_js_1.BigNumber(100000000),
blockHeight: 123456,
freshAddress: "0123456789",
freshAddressPath: "44'/506'/0'/0/0",
lastSyncDate: new Date(),
});
describe("formatTransaction", () => {
test("should format a transaction with amount", () => {
const tx = (0, fixtures_1.createMockTransaction)({
recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1,
useAllAmount: false,
amount: new bignumber_js_1.BigNumber(50000000),
fees: new bignumber_js_1.BigNumber(1000000),
transferId: "1",
});
const result = (0, transaction_1.formatTransaction)(tx, account);
expect(result).toContain("SEND");
expect(result).toContain("0.05");
expect(result).toContain("CSPR");
expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1}`);
});
test("should format a transaction with useAllAmount", () => {
const tx = (0, fixtures_1.createMockTransaction)({
recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1,
useAllAmount: true,
amount: new bignumber_js_1.BigNumber(0),
fees: new bignumber_js_1.BigNumber(1000000),
transferId: "1",
});
const result = (0, transaction_1.formatTransaction)(tx, account);
expect(result).toContain("SEND MAX");
expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1}`);
});
test("should format a transaction with zero amount", () => {
const tx = (0, fixtures_1.createMockTransaction)({
recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1,
useAllAmount: false,
amount: new bignumber_js_1.BigNumber(0),
fees: new bignumber_js_1.BigNumber(1000000),
transferId: "1",
});
const result = (0, transaction_1.formatTransaction)(tx, account);
expect(result).toContain("SEND");
expect(result).not.toContain("MAX");
expect(result).not.toContain("CSPR");
expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1}`);
});
test("should format a transaction with different address formats", () => {
// Test with ED25519 address format
const tx = (0, fixtures_1.createMockTransaction)({
recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_ED25519,
amount: new bignumber_js_1.BigNumber(50000000),
});
const result = (0, transaction_1.formatTransaction)(tx, account);
expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_ED25519}`);
});
test("should format a transaction with transfer ID", () => {
const tx = (0, fixtures_1.createMockTransaction)({
recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1,
amount: new bignumber_js_1.BigNumber(50000000),
transferId: fixtures_1.TEST_TRANSFER_IDS.VALID,
});
const result = (0, transaction_1.formatTransaction)(tx, account);
expect(result).toContain("0.05");
expect(result).toContain("CSPR");
expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1}`);
});
});
describe("fromTransactionRaw", () => {
test("should convert a transaction raw to a transaction", () => {
const raw = {
family: "casper",
recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1,
useAllAmount: false,
amount: "50000000",
fees: "1000000",
transferId: fixtures_1.TEST_TRANSFER_IDS.VALID,
};
const result = (0, transaction_1.fromTransactionRaw)(raw);
expect(result.family).toBe("casper");
expect(result.recipient).toBe(fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1);
expect(result.useAllAmount).toBe(false);
expect(result.amount).toEqual(new bignumber_js_1.BigNumber(50000000));
expect(result.fees).toEqual(new bignumber_js_1.BigNumber(1000000));
expect(result.transferId).toBe(fixtures_1.TEST_TRANSFER_IDS.VALID);
});
test("should handle transaction raw without optional fields", () => {
const raw = {
family: "casper",
recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1,
useAllAmount: false,
amount: "50000000",
fees: "1000000",
};
const result = (0, transaction_1.fromTransactionRaw)(raw);
expect(result.family).toBe("casper");
expect(result.transferId).toBeUndefined();
});
});
describe("toTransactionRaw", () => {
test("should convert a transaction to a transaction raw", () => {
const tx = (0, fixtures_1.createMockTransaction)({
recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1,
useAllAmount: false,
amount: new bignumber_js_1.BigNumber(50000000),
fees: new bignumber_js_1.BigNumber(1000000),
transferId: fixtures_1.TEST_TRANSFER_IDS.VALID,
});
const result = transaction_1.default.toTransactionRaw(tx);
expect(result.family).toBe("casper");
expect(result.recipient).toBe(fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1);
expect(result.useAllAmount).toBe(false);
expect(result.amount).toBe("50000000");
expect(result.fees).toBe("1000000");
expect(result.transferId).toBe(fixtures_1.TEST_TRANSFER_IDS.VALID);
});
test("should handle transaction without optional fields", () => {
const tx = (0, fixtures_1.createMockTransaction)({
recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1,
useAllAmount: false,
amount: new bignumber_js_1.BigNumber(50000000),
fees: new bignumber_js_1.BigNumber(1000000),
transferId: undefined,
});
const result = transaction_1.default.toTransactionRaw(tx);
expect(result.transferId).toBeUndefined();
});
test("should handle different transaction scenarios", () => {
// Test with useAllAmount = true
const maxTx = (0, fixtures_1.createMockTransaction)({
useAllAmount: true,
amount: new bignumber_js_1.BigNumber(0),
});
const maxResult = transaction_1.default.toTransactionRaw(maxTx);
expect(maxResult.useAllAmount).toBe(true);
expect(maxResult.amount).toBe("0");
// Test with very large amount
const largeTx = (0, fixtures_1.createMockTransaction)({
amount: new bignumber_js_1.BigNumber("9999000000000"), // 9,999 CSPR
});
const largeResult = transaction_1.default.toTransactionRaw(largeTx);
expect(largeResult.amount).toBe("9999000000000");
});
});
});
//# sourceMappingURL=transaction.test.js.map
;