@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
47 lines • 2.16 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable no-console */
const axios_1 = __importDefault(require("axios"));
const fs_1 = require("fs");
/* Creates a mock file from registered request */
async function createMock(stdRequest, path) {
// usual instance has errors managed by live-network lib
const uninterceptedAxiosInstance = axios_1.default.create();
const createMockFile = async (resp) => {
// TODO: replace file fully, erase to 0 before
return await fs_1.promises.writeFile(path, JSON.stringify({
request: { url: stdRequest.url, method: stdRequest.method },
response: { statusCode: resp.statusCode, body: resp?.data },
}), { flag: "wx" });
};
return uninterceptedAxiosInstance({
method: stdRequest.method,
url: stdRequest.url,
data: stdRequest.body,
headers: stdRequest.headers,
timeout: 1 * 60 * 1000,
}).then(response => createMockFile(response), error => createMockFile(error.response));
}
exports.default = (async function () {
global.bridgeTestsObserver.disconnect();
const dir = __dirname + "/bridgeMocks";
const knownUrls = [];
const filteredRequests = [];
// TODO: This will change with POST parameters support, we will need to manage multiple requests types
for (const req of global.bridgeTestsRequests) {
if (!knownUrls.includes(req.url)) {
knownUrls.push(req.url);
filteredRequests.push(req);
}
}
console.log(`Starting mock file creation : ${filteredRequests.length} different network calls`);
const mockCreations = filteredRequests.map(request => createMock(request, `${dir}/${request.fileName}.json`));
await Promise.allSettled(mockCreations).then(result => {
console.log(`${result.filter(r => r.status === "fulfilled").length} new mocks !`);
});
console.log("Finished mock file creation");
});
//# sourceMappingURL=bridgeTeardownUpdateMocks.js.map