stub-azure-function-context
Version:
Provides an object similar to Function Runtime's context for use in unit testing
49 lines • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.functionRunner = functionRunner;
const context_builder_1 = require("./context-builder");
const utils_1 = require("./utils");
async function functionRunner(azFunction, bindingDefinitions = [], bindingData = {}, augmentContext) {
return new Promise((resolve, reject) => {
const resolver = (err, result) => {
if (err) {
reject(err);
}
else {
resolve(result);
}
};
const context = (0, context_builder_1.createContextForFunction)(azFunction, bindingDefinitions, bindingData, resolver);
if (augmentContext) {
augmentContext(context);
}
const { trigger, inputs, outputs } = (0, utils_1.extractBindings)(context.bindingDefinitions);
const triggerData = trigger ? bindingData[trigger.name]?.toTrigger() : undefined;
const inputBindings = inputs.reduce((bindings, { name }) => {
const binding = bindingData[name];
if (binding) {
return {
...bindings,
[name]: binding.toContextBinding(),
};
}
return bindings;
}, {});
try {
Promise.resolve(azFunction(context, ...[triggerData, ...Object.values(inputBindings)].filter((val) => !!val)))
.then((output) => {
if (outputs.some(({ name }) => name === '$return')) {
context.done(null, output);
}
else {
context.done(null, context.bindings);
}
})
.catch(context.done);
}
catch (e) {
context.done(e);
}
});
}
//# sourceMappingURL=function-runner.js.map