UNPKG

ng-apimock-with-presets

Version:

An ng-apimock fork with preset functionality

165 lines 9 kB
"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