@ledgerhq/ledger-cal-service
Version:
Ledger CAL service client
205 lines • 6.98 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 index_1 = require("./index");
const live_network_1 = __importDefault(require("@ledgerhq/live-network"));
jest.mock("@ledgerhq/live-network");
const test = "test";
const prod = "prod";
beforeEach(() => {
jest.resetModules();
jest.clearAllMocks();
});
describe("transformData", () => {
it.each([
[
prod,
{
providera: {
name: "ProviderA",
publicKey: {
curve: "secp256k1",
data: Buffer.from("1234567890abcdef", "hex"),
},
signature: Buffer.from("a1b2c3", "hex"),
version: 2,
},
providerb: {
name: "ProviderB",
publicKey: {
curve: "secp256r1",
data: Buffer.from("abcdef1234567890", "hex"),
},
signature: Buffer.from("d4e5f6", "hex"),
version: 2,
},
},
],
[
test,
{
providera: {
name: "ProviderA",
publicKey: {
curve: "secp256k1",
data: Buffer.from("1234567890abcdef", "hex"),
},
signature: Buffer.from("d1e2f3", "hex"),
version: 2,
},
providerb: {
name: "ProviderB",
publicKey: {
curve: "secp256r1",
data: Buffer.from("abcdef1234567890", "hex"),
},
signature: Buffer.from("a9b8c7", "hex"),
version: 2,
},
},
],
])("should transform providers data correctly with %p Ledger signature env", (ledgerSignatureEnv, expected) => {
const providersData = [
{
name: "ProviderA",
partner_id: "providera",
public_key: "1234567890abcdef",
public_key_curve: "secp256k1",
service_app_version: 2,
descriptor: {
data: "09abcd",
signatures: {
prod: "a1b2c3",
test: "d1e2f3",
},
},
},
{
name: "ProviderB",
partner_id: "providerb",
public_key: "abcdef1234567890",
public_key_curve: "secp256r1",
service_app_version: 2,
descriptor: {
data: "ef0123",
signatures: {
prod: "d4e5f6",
test: "a9b8c7",
},
},
},
];
const result = (0, index_1.transformData)(providersData, ledgerSignatureEnv);
expect(result).toEqual(expected);
});
it("should handle empty providers data", () => {
const providersData = [];
const expected = {};
const result = (0, index_1.transformData)(providersData);
expect(result).toEqual(expected);
});
});
describe("getProvidersData", () => {
it.each([
[
prod,
prod,
{
providera: {
name: "ProviderA",
publicKey: {
curve: "secp256k1",
data: Buffer.from("1234567890abcdef", "hex"),
},
signature: Buffer.from("a1b2c3", "hex"),
version: 2,
},
},
],
[
prod,
test,
{
providera: {
name: "ProviderA",
publicKey: {
curve: "secp256k1",
data: Buffer.from("1234567890abcdef", "hex"),
},
signature: Buffer.from("a1b2c3", "hex"),
version: 2,
},
},
],
[
test,
test,
{
providera: {
name: "ProviderA",
publicKey: {
curve: "secp256k1",
data: Buffer.from("1234567890abcdef", "hex"),
},
signature: Buffer.from("d1e2f3", "hex"),
version: 2,
},
},
],
[
test,
prod,
{
providera: {
name: "ProviderA",
publicKey: {
curve: "secp256k1",
data: Buffer.from("1234567890abcdef", "hex"),
},
signature: Buffer.from("d1e2f3", "hex"),
version: 2,
},
},
],
])("should fetch and transform providers data with %p Ledger signature env and %p partner signature", async (ledgerSignatureEnv, partnerSignatureEnv, expected) => {
const mockProvidersData = [
{
name: "ProviderA",
partner_id: "providera",
public_key: "1234567890abcdef",
public_key_curve: "secp256k1",
service_app_version: 2,
descriptor: {
data: "09abcd",
signatures: {
prod: "a1b2c3",
test: "d1e2f3",
},
},
},
];
live_network_1.default.mockResolvedValue({ data: mockProvidersData });
const result = await (0, index_1.getProvidersData)({
type: "swap",
ledgerSignatureEnv,
partnerSignatureEnv,
});
expect(live_network_1.default).toHaveBeenCalledWith({
method: "GET",
url: "https://crypto-assets-service.api.ledger.com/v1/partners",
params: {
env: partnerSignatureEnv,
output: "name,public_key,public_key_curve,service_app_version,descriptor,partner_id,env",
service_name: "swap",
},
});
expect(result).toEqual(expected);
});
it("should handle errors when fetching data", async () => {
live_network_1.default.mockRejectedValue(new Error("Network error"));
await expect((0, index_1.getProvidersData)({ type: "swap" })).rejects.toThrow("Network error");
});
});
//# sourceMappingURL=index.test.js.map