@ledgerhq/ledger-cal-service
Version:
Ledger CAL service client
200 lines • 6.67 kB
JavaScript
import { transformData, getProvidersData, } from "./index";
import network from "@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 = transformData(providersData, ledgerSignatureEnv);
expect(result).toEqual(expected);
});
it("should handle empty providers data", () => {
const providersData = [];
const expected = {};
const result = 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",
},
},
},
];
network.mockResolvedValue({ data: mockProvidersData });
const result = await getProvidersData({
type: "swap",
ledgerSignatureEnv,
partnerSignatureEnv,
});
expect(network).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 () => {
network.mockRejectedValue(new Error("Network error"));
await expect(getProvidersData({ type: "swap" })).rejects.toThrow("Network error");
});
});
//# sourceMappingURL=index.test.js.map