in apps/mountebank-mock/mountebank-source/src/controllers/impostersController.js [172:210]
async function put (request, response) {
const requestImposters = request.body.imposters || [],
validationPromises = requestImposters.map(imposter => validate(imposter));
logger.debug(requestDetails(request));
if (!('imposters' in request.body)) {
respondWithValidationErrors(response, [
exceptions.ValidationError("'imposters' is a required field")
]);
return false;
}
const validations = await Promise.all(validationPromises),
isValid = validations.every(validation => validation.isValid);
if (!isValid) {
const validationErrors = validations.reduce((accumulator, validation) => accumulator.concat(validation.errors), []);
respondWithValidationErrors(response, validationErrors);
return false;
}
await imposters.deleteAll();
try {
const creationPromises = requestImposters.map(imposter =>
protocols[imposter.protocol].createImposterFrom(imposter)
),
allImposters = await Promise.all(creationPromises);
await Promise.all(allImposters.map(imposters.add));
const promises = allImposters.map(imposter => imposter.toJSON({ list: true })),
json = await Promise.all(promises);
response.send({ imposters: json });
}
catch (error) {
respondWithCreationError(response, error);
}
return true;
}