postman-sandbox
Version:
Sandbox for Postman Scripts to run in Node.js or browser
84 lines (68 loc) • 2.71 kB
JavaScript
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);
}
});
}
};