@usebruno/cli
Version:
With Bruno CLI, you can now run your API collections with ease using simple command line commands.
74 lines (64 loc) • 1.93 kB
JavaScript
const { walkAndMask } = require('@usebruno/common/runner');
/**
* Return a sanitized deep copy of runner results with comprehensive masking applied.
*/
function sanitizeRunnerResults(runnerResults = [], maskingOptions = {}) {
if (!Array.isArray(runnerResults)) return runnerResults;
return runnerResults.map(
({ iterationIndex, results, summary, iterationData }) => {
const sanitizedResults = Array.isArray(results)
? results.map((result) => {
return walkAndMask(result, {
secretValues: maskingOptions.secretValues
});
})
: results;
return {
iterationIndex,
iterationData,
results: sanitizedResults,
summary
};
}
);
}
const deleteHeaderIfExists = (headers, header) => {
Object.keys(headers).forEach((key) => {
if (key.toLowerCase() === header.toLowerCase()) {
delete headers[key];
}
});
};
const sanitizeResultsForReporter = (results, { skipAllHeaders = false, skipHeaders = [], skipRequestBody = false, skipResponseBody = false } = {}) => {
if (skipAllHeaders) {
results.forEach((result) => {
result.request.headers = {};
result.response.headers = {};
});
}
if (skipHeaders?.length) {
results.forEach((result) => {
if (result.request?.headers) {
skipHeaders.forEach((header) => {
deleteHeaderIfExists(result.request.headers, header);
});
}
if (result.response?.headers) {
skipHeaders.forEach((header) => {
deleteHeaderIfExists(result.response.headers, header);
});
}
});
}
if (skipRequestBody) {
results.forEach((result) => {
delete result.request?.data;
});
}
if (skipResponseBody) {
results.forEach((result) => {
delete result.response?.data;
});
}
};
module.exports = { sanitizeRunnerResults, sanitizeResultsForReporter };