ng-apimock-with-presets
Version:
An ng-apimock fork with preset functionality
165 lines • 9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var http_1 = require("./http");
var getPresetsHandler_1 = require("./api/presets/getPresetsHandler");
var addOrUpdateVariableHandler_1 = require("./api/variables/protractor/addOrUpdateVariableHandler");
var applyPresetHandler_1 = require("./api/presets/protractor/applyPresetHandler");
var deleteVariableHandler_1 = require("./api/variables/protractor/deleteVariableHandler");
var getMocksHandler_1 = require("./api/mocks/protractor/getMocksHandler");
var getVariablesHandler_1 = require("./api/variables/protractor/getVariablesHandler");
var ngApimockHandler_1 = require("./protractor/ngApimockHandler");
var recordResponseHandler_1 = require("./api/mocks/protractor/recordResponseHandler");
var resetMocksToDefaultsHandler_1 = require("./api/mocks/protractor/resetMocksToDefaultsHandler");
var setMocksToPassThroughsHandler_1 = require("./api/mocks/protractor/setMocksToPassThroughsHandler");
var updateMockHandler_1 = require("./api/mocks/protractor/updateMockHandler");
var registry_1 = require("./registry");
var addOrUpdateVariableHandler_2 = require("./api/variables/runtime/addOrUpdateVariableHandler");
var applyPresetHandler_2 = require("./api/presets/runtime/applyPresetHandler");
var deleteVariableHandler_2 = require("./api/variables/runtime/deleteVariableHandler");
var getMocksHandler_2 = require("./api/mocks/runtime/getMocksHandler");
var getVariablesHandler_2 = require("./api/variables/runtime/getVariablesHandler");
var ngApimockHandler_2 = require("./runtime/ngApimockHandler");
var recordResponseHandler_2 = require("./api/mocks/runtime/recordResponseHandler");
var resetMocksToDefaultsHandler_2 = require("./api/mocks/runtime/resetMocksToDefaultsHandler");
var setMocksToPassThroughsHandler_2 = require("./api/mocks/runtime/setMocksToPassThroughsHandler");
var updateMockHandler_2 = require("./api/mocks/runtime/updateMockHandler");
var DELETE = http_1.httpMethods.DELETE;
var PUT = http_1.httpMethods.PUT;
var GET = http_1.httpMethods.GET;
(function () {
'use strict';
(module).exports = {
ngApimockRequest: ngApimockRequest,
registerMocks: registerMocks,
registerPresets: registerPresets,
updateMock: updateMock
};
var registry = new registry_1.default(), handlers = {
protractor: {
updateMockHandler: new updateMockHandler_1.default(),
getMocksHandler: new getMocksHandler_1.default(),
resetMocksToDefaultsHandler: new resetMocksToDefaultsHandler_1.default(),
setMocksToPassThroughsHandler: new setMocksToPassThroughsHandler_1.default(),
recordResponseHandler: new recordResponseHandler_1.default(),
getPresetsHandler: new getPresetsHandler_1.default(),
applyPresetHandler: new applyPresetHandler_1.default(),
addOrUpdateVariableHandler: new addOrUpdateVariableHandler_1.default(),
getVariablesHandler: new getVariablesHandler_1.default(),
deleteVariableHandler: new deleteVariableHandler_1.default(),
ngApimockHandler: new ngApimockHandler_1.default()
},
runtime: {
updateMockHandler: new updateMockHandler_2.default(),
getMocksHandler: new getMocksHandler_2.default(),
resetMocksToDefaultsHandler: new resetMocksToDefaultsHandler_2.default(),
setMocksToPassThroughsHandler: new setMocksToPassThroughsHandler_2.default(),
recordResponseHandler: new recordResponseHandler_2.default(),
getPresetsHandler: new getPresetsHandler_1.default(),
applyPresetHandler: new applyPresetHandler_2.default(),
addOrUpdateVariableHandler: new addOrUpdateVariableHandler_2.default(),
getVariablesHandler: new getVariablesHandler_2.default(),
deleteVariableHandler: new deleteVariableHandler_2.default(),
ngApimockHandler: new ngApimockHandler_2.default()
}
};
function ngApimockRequest(request, response, next) {
var ngapimockId = _ngApimockId(request.headers), type = ngapimockId !== undefined ? 'protractor' : 'runtime';
if (request.url === '/ngapimock/mocks/record' && request.method === PUT) {
handlers[type].recordResponseHandler.handleRequest(request, response, next, registry, ngapimockId);
}
else if (request.url === '/ngapimock/mocks' && request.method === GET) {
handlers[type].getMocksHandler.handleRequest(request, response, next, registry, ngapimockId);
}
else if (request.url === '/ngapimock/mocks' && request.method === PUT) {
handlers[type].updateMockHandler.handleRequest(request, response, next, registry, ngapimockId);
}
else if (request.url === '/ngapimock/mocks/defaults' && request.method === PUT) {
handlers[type].resetMocksToDefaultsHandler.handleRequest(request, response, next, registry, ngapimockId);
}
else if (request.url === '/ngapimock/mocks/passthroughs' && request.method === PUT) {
handlers[type].setMocksToPassThroughsHandler.handleRequest(request, response, next, registry, ngapimockId);
}
else if (request.url === '/ngapimock/presets' && request.method === GET) {
handlers[type].getPresetsHandler.handleRequest(request, response, next, registry);
}
else if (request.url === '/ngapimock/presets' && request.method === PUT) {
handlers[type].applyPresetHandler.handleRequest(request, response, next, registry, ngapimockId);
}
else if (request.url === '/ngapimock/variables' && request.method === GET) {
handlers[type].getVariablesHandler.handleRequest(request, response, next, registry, ngapimockId);
}
else if (request.url === '/ngapimock/variables' && request.method === PUT) {
handlers[type].addOrUpdateVariableHandler.handleRequest(request, response, next, registry, ngapimockId);
}
else if (new RegExp('/ngapimock/variables/.*').exec(request.url) !== null && request.method === DELETE) {
handlers[type].deleteVariableHandler.handleRequest(request, response, next, registry, ngapimockId);
}
else {
handlers[type].ngApimockHandler.handleRequest(request, response, next, registry, ngapimockId);
}
}
function registerMocks(mocks) {
mocks.forEach(function (mock) {
return _handleMock(mock, "Mock with identifier '%s' already exists. Overwriting existing mock.");
});
}
function registerPresets(presets) {
presets.forEach(function (preset) {
return _handlePreset(preset, "Preset with identifier '%s' already exists. Overwriting existing preset.");
});
}
function updateMock(mock) {
_handleMock(mock, "Mock with identifier '%s' already exists. Updating existing mock.");
}
function _handleMock(mock, warning) {
mock.identifier = (mock.name ? mock.name : mock.expression.toString() + '$$' + mock.method);
var match = registry.mocks.filter(function (_mock) { return mock.identifier === _mock.identifier; })[0], index = registry.mocks.indexOf(match);
if (index > -1) {
console.warn(warning, mock.identifier);
registry.mocks[index] = mock;
}
else {
registry.mocks.push(mock);
}
var _default = Object.keys(mock.responses).filter(function (key) { return !!mock.responses[key]['default']; })[0];
if (_default !== undefined) {
registry.defaults[mock.identifier] = _default;
registry.selections[mock.identifier] = _default;
}
}
function _handlePreset(preset, warning) {
var match = registry.presets.filter(function (_preset) { return preset.name === _preset.name; })[0], index = registry.presets.indexOf(match);
if (index > -1) {
console.warn(warning, preset.name);
registry.presets[index] = preset;
}
else {
registry.presets.push(preset);
}
}
function _ngApimockId(headers) {
var ngApimockId;
var header = headers.ngapimockid, cookie = _getNgApimockIdCookie(headers.cookie);
if (header !== undefined) {
ngApimockId = header;
}
else if (cookie !== undefined) {
ngApimockId = cookie;
}
return ngApimockId;
}
function _getNgApimockIdCookie(cookies) {
return cookies && cookies
.split(';')
.map(function (cookie) {
var parts = cookie.split('=');
return {
key: parts.shift().trim(),
value: decodeURI(parts.join('='))
};
})
.filter(function (cookie) { return cookie.key === 'ngapimockid'; })
.map(function (cookie) { return cookie.value; })[0];
}
})();
//# sourceMappingURL=utils.js.map