@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
52 lines • 1.88 kB
JavaScript
/* eslint-disable no-console */
import nock from "nock";
import { URL } from "url";
import { promises as fsp } from "fs";
/* Loop through each mock and apply them to nock */
export async function initBackendMocks() {
const root = `${__dirname}/bridgeMocks`;
await fsp.readdir(root).then(async (mocks) => {
console.log(`Found ${mocks.length} to apply`);
let appliedMocks = 0;
for (const mock of mocks) {
appliedMocks++;
const backendMock = await fsp.readFile(`${root}/${mock}`);
try {
const jsonBackendMock = JSON.parse(backendMock.toString());
applyBackendMock(jsonBackendMock);
}
catch (err) {
console.log(err, mock);
}
}
console.log(`Applied ${appliedMocks} out of ${mocks.length} files`);
});
}
function applyBackendMock(mockContent) {
const url = new URL(mockContent.request.url);
const originWithoutPort = url.port && url.origin.includes(`:${url.port}`)
? url.origin.replace(`:${url.port}`, "")
: url.origin;
const endpoint = mockContent.request.url.replace(url.origin, "");
switch (mockContent.request.method) {
case "GET":
nock(originWithoutPort)
.persist()
.get(endpoint)
.reply(mockContent.response.statusCode, () => mockContent.response.body);
break;
case "POST":
nock(originWithoutPort)
.persist()
.post(endpoint)
.reply(mockContent.response.statusCode, () => mockContent.response.body);
break;
default:
throw new Error("unknown method");
}
}
export default async () => {
nock.disableNetConnect();
await initBackendMocks();
};
//# sourceMappingURL=bridgeSetupUseMocks.js.map