UNPKG

postman-sandbox

Version:

Sandbox for Postman Scripts to run in Node.js or browser

84 lines (68 loc) 2.71 kB
const _ = require('lodash'), bootcode = require('./bootcode'), PostmanSandbox = require('./postman-sandbox'), PostmanSandboxFleet = require('./postman-sandbox-fleet'), INIT_OPTIONS_AVAILABLE = ['disableLegacyAPIs', 'disabledAPIs', 'template', 'templates', 'chaiPlugin']; module.exports = { /** * Creates a new instance of sandbox from the options that have been provided * * @param {Object=} [options] - * @param {Function} callback - */ createContext (options, callback) { if (_.isFunction(options) && !callback) { callback = options; options = {}; } const initOptions = _.pick(options, INIT_OPTIONS_AVAILABLE), connectOptions = _.omit(options, INIT_OPTIONS_AVAILABLE); bootcode((err, code) => { if (err) { return callback(err); } if (!code) { return callback(new Error('sandbox: bootcode missing!')); } connectOptions.bootCode = code; // assign the code in connect options new PostmanSandbox().initialize(initOptions, connectOptions, callback); }); }, /** * Creates a new instance of sandbox fleet based on the give templates * * @param {PostmanSandboxFleet.templateRegistry} registry - * @param {PostmanSandboxFleet.initOptions} [initOptions] - * @param {PostmanSandboxFleet.connectOptions} [connectOptions] - * @param {Function} callback - */ createContextFleet (registry, initOptions, connectOptions, callback) { if (typeof initOptions === 'function') { callback = initOptions; initOptions = null; connectOptions = null; } else if (typeof connectOptions === 'function') { callback = connectOptions; connectOptions = null; } if (typeof callback !== 'function') { return callback(new TypeError('sandbox: callback must be a function')); } if (!_.isObject(initOptions)) { initOptions = {}; } if (!_.isObject(connectOptions)) { connectOptions = {}; } connectOptions = _.clone(connectOptions); bootcode((err, code) => { if (err) { return callback(err); } if (!code) { return callback(new Error('sandbox: bootcode missing!')); } connectOptions.bootCode = code; try { const sandboxFleet = new PostmanSandboxFleet(registry, initOptions, connectOptions); return callback(null, sandboxFleet); } catch (err) { return callback(err); } }); } };