axios-mock-adapter
Advanced tools
Comparing version 1.15.0 to 1.16.0
@@ -10,3 +10,3 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
root["AxiosMockAdapter"] = factory(root["axios"]); | ||
})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_6__) { | ||
})(window, function(__WEBPACK_EXTERNAL_MODULE_axios__) { | ||
return /******/ (function(modules) { // webpackBootstrap | ||
@@ -50,10 +50,30 @@ /******/ // The module cache | ||
/******/ if(!__webpack_require__.o(exports, name)) { | ||
/******/ Object.defineProperty(exports, name, { | ||
/******/ configurable: false, | ||
/******/ enumerable: true, | ||
/******/ get: getter | ||
/******/ }); | ||
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); | ||
/******/ } | ||
/******/ }; | ||
/******/ | ||
/******/ // define __esModule on exports | ||
/******/ __webpack_require__.r = function(exports) { | ||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { | ||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); | ||
/******/ } | ||
/******/ Object.defineProperty(exports, '__esModule', { value: true }); | ||
/******/ }; | ||
/******/ | ||
/******/ // create a fake namespace object | ||
/******/ // mode & 1: value is a module id, require it | ||
/******/ // mode & 2: merge all properties of value into the ns | ||
/******/ // mode & 4: return value when already ns object | ||
/******/ // mode & 8|1: behave like require | ||
/******/ __webpack_require__.t = function(value, mode) { | ||
/******/ if(mode & 1) value = __webpack_require__(value); | ||
/******/ if(mode & 8) return value; | ||
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; | ||
/******/ var ns = Object.create(null); | ||
/******/ __webpack_require__.r(ns); | ||
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); | ||
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); | ||
/******/ return ns; | ||
/******/ }; | ||
/******/ | ||
/******/ // getDefaultExport function for compatibility with non-harmony modules | ||
@@ -74,544 +94,90 @@ /******/ __webpack_require__.n = function(module) { | ||
/******/ | ||
/******/ | ||
/******/ // Load entry module and return exports | ||
/******/ return __webpack_require__(__webpack_require__.s = 1); | ||
/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js"); | ||
/******/ }) | ||
/************************************************************************/ | ||
/******/ ([ | ||
/* 0 */ | ||
/******/ ({ | ||
/***/ "./node_modules/deep-equal/index.js": | ||
/*!******************************************!*\ | ||
!*** ./node_modules/deep-equal/index.js ***! | ||
\******************************************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
var pSlice = Array.prototype.slice; | ||
var objectKeys = __webpack_require__(2); | ||
var isArguments = __webpack_require__(3); | ||
eval("var pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(/*! ./lib/keys.js */ \"./node_modules/deep-equal/lib/keys.js\");\nvar isArguments = __webpack_require__(/*! ./lib/is_arguments.js */ \"./node_modules/deep-equal/lib/is_arguments.js\");\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n//# sourceURL=webpack://AxiosMockAdapter/./node_modules/deep-equal/index.js?"); | ||
var deepEqual = module.exports = function (actual, expected, opts) { | ||
if (!opts) opts = {}; | ||
// 7.1. All identical values are equivalent, as determined by ===. | ||
if (actual === expected) { | ||
return true; | ||
/***/ }), | ||
} else if (actual instanceof Date && expected instanceof Date) { | ||
return actual.getTime() === expected.getTime(); | ||
/***/ "./node_modules/deep-equal/lib/is_arguments.js": | ||
/*!*****************************************************!*\ | ||
!*** ./node_modules/deep-equal/lib/is_arguments.js ***! | ||
\*****************************************************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports) { | ||
// 7.3. Other pairs that do not both pass typeof value == 'object', | ||
// equivalence is determined by ==. | ||
} else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') { | ||
return opts.strict ? actual === expected : actual == expected; | ||
eval("var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n//# sourceURL=webpack://AxiosMockAdapter/./node_modules/deep-equal/lib/is_arguments.js?"); | ||
// 7.4. For all other Object pairs, including Array objects, equivalence is | ||
// determined by having the same number of owned properties (as verified | ||
// with Object.prototype.hasOwnProperty.call), the same set of keys | ||
// (although not necessarily the same order), equivalent values for every | ||
// corresponding key, and an identical 'prototype' property. Note: this | ||
// accounts for both named and indexed properties on Arrays. | ||
} else { | ||
return objEquiv(actual, expected, opts); | ||
} | ||
} | ||
/***/ }), | ||
function isUndefinedOrNull(value) { | ||
return value === null || value === undefined; | ||
} | ||
/***/ "./node_modules/deep-equal/lib/keys.js": | ||
/*!*********************************************!*\ | ||
!*** ./node_modules/deep-equal/lib/keys.js ***! | ||
\*********************************************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports) { | ||
function isBuffer (x) { | ||
if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false; | ||
if (typeof x.copy !== 'function' || typeof x.slice !== 'function') { | ||
return false; | ||
} | ||
if (x.length > 0 && typeof x[0] !== 'number') return false; | ||
return true; | ||
} | ||
eval("exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n//# sourceURL=webpack://AxiosMockAdapter/./node_modules/deep-equal/lib/keys.js?"); | ||
function objEquiv(a, b, opts) { | ||
var i, key; | ||
if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) | ||
return false; | ||
// an identical 'prototype' property. | ||
if (a.prototype !== b.prototype) return false; | ||
//~~~I've managed to break Object.keys through screwy arguments passing. | ||
// Converting to array solves the problem. | ||
if (isArguments(a)) { | ||
if (!isArguments(b)) { | ||
return false; | ||
} | ||
a = pSlice.call(a); | ||
b = pSlice.call(b); | ||
return deepEqual(a, b, opts); | ||
} | ||
if (isBuffer(a)) { | ||
if (!isBuffer(b)) { | ||
return false; | ||
} | ||
if (a.length !== b.length) return false; | ||
for (i = 0; i < a.length; i++) { | ||
if (a[i] !== b[i]) return false; | ||
} | ||
return true; | ||
} | ||
try { | ||
var ka = objectKeys(a), | ||
kb = objectKeys(b); | ||
} catch (e) {//happens when one is a string literal and the other isn't | ||
return false; | ||
} | ||
// having the same number of owned properties (keys incorporates | ||
// hasOwnProperty) | ||
if (ka.length != kb.length) | ||
return false; | ||
//the same set of keys (although not necessarily the same order), | ||
ka.sort(); | ||
kb.sort(); | ||
//~~~cheap key test | ||
for (i = ka.length - 1; i >= 0; i--) { | ||
if (ka[i] != kb[i]) | ||
return false; | ||
} | ||
//equivalent values for every corresponding key, and | ||
//~~~possibly expensive deep test | ||
for (i = ka.length - 1; i >= 0; i--) { | ||
key = ka[i]; | ||
if (!deepEqual(a[key], b[key], opts)) return false; | ||
} | ||
return typeof a === typeof b; | ||
} | ||
/***/ }), | ||
/***/ }), | ||
/* 1 */ | ||
/***/ "./src/handle_request.js": | ||
/*!*******************************!*\ | ||
!*** ./src/handle_request.js ***! | ||
\*******************************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n\nfunction makeResponse(result, config) {\n return {\n status: result[0],\n data: utils.isSimpleObject(result[1]) ? JSON.parse(JSON.stringify(result[1])) : result[1],\n headers: result[2],\n config: config\n };\n}\n\nfunction handleRequest(mockAdapter, resolve, reject, config) {\n var url = config.url;\n if (config.baseURL && config.url.substr(0, config.baseURL.length) === config.baseURL) {\n url = config.url.slice(config.baseURL ? config.baseURL.length : 0);\n }\n\n delete config.adapter;\n mockAdapter.history[config.method].push(config);\n\n var handler = utils.findHandler(\n mockAdapter.handlers,\n config.method,\n url,\n config.data,\n config.params,\n config.headers,\n config.baseURL\n );\n\n if (handler) {\n if (handler.length === 7) {\n utils.purgeIfReplyOnce(mockAdapter, handler);\n }\n\n if (handler.length === 2) {\n // passThrough handler\n // tell axios to use the original adapter instead of our mock, fixes #35\n config.adapter = mockAdapter.originalAdapter;\n mockAdapter.axiosInstance.request(config).then(resolve, reject);\n } else if (typeof handler[3] !== 'function') {\n utils.settle(\n resolve,\n reject,\n makeResponse(handler.slice(3), config),\n mockAdapter.delayResponse\n );\n } else {\n var result = handler[3](config);\n // TODO throw a sane exception when return value is incorrect\n if (typeof result.then !== 'function') {\n utils.settle(resolve, reject, makeResponse(result, config), mockAdapter.delayResponse);\n } else {\n result.then(\n function(result) {\n if (result.config && result.status) {\n utils.settle(resolve, reject, makeResponse([result.status, result.data, result.headers], result.config), 0);\n } else {\n utils.settle(resolve, reject, makeResponse(result, config), mockAdapter.delayResponse);\n }\n },\n function(error) {\n if (mockAdapter.delayResponse > 0) {\n setTimeout(function() {\n reject(error);\n }, mockAdapter.delayResponse);\n } else {\n reject(error);\n }\n }\n );\n }\n }\n } else {\n // handler not found\n utils.settle(\n resolve,\n reject,\n {\n status: 404,\n config: config\n },\n mockAdapter.delayResponse\n );\n }\n}\n\nmodule.exports = handleRequest;\n\n\n//# sourceURL=webpack://AxiosMockAdapter/./src/handle_request.js?"); | ||
var deepEqual = __webpack_require__(0); | ||
var handleRequest = __webpack_require__(4); | ||
var VERBS = ['get', 'post', 'head', 'delete', 'patch', 'put', 'options']; | ||
function adapter() { | ||
return function(config) { | ||
var mockAdapter = this; | ||
// axios >= 0.13.0 only passes the config and expects a promise to be | ||
// returned. axios < 0.13.0 passes (config, resolve, reject). | ||
if (arguments.length === 3) { | ||
handleRequest(mockAdapter, arguments[0], arguments[1], arguments[2]); | ||
} else { | ||
return new Promise(function(resolve, reject) { | ||
handleRequest(mockAdapter, resolve, reject, config); | ||
}); | ||
} | ||
}.bind(this); | ||
} | ||
function getVerbObject() { | ||
return VERBS.reduce(function(accumulator, verb) { | ||
accumulator[verb] = []; | ||
return accumulator; | ||
}, {}); | ||
} | ||
function reset() { | ||
resetHandlers.call(this); | ||
resetHistory.call(this); | ||
} | ||
function resetHandlers() { | ||
this.handlers = getVerbObject(); | ||
} | ||
function resetHistory() { | ||
this.history = getVerbObject(); | ||
} | ||
function MockAdapter(axiosInstance, options) { | ||
reset.call(this); | ||
if (axiosInstance) { | ||
this.axiosInstance = axiosInstance; | ||
this.originalAdapter = axiosInstance.defaults.adapter; | ||
this.delayResponse = options && options.delayResponse > 0 ? options.delayResponse : null; | ||
axiosInstance.defaults.adapter = this.adapter.call(this); | ||
} | ||
} | ||
MockAdapter.prototype.adapter = adapter; | ||
MockAdapter.prototype.restore = function restore() { | ||
if (this.axiosInstance) { | ||
this.axiosInstance.defaults.adapter = this.originalAdapter; | ||
} | ||
}; | ||
MockAdapter.prototype.reset = reset; | ||
MockAdapter.prototype.resetHandlers = resetHandlers; | ||
MockAdapter.prototype.resetHistory = resetHistory; | ||
VERBS.concat('any').forEach(function(method) { | ||
var methodName = 'on' + method.charAt(0).toUpperCase() + method.slice(1); | ||
MockAdapter.prototype[methodName] = function(matcher, body, requestHeaders) { | ||
var _this = this; | ||
var matcher = matcher === undefined ? /.*/ : matcher; | ||
function reply(code, response, headers) { | ||
var handler = [matcher, body, requestHeaders, code, response, headers]; | ||
addHandler(method, _this.handlers, handler); | ||
return _this; | ||
} | ||
return { | ||
reply: reply, | ||
replyOnce: function replyOnce(code, response, headers) { | ||
var handler = [matcher, body, requestHeaders, code, response, headers, true]; | ||
addHandler(method, _this.handlers, handler); | ||
return _this; | ||
}, | ||
passThrough: function passThrough() { | ||
var handler = [matcher, body]; | ||
addHandler(method, _this.handlers, handler); | ||
return _this; | ||
}, | ||
networkError: function() { | ||
reply(function(config) { | ||
var error = new Error('Network Error'); | ||
error.config = config; | ||
return Promise.reject(error); | ||
}); | ||
}, | ||
timeout: function() { | ||
reply(function(config) { | ||
var error = new Error('timeout of ' + config.timeout + 'ms exceeded'); | ||
error.config = config; | ||
error.code = 'ECONNABORTED'; | ||
return Promise.reject(error); | ||
}); | ||
} | ||
}; | ||
}; | ||
}); | ||
function findInHandlers(method, handlers, handler) { | ||
var index = -1; | ||
for (var i = 0; i < handlers[method].length; i += 1) { | ||
var item = handlers[method][i]; | ||
var isReplyOnce = item.length === 7; | ||
var comparePaths = item[0] instanceof RegExp && handler[0] instanceof RegExp | ||
? String(item[0]) === String(handler[0]) | ||
: item[0] === handler[0]; | ||
var isSame = ( | ||
comparePaths && | ||
deepEqual(item[1], handler[1], { strict: true }) && | ||
deepEqual(item[2], handler[2], { strict: true }) | ||
); | ||
if (isSame && !isReplyOnce) { | ||
index = i; | ||
} | ||
} | ||
return index; | ||
} | ||
function addHandler(method, handlers, handler) { | ||
if (method === 'any') { | ||
VERBS.forEach(function(verb) { | ||
handlers[verb].push(handler); | ||
}); | ||
} else { | ||
var indexOfExistingHandler = findInHandlers(method, handlers, handler); | ||
if (indexOfExistingHandler > -1 && handler.length < 7) { | ||
handlers[method].splice(indexOfExistingHandler, 1, handler); | ||
} else { | ||
handlers[method].push(handler); | ||
} | ||
} | ||
} | ||
module.exports = MockAdapter; | ||
module.exports.default = MockAdapter; | ||
/***/ }), | ||
/* 2 */ | ||
/***/ (function(module, exports) { | ||
exports = module.exports = typeof Object.keys === 'function' | ||
? Object.keys : shim; | ||
/***/ "./src/index.js": | ||
/*!**********************!*\ | ||
!*** ./src/index.js ***! | ||
\**********************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
exports.shim = shim; | ||
function shim (obj) { | ||
var keys = []; | ||
for (var key in obj) keys.push(key); | ||
return keys; | ||
} | ||
"use strict"; | ||
eval("\n\nvar deepEqual = __webpack_require__(/*! deep-equal */ \"./node_modules/deep-equal/index.js\");\n\nvar handleRequest = __webpack_require__(/*! ./handle_request */ \"./src/handle_request.js\");\n\nvar VERBS = ['get', 'post', 'head', 'delete', 'patch', 'put', 'options', 'list'];\n\nfunction adapter() {\n return function(config) {\n var mockAdapter = this;\n // axios >= 0.13.0 only passes the config and expects a promise to be\n // returned. axios < 0.13.0 passes (config, resolve, reject).\n if (arguments.length === 3) {\n handleRequest(mockAdapter, arguments[0], arguments[1], arguments[2]);\n } else {\n return new Promise(function(resolve, reject) {\n handleRequest(mockAdapter, resolve, reject, config);\n });\n }\n }.bind(this);\n}\n\nfunction getVerbObject() {\n return VERBS.reduce(function(accumulator, verb) {\n accumulator[verb] = [];\n return accumulator;\n }, {});\n}\n\nfunction reset() {\n resetHandlers.call(this);\n resetHistory.call(this);\n}\n\nfunction resetHandlers() {\n this.handlers = getVerbObject();\n}\n\nfunction resetHistory() {\n this.history = getVerbObject();\n}\n\nfunction MockAdapter(axiosInstance, options) {\n reset.call(this);\n\n if (axiosInstance) {\n this.axiosInstance = axiosInstance;\n this.originalAdapter = axiosInstance.defaults.adapter;\n this.delayResponse = options && options.delayResponse > 0 ? options.delayResponse : null;\n axiosInstance.defaults.adapter = this.adapter.call(this);\n }\n}\n\nMockAdapter.prototype.adapter = adapter;\n\nMockAdapter.prototype.restore = function restore() {\n if (this.axiosInstance) {\n this.axiosInstance.defaults.adapter = this.originalAdapter;\n }\n};\n\nMockAdapter.prototype.reset = reset;\nMockAdapter.prototype.resetHandlers = resetHandlers;\nMockAdapter.prototype.resetHistory = resetHistory;\n\nVERBS.concat('any').forEach(function(method) {\n var methodName = 'on' + method.charAt(0).toUpperCase() + method.slice(1);\n MockAdapter.prototype[methodName] = function(matcher, body, requestHeaders) {\n var _this = this;\n var matcher = matcher === undefined ? /.*/ : matcher;\n\n function reply(code, response, headers) {\n var handler = [matcher, body, requestHeaders, code, response, headers];\n addHandler(method, _this.handlers, handler);\n return _this;\n }\n\n function replyOnce(code, response, headers) {\n var handler = [matcher, body, requestHeaders, code, response, headers, true];\n addHandler(method, _this.handlers, handler);\n return _this;\n }\n\n return {\n reply: reply,\n\n replyOnce: replyOnce,\n\n passThrough: function passThrough() {\n var handler = [matcher, body];\n addHandler(method, _this.handlers, handler);\n return _this;\n },\n\n networkError: function() {\n reply(function(config) {\n var error = new Error('Network Error');\n error.config = config;\n return Promise.reject(error);\n });\n },\n\n networkErrorOnce: function() {\n replyOnce(function(config) {\n var error = new Error('Network Error');\n error.config = config;\n return Promise.reject(error);\n });\n },\n\n timeout: function() {\n reply(function(config) {\n var error = new Error('timeout of ' + config.timeout + 'ms exceeded');\n error.config = config;\n error.code = 'ECONNABORTED';\n return Promise.reject(error);\n });\n },\n\n timeoutOnce: function() {\n replyOnce(function(config) {\n var error = new Error('timeout of ' + config.timeout + 'ms exceeded');\n error.config = config;\n error.code = 'ECONNABORTED';\n return Promise.reject(error);\n });\n }\n };\n };\n});\n\nfunction findInHandlers(method, handlers, handler) {\n var index = -1;\n for (var i = 0; i < handlers[method].length; i += 1) {\n var item = handlers[method][i];\n var isReplyOnce = item.length === 7;\n var comparePaths = item[0] instanceof RegExp && handler[0] instanceof RegExp\n ? String(item[0]) === String(handler[0])\n : item[0] === handler[0];\n var isSame = (\n comparePaths &&\n deepEqual(item[1], handler[1], { strict: true }) &&\n deepEqual(item[2], handler[2], { strict: true })\n );\n if (isSame && !isReplyOnce) {\n index = i;\n }\n }\n return index;\n}\n\nfunction addHandler(method, handlers, handler) {\n if (method === 'any') {\n VERBS.forEach(function(verb) {\n handlers[verb].push(handler);\n });\n } else {\n var indexOfExistingHandler = findInHandlers(method, handlers, handler);\n if (indexOfExistingHandler > -1 && handler.length < 7) {\n handlers[method].splice(indexOfExistingHandler, 1, handler);\n } else {\n handlers[method].push(handler);\n }\n }\n}\n\nmodule.exports = MockAdapter;\nmodule.exports.default = MockAdapter;\n\n\n//# sourceURL=webpack://AxiosMockAdapter/./src/index.js?"); | ||
/***/ }), | ||
/* 3 */ | ||
/***/ (function(module, exports) { | ||
var supportsArgumentsClass = (function(){ | ||
return Object.prototype.toString.call(arguments) | ||
})() == '[object Arguments]'; | ||
exports = module.exports = supportsArgumentsClass ? supported : unsupported; | ||
exports.supported = supported; | ||
function supported(object) { | ||
return Object.prototype.toString.call(object) == '[object Arguments]'; | ||
}; | ||
exports.unsupported = unsupported; | ||
function unsupported(object){ | ||
return object && | ||
typeof object == 'object' && | ||
typeof object.length == 'number' && | ||
Object.prototype.hasOwnProperty.call(object, 'callee') && | ||
!Object.prototype.propertyIsEnumerable.call(object, 'callee') || | ||
false; | ||
}; | ||
/***/ }), | ||
/* 4 */ | ||
/***/ "./src/utils.js": | ||
/*!**********************!*\ | ||
!*** ./src/utils.js ***! | ||
\**********************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
eval("\n\nvar axios = __webpack_require__(/*! axios */ \"axios\");\nvar deepEqual = __webpack_require__(/*! deep-equal */ \"./node_modules/deep-equal/index.js\");\n\nfunction isEqual(a, b) {\n return deepEqual(a, b, { strict: true });\n}\n\n// < 0.13.0 will not have default headers set on a custom instance\nvar rejectWithError = !!axios.create().defaults.headers;\n\nfunction find(array, predicate) {\n var length = array.length;\n for (var i = 0; i < length; i++) {\n var value = array[i];\n if (predicate(value)) return value;\n }\n}\n\nfunction combineUrls(baseURL, url) {\n if (baseURL) {\n return baseURL.replace(/\\/+$/, '') + '/' + url.replace(/^\\/+/, '');\n }\n\n return url;\n}\n\nfunction findHandler(handlers, method, url, body, parameters, headers, baseURL) {\n return find(handlers[method.toLowerCase()], function(handler) {\n if (typeof handler[0] === 'string') {\n return (isUrlMatching(url, handler[0]) || isUrlMatching(combineUrls(baseURL, url), handler[0])) && isBodyOrParametersMatching(method, body, parameters, handler[1]) && isRequestHeadersMatching(headers, handler[2]);\n } else if (handler[0] instanceof RegExp) {\n return (handler[0].test(url) || handler[0].test(combineUrls(baseURL, url))) && isBodyOrParametersMatching(method, body, parameters, handler[1]) && isRequestHeadersMatching(headers, handler[2]);\n }\n });\n}\n\nfunction isUrlMatching(url, required) {\n var noSlashUrl = url[0] === '/' ? url.substr(1) : url;\n var noSlashRequired = required[0] === '/' ? required.substr(1) : required;\n return (noSlashUrl === noSlashRequired);\n}\n\nfunction isRequestHeadersMatching(requestHeaders, required) {\n if (required === undefined) return true;\n return isEqual(requestHeaders, required);\n}\n\nfunction isBodyOrParametersMatching(method, body, parameters, required) {\n var allowedParamsMethods = ['delete', 'get', 'head', 'options'];\n if (allowedParamsMethods.indexOf(method.toLowerCase()) >= 0 ) {\n var params = required ? required.params : undefined;\n return isParametersMatching(parameters, params);\n } else {\n return isBodyMatching(body, required);\n }\n}\n\nfunction isParametersMatching(parameters, required) {\n if (required === undefined) return true;\n\n return isEqual(parameters, required);\n}\n\nfunction isBodyMatching(body, requiredBody) {\n if (requiredBody === undefined) {\n return true;\n }\n var parsedBody;\n try {\n parsedBody = JSON.parse(body);\n } catch (e) { }\n return parsedBody ? isEqual(parsedBody, requiredBody) : isEqual(body, requiredBody);\n}\n\nfunction purgeIfReplyOnce(mock, handler) {\n Object.keys(mock.handlers).forEach(function(key) {\n var index = mock.handlers[key].indexOf(handler);\n if (index > -1) {\n mock.handlers[key].splice(index, 1);\n }\n });\n}\n\nfunction settle(resolve, reject, response, delay) {\n if (delay > 0) {\n setTimeout(function() {\n settle(resolve, reject, response);\n }, delay);\n return;\n }\n\n if (response.config && response.config.validateStatus) {\n response.config.validateStatus(response.status)\n ? resolve(response)\n : reject(createErrorResponse(\n 'Request failed with status code ' + response.status,\n response.config,\n response\n ));\n return;\n }\n\n // Support for axios < 0.11\n if (response.status >= 200 && response.status < 300) {\n resolve(response);\n } else {\n reject(response);\n }\n}\n\nfunction createErrorResponse(message, config, response) {\n // Support for axios < 0.13.0\n if (!rejectWithError) return response;\n\n var error = new Error(message);\n error.config = config;\n error.response = response;\n return error;\n}\n\nfunction isSimpleObject(value) {\n return value !== null && value !== undefined && value.toString() === '[object Object]';\n}\n\nmodule.exports = {\n find: find,\n findHandler: findHandler,\n isSimpleObject: isSimpleObject,\n purgeIfReplyOnce: purgeIfReplyOnce,\n settle: settle\n};\n\n\n//# sourceURL=webpack://AxiosMockAdapter/./src/utils.js?"); | ||
var utils = __webpack_require__(5); | ||
function makeResponse(result, config) { | ||
return { | ||
status: result[0], | ||
data: utils.isSimpleObject(result[1]) ? JSON.parse(JSON.stringify(result[1])) : result[1], | ||
headers: result[2], | ||
config: config | ||
}; | ||
} | ||
function handleRequest(mockAdapter, resolve, reject, config) { | ||
if (config.baseURL && config.url.substr(0, config.baseURL.length) === config.baseURL) { | ||
config.url = config.url.slice(config.baseURL ? config.baseURL.length : 0); | ||
} | ||
delete config.adapter; | ||
mockAdapter.history[config.method].push(config); | ||
var handler = utils.findHandler( | ||
mockAdapter.handlers, | ||
config.method, | ||
config.url, | ||
config.data, | ||
config.params, | ||
config.headers, | ||
config.baseURL | ||
); | ||
if (handler) { | ||
if (handler.length === 7) { | ||
utils.purgeIfReplyOnce(mockAdapter, handler); | ||
} | ||
if (handler.length === 2) { | ||
// passThrough handler | ||
// tell axios to use the original adapter instead of our mock, fixes #35 | ||
config.adapter = mockAdapter.originalAdapter; | ||
mockAdapter.axiosInstance.request(config).then(resolve, reject); | ||
} else if (!(handler[3] instanceof Function)) { | ||
utils.settle( | ||
resolve, | ||
reject, | ||
makeResponse(handler.slice(3), config), | ||
mockAdapter.delayResponse | ||
); | ||
} else { | ||
var result = handler[3](config); | ||
// TODO throw a sane exception when return value is incorrect | ||
if (!(result.then instanceof Function)) { | ||
utils.settle(resolve, reject, makeResponse(result, config), mockAdapter.delayResponse); | ||
} else { | ||
result.then( | ||
function(result) { | ||
utils.settle(resolve, reject, makeResponse(result, config), mockAdapter.delayResponse); | ||
}, | ||
function(error) { | ||
if (mockAdapter.delayResponse > 0) { | ||
setTimeout(function() { | ||
reject(error); | ||
}, mockAdapter.delayResponse); | ||
} else { | ||
reject(error); | ||
} | ||
} | ||
); | ||
} | ||
} | ||
} else { | ||
// handler not found | ||
utils.settle( | ||
resolve, | ||
reject, | ||
{ | ||
status: 404, | ||
config: config | ||
}, | ||
mockAdapter.delayResponse | ||
); | ||
} | ||
} | ||
module.exports = handleRequest; | ||
/***/ }), | ||
/* 5 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
var axios = __webpack_require__(6); | ||
var deepEqual = __webpack_require__(0); | ||
function isEqual(a, b) { | ||
return deepEqual(a, b, { strict: true }); | ||
} | ||
// < 0.13.0 will not have default headers set on a custom instance | ||
var rejectWithError = !!axios.create().defaults.headers; | ||
function find(array, predicate) { | ||
var length = array.length; | ||
for (var i = 0; i < length; i++) { | ||
var value = array[i]; | ||
if (predicate(value)) return value; | ||
} | ||
} | ||
function combineUrls(baseURL, url) { | ||
if (baseURL) { | ||
return baseURL.replace(/\/+$/, '') + '/' + url.replace(/^\/+/, ''); | ||
} | ||
return url; | ||
} | ||
function findHandler(handlers, method, url, body, parameters, headers, baseURL) { | ||
return find(handlers[method.toLowerCase()], function(handler) { | ||
if (typeof handler[0] === 'string') { | ||
return (isUrlMatching(url, handler[0]) || isUrlMatching(combineUrls(baseURL, url), handler[0])) && isBodyOrParametersMatching(method, body, parameters, handler[1]) && isRequestHeadersMatching(headers, handler[2]); | ||
} else if (handler[0] instanceof RegExp) { | ||
return (handler[0].test(url) || handler[0].test(combineUrls(baseURL, url))) && isBodyOrParametersMatching(method, body, parameters, handler[1]) && isRequestHeadersMatching(headers, handler[2]); | ||
} | ||
}); | ||
} | ||
function isUrlMatching(url, required) { | ||
var noSlashUrl = url[0] === '/' ? url.substr(1) : url; | ||
var noSlashRequired = required[0] === '/' ? required.substr(1) : required; | ||
return (noSlashUrl === noSlashRequired); | ||
} | ||
function isRequestHeadersMatching(requestHeaders, required) { | ||
if (required === undefined) return true; | ||
return isEqual(requestHeaders, required); | ||
} | ||
function isBodyOrParametersMatching(method, body, parameters, required) { | ||
var allowedParamsMethods = ['delete', 'get', 'head', 'options']; | ||
if (allowedParamsMethods.indexOf(method.toLowerCase()) >= 0 ) { | ||
var params = required ? required.params : undefined; | ||
return isParametersMatching(parameters, params); | ||
} else { | ||
return isBodyMatching(body, required); | ||
} | ||
} | ||
function isParametersMatching(parameters, required) { | ||
if (required === undefined) return true; | ||
return isEqual(parameters, required); | ||
} | ||
function isBodyMatching(body, requiredBody) { | ||
if (requiredBody === undefined) { | ||
return true; | ||
} | ||
var parsedBody; | ||
try { | ||
parsedBody = JSON.parse(body); | ||
} catch (e) { } | ||
return parsedBody ? isEqual(parsedBody, requiredBody) : isEqual(body, requiredBody); | ||
} | ||
function purgeIfReplyOnce(mock, handler) { | ||
Object.keys(mock.handlers).forEach(function(key) { | ||
var index = mock.handlers[key].indexOf(handler); | ||
if (index > -1) { | ||
mock.handlers[key].splice(index, 1); | ||
} | ||
}); | ||
} | ||
function settle(resolve, reject, response, delay) { | ||
if (delay > 0) { | ||
setTimeout(function() { | ||
settle(resolve, reject, response); | ||
}, delay); | ||
return; | ||
} | ||
if (response.config && response.config.validateStatus) { | ||
response.config.validateStatus(response.status) | ||
? resolve(response) | ||
: reject(createErrorResponse( | ||
'Request failed with status code ' + response.status, | ||
response.config, | ||
response | ||
)); | ||
return; | ||
} | ||
// Support for axios < 0.11 | ||
if (response.status >= 200 && response.status < 300) { | ||
resolve(response); | ||
} else { | ||
reject(response); | ||
} | ||
} | ||
function createErrorResponse(message, config, response) { | ||
// Support for axios < 0.13.0 | ||
if (!rejectWithError) return response; | ||
var error = new Error(message); | ||
error.config = config; | ||
error.response = response; | ||
return error; | ||
} | ||
function isSimpleObject(value) { | ||
return value !== null && value !== undefined && value.toString() === '[object Object]'; | ||
} | ||
module.exports = { | ||
find: find, | ||
findHandler: findHandler, | ||
isSimpleObject: isSimpleObject, | ||
purgeIfReplyOnce: purgeIfReplyOnce, | ||
settle: settle | ||
}; | ||
/***/ }), | ||
/* 6 */ | ||
/***/ "axios": | ||
/*!************************!*\ | ||
!*** external "axios" ***! | ||
\************************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports) { | ||
module.exports = __WEBPACK_EXTERNAL_MODULE_6__; | ||
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_axios__;\n\n//# sourceURL=webpack://AxiosMockAdapter/external_%22axios%22?"); | ||
/***/ }) | ||
/******/ ]); | ||
/******/ }); | ||
}); |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("axios")):"function"==typeof define&&define.amd?define(["axios"],e):"object"==typeof exports?exports.AxiosMockAdapter=e(require("axios")):t.AxiosMockAdapter=e(t.axios)}("undefined"!=typeof self?self:this,function(t){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=1)}([function(t,e,n){function r(t){return null===t||void 0===t}function o(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}function i(t,e,n){var i,f;if(r(t)||r(e))return!1;if(t.prototype!==e.prototype)return!1;if(a(t))return!!a(e)&&(t=s.call(t),e=s.call(e),c(t,e,n));if(o(t)){if(!o(e))return!1;if(t.length!==e.length)return!1;for(i=0;i<t.length;i++)if(t[i]!==e[i])return!1;return!0}try{var p=u(t),l=u(e)}catch(t){return!1}if(p.length!=l.length)return!1;for(p.sort(),l.sort(),i=p.length-1;i>=0;i--)if(p[i]!=l[i])return!1;for(i=p.length-1;i>=0;i--)if(f=p[i],!c(t[f],e[f],n))return!1;return typeof t==typeof e}var s=Array.prototype.slice,u=n(2),a=n(3),c=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:i(t,e,n))}},function(t,e,n){"use strict";function r(){return function(t){var e=this;if(3!==arguments.length)return new Promise(function(n,r){l(e,n,r,t)});l(e,arguments[0],arguments[1],arguments[2])}.bind(this)}function o(){return d.reduce(function(t,e){return t[e]=[],t},{})}function i(){s.call(this),u.call(this)}function s(){this.handlers=o()}function u(){this.history=o()}function a(t,e){i.call(this),t&&(this.axiosInstance=t,this.originalAdapter=t.defaults.adapter,this.delayResponse=e&&e.delayResponse>0?e.delayResponse:null,t.defaults.adapter=this.adapter.call(this))}function c(t,e,n){for(var r=-1,o=0;o<e[t].length;o+=1){var i=e[t][o],s=7===i.length;(i[0]instanceof RegExp&&n[0]instanceof RegExp?String(i[0])===String(n[0]):i[0]===n[0])&&p(i[1],n[1],{strict:!0})&&p(i[2],n[2],{strict:!0})&&!s&&(r=o)}return r}function f(t,e,n){if("any"===t)d.forEach(function(t){e[t].push(n)});else{var r=c(t,e,n);r>-1&&n.length<7?e[t].splice(r,1,n):e[t].push(n)}}var p=n(0),l=n(4),d=["get","post","head","delete","patch","put","options"];a.prototype.adapter=r,a.prototype.restore=function(){this.axiosInstance&&(this.axiosInstance.defaults.adapter=this.originalAdapter)},a.prototype.reset=i,a.prototype.resetHandlers=s,a.prototype.resetHistory=u,d.concat("any").forEach(function(t){var e="on"+t.charAt(0).toUpperCase()+t.slice(1);a.prototype[e]=function(e,n,r){function o(o,s,u){var a=[e,n,r,o,s,u];return f(t,i.handlers,a),i}var i=this,e=void 0===e?/.*/:e;return{reply:o,replyOnce:function(o,s,u){var a=[e,n,r,o,s,u,!0];return f(t,i.handlers,a),i},passThrough:function(){var r=[e,n];return f(t,i.handlers,r),i},networkError:function(){o(function(t){var e=new Error("Network Error");return e.config=t,Promise.reject(e)})},timeout:function(){o(function(t){var e=new Error("timeout of "+t.timeout+"ms exceeded");return e.config=t,e.code="ECONNABORTED",Promise.reject(e)})}}}}),t.exports=a,t.exports.default=a},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}e=t.exports="function"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e){function n(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function r(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=o?n:r,e.supported=n,e.unsupported=r},function(t,e,n){"use strict";function r(t,e){return{status:t[0],data:i.isSimpleObject(t[1])?JSON.parse(JSON.stringify(t[1])):t[1],headers:t[2],config:e}}function o(t,e,n,o){o.baseURL&&o.url.substr(0,o.baseURL.length)===o.baseURL&&(o.url=o.url.slice(o.baseURL?o.baseURL.length:0)),delete o.adapter,t.history[o.method].push(o);var s=i.findHandler(t.handlers,o.method,o.url,o.data,o.params,o.headers,o.baseURL);if(s)if(7===s.length&&i.purgeIfReplyOnce(t,s),2===s.length)o.adapter=t.originalAdapter,t.axiosInstance.request(o).then(e,n);else if(s[3]instanceof Function){var u=s[3](o);u.then instanceof Function?u.then(function(s){i.settle(e,n,r(s,o),t.delayResponse)},function(e){t.delayResponse>0?setTimeout(function(){n(e)},t.delayResponse):n(e)}):i.settle(e,n,r(u,o),t.delayResponse)}else i.settle(e,n,r(s.slice(3),o),t.delayResponse);else i.settle(e,n,{status:404,config:o},t.delayResponse)}var i=n(5);t.exports=o},function(t,e,n){"use strict";function r(t,e){return v(t,e,{strict:!0})}function o(t,e){for(var n=t.length,r=0;r<n;r++){var o=t[r];if(e(o))return o}}function i(t,e){return t?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):e}function s(t,e,n,r,s,f,p){return o(t[e.toLowerCase()],function(t){return"string"==typeof t[0]?(u(n,t[0])||u(i(p,n),t[0]))&&c(e,r,s,t[1])&&a(f,t[2]):t[0]instanceof RegExp?(t[0].test(n)||t[0].test(i(p,n)))&&c(e,r,s,t[1])&&a(f,t[2]):void 0})}function u(t,e){return("/"===t[0]?t.substr(1):t)===("/"===e[0]?e.substr(1):e)}function a(t,e){return void 0===e||r(t,e)}function c(t,e,n,r){if(["delete","get","head","options"].indexOf(t.toLowerCase())>=0)return f(n,r?r.params:void 0);return p(e,r)}function f(t,e){return void 0===e||r(t,e)}function p(t,e){if(void 0===e)return!0;var n;try{n=JSON.parse(t)}catch(t){}return n?r(n,e):r(t,e)}function l(t,e){Object.keys(t.handlers).forEach(function(n){var r=t.handlers[n].indexOf(e);r>-1&&t.handlers[n].splice(r,1)})}function d(t,e,n,r){return r>0?void setTimeout(function(){d(t,e,n)},r):n.config&&n.config.validateStatus?void(n.config.validateStatus(n.status)?t(n):e(h("Request failed with status code "+n.status,n.config,n))):void(n.status>=200&&n.status<300?t(n):e(n))}function h(t,e,n){if(!b)return n;var r=new Error(t);return r.config=e,r.response=n,r}function y(t){return null!==t&&void 0!==t&&"[object Object]"===t.toString()}var g=n(6),v=n(0),b=!!g.create().defaults.headers;t.exports={find:o,findHandler:s,isSimpleObject:y,purgeIfReplyOnce:l,settle:d}},function(e,n){e.exports=t}])}); | ||
!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("axios")):"function"==typeof define&&define.amd?define(["axios"],n):"object"==typeof exports?exports.AxiosMockAdapter=n(require("axios")):t.AxiosMockAdapter=n(t.axios)}(window,function(t){return function(t){var n={};function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)e.d(r,o,function(n){return t[n]}.bind(null,o));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=1)}([function(t,n,e){var r=Array.prototype.slice,o=e(2),i=e(3),u=t.exports=function(t,n,e){return e||(e={}),t===n||(t instanceof Date&&n instanceof Date?t.getTime()===n.getTime():!t||!n||"object"!=typeof t&&"object"!=typeof n?e.strict?t===n:t==n:function(t,n,e){var s,c;if(f(t)||f(n))return!1;if(t.prototype!==n.prototype)return!1;if(i(t))return!!i(n)&&(t=r.call(t),n=r.call(n),u(t,n,e));if(a(t)){if(!a(n))return!1;if(t.length!==n.length)return!1;for(s=0;s<t.length;s++)if(t[s]!==n[s])return!1;return!0}try{var p=o(t),y=o(n)}catch(t){return!1}if(p.length!=y.length)return!1;for(p.sort(),y.sort(),s=p.length-1;s>=0;s--)if(p[s]!=y[s])return!1;for(s=p.length-1;s>=0;s--)if(c=p[s],!u(t[c],n[c],e))return!1;return typeof t==typeof n}(t,n,e))};function f(t){return null==t}function a(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}},function(t,n,e){"use strict";var r=e(0),o=e(4),i=["get","post","head","delete","patch","put","options","list"];function u(){return i.reduce(function(t,n){return t[n]=[],t},{})}function f(){a.call(this),s.call(this)}function a(){this.handlers=u()}function s(){this.history=u()}function c(t,n){f.call(this),t&&(this.axiosInstance=t,this.originalAdapter=t.defaults.adapter,this.delayResponse=n&&n.delayResponse>0?n.delayResponse:null,t.defaults.adapter=this.adapter.call(this))}function p(t,n,e){if("any"===t)i.forEach(function(t){n[t].push(e)});else{var o=function(t,n,e){for(var o=-1,i=0;i<n[t].length;i+=1){var u=n[t][i],f=7===u.length;(u[0]instanceof RegExp&&e[0]instanceof RegExp?String(u[0])===String(e[0]):u[0]===e[0])&&r(u[1],e[1],{strict:!0})&&r(u[2],e[2],{strict:!0})&&!f&&(o=i)}return o}(t,n,e);o>-1&&e.length<7?n[t].splice(o,1,e):n[t].push(e)}}c.prototype.adapter=function(){return function(t){var n=this;if(3!==arguments.length)return new Promise(function(e,r){o(n,e,r,t)});o(n,arguments[0],arguments[1],arguments[2])}.bind(this)},c.prototype.restore=function(){this.axiosInstance&&(this.axiosInstance.defaults.adapter=this.originalAdapter)},c.prototype.reset=f,c.prototype.resetHandlers=a,c.prototype.resetHistory=s,i.concat("any").forEach(function(t){var n="on"+t.charAt(0).toUpperCase()+t.slice(1);c.prototype[n]=function(n,e,r){var o=this;n=void 0===n?/.*/:n;function i(i,u,f){var a=[n,e,r,i,u,f];return p(t,o.handlers,a),o}function u(i,u,f){var a=[n,e,r,i,u,f,!0];return p(t,o.handlers,a),o}return{reply:i,replyOnce:u,passThrough:function(){var r=[n,e];return p(t,o.handlers,r),o},networkError:function(){i(function(t){var n=new Error("Network Error");return n.config=t,Promise.reject(n)})},networkErrorOnce:function(){u(function(t){var n=new Error("Network Error");return n.config=t,Promise.reject(n)})},timeout:function(){i(function(t){var n=new Error("timeout of "+t.timeout+"ms exceeded");return n.config=t,n.code="ECONNABORTED",Promise.reject(n)})},timeoutOnce:function(){u(function(t){var n=new Error("timeout of "+t.timeout+"ms exceeded");return n.config=t,n.code="ECONNABORTED",Promise.reject(n)})}}}}),t.exports=c,t.exports.default=c},function(t,n){function e(t){var n=[];for(var e in t)n.push(e);return n}(t.exports="function"==typeof Object.keys?Object.keys:e).shim=e},function(t,n){var e="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();function r(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function o(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}(n=t.exports=e?r:o).supported=r,n.unsupported=o},function(t,n,e){"use strict";var r=e(5);function o(t,n){return{status:t[0],data:r.isSimpleObject(t[1])?JSON.parse(JSON.stringify(t[1])):t[1],headers:t[2],config:n}}t.exports=function(t,n,e,i){var u=i.url;i.baseURL&&i.url.substr(0,i.baseURL.length)===i.baseURL&&(u=i.url.slice(i.baseURL?i.baseURL.length:0)),delete i.adapter,t.history[i.method].push(i);var f=r.findHandler(t.handlers,i.method,u,i.data,i.params,i.headers,i.baseURL);if(f)if(7===f.length&&r.purgeIfReplyOnce(t,f),2===f.length)i.adapter=t.originalAdapter,t.axiosInstance.request(i).then(n,e);else if("function"!=typeof f[3])r.settle(n,e,o(f.slice(3),i),t.delayResponse);else{var a=f[3](i);"function"!=typeof a.then?r.settle(n,e,o(a,i),t.delayResponse):a.then(function(u){u.config&&u.status?r.settle(n,e,o([u.status,u.data,u.headers],u.config),0):r.settle(n,e,o(u,i),t.delayResponse)},function(n){t.delayResponse>0?setTimeout(function(){e(n)},t.delayResponse):e(n)})}else r.settle(n,e,{status:404,config:i},t.delayResponse)}},function(t,n,e){"use strict";var r=e(6),o=e(0);function i(t,n){return o(t,n,{strict:!0})}var u=!!r.create().defaults.headers;function f(t,n){for(var e=t.length,r=0;r<e;r++){var o=t[r];if(n(o))return o}}function a(t,n){return t?t.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,""):n}function s(t,n){return("/"===t[0]?t.substr(1):t)===("/"===n[0]?n.substr(1):n)}function c(t,n){return void 0===n||i(t,n)}function p(t,n,e,r){return["delete","get","head","options"].indexOf(t.toLowerCase())>=0?function(t,n){return void 0===n||i(t,n)}(e,r?r.params:void 0):function(t,n){if(void 0===n)return!0;var e;try{e=JSON.parse(t)}catch(t){}return i(e||t,n)}(n,r)}t.exports={find:f,findHandler:function(t,n,e,r,o,i,u){return f(t[n.toLowerCase()],function(t){return"string"==typeof t[0]?(s(e,t[0])||s(a(u,e),t[0]))&&p(n,r,o,t[1])&&c(i,t[2]):t[0]instanceof RegExp?(t[0].test(e)||t[0].test(a(u,e)))&&p(n,r,o,t[1])&&c(i,t[2]):void 0})},isSimpleObject:function(t){return null!=t&&"[object Object]"===t.toString()},purgeIfReplyOnce:function(t,n){Object.keys(t.handlers).forEach(function(e){var r=t.handlers[e].indexOf(n);r>-1&&t.handlers[e].splice(r,1)})},settle:function t(n,e,r,o){o>0?setTimeout(function(){t(n,e,r)},o):r.config&&r.config.validateStatus?r.config.validateStatus(r.status)?n(r):e(function(t,n,e){if(!u)return e;var r=new Error(t);return r.config=n,r.response=e,r}("Request failed with status code "+r.status,r.config,r)):r.status>=200&&r.status<300?n(r):e(r)}}},function(n,e){n.exports=t}])}); |
{ | ||
"name": "axios-mock-adapter", | ||
"version": "1.15.0", | ||
"version": "1.16.0", | ||
"description": "Axios adapter that allows to easily mock requests", | ||
@@ -11,4 +11,4 @@ "main": "src/index.js", | ||
"lint": "eslint src test", | ||
"build:umd": "webpack src/index.js dist/axios-mock-adapter.js", | ||
"build:umd:min": "cross-env NODE_ENV=production webpack src/index.js dist/axios-mock-adapter.min.js", | ||
"build:umd": "webpack --mode development ./src/index.js --output ./dist/axios-mock-adapter.js", | ||
"build:umd:min": "webpack --mode production ./src/index.js --output ./dist/axios-mock-adapter.min.js", | ||
"prepublish": "npm run clean && npm run build:umd && npm run build:umd:min" | ||
@@ -46,8 +46,8 @@ }, | ||
"chai": "^4.1.0", | ||
"cross-env": "^5.1.0", | ||
"eslint": "^4.17.0", | ||
"eslint": "^5.2.0", | ||
"istanbul": "^0.4.5", | ||
"mocha": "^5.0.0", | ||
"mocha": "^5.2.0", | ||
"rimraf": "^2.6.1", | ||
"webpack": "^3.3.0" | ||
"webpack": "^4.16.4", | ||
"webpack-command": "^0.4.1" | ||
}, | ||
@@ -54,0 +54,0 @@ "dependencies": { |
@@ -55,3 +55,3 @@ # axios-mock-adapter | ||
// Mock GET request to /users when param `searchText` is 'John' | ||
// Mock GET request to /users when param `searchText` is 'John' | ||
// arguments for reply are (status, data, headers) | ||
@@ -121,2 +121,10 @@ mock.onGet('/users', { params: { searchText: 'John' } }).reply(200, { | ||
Passing a function to `reply` that returns an axios request, essentially mocking a redirect | ||
```js | ||
mock.onPost('/foo').reply(function(config) { | ||
return axios.get('/bar'); | ||
}); | ||
``` | ||
Using a regex | ||
@@ -131,3 +139,11 @@ | ||
``` | ||
Using variables in regex | ||
```js | ||
const usersUri = '/users'; | ||
const url = new RegExp(`${usersUri}/*`); | ||
mock.onGet(url).reply(200, users); | ||
``` | ||
Specify no path to match by verb alone | ||
@@ -246,3 +262,3 @@ | ||
var mockAxios = axios.create(); | ||
var mock = MockAdapter(mockAxios); | ||
var mock = new MockAdapter(mockAxios); | ||
@@ -265,1 +281,24 @@ mock | ||
``` | ||
## History | ||
The `history` property allows you to enumerate existing axios request objects. The property is an object of verb keys referencing arrays of request objects. | ||
This is useful for testing. | ||
```js | ||
describe('Feature', () => { | ||
it('requests an endpoint', (done) => { | ||
var mock = new AxiosMockAdapter(axios); | ||
mock.onPost('/endpoint').replyOnce(200); | ||
feature.request() | ||
.then(() => { | ||
expect(mock.history.post.length).toBe(1); | ||
expect(mock.history.post[0].data).toBe(JSON.stringify({ foo: 'bar' })); | ||
}) | ||
.then(done) | ||
.catch(done.fail); | ||
}); | ||
}); | ||
``` |
@@ -15,4 +15,5 @@ 'use strict'; | ||
function handleRequest(mockAdapter, resolve, reject, config) { | ||
var url = config.url; | ||
if (config.baseURL && config.url.substr(0, config.baseURL.length) === config.baseURL) { | ||
config.url = config.url.slice(config.baseURL ? config.baseURL.length : 0); | ||
url = config.url.slice(config.baseURL ? config.baseURL.length : 0); | ||
} | ||
@@ -26,3 +27,3 @@ | ||
config.method, | ||
config.url, | ||
url, | ||
config.data, | ||
@@ -44,3 +45,3 @@ config.params, | ||
mockAdapter.axiosInstance.request(config).then(resolve, reject); | ||
} else if (!(handler[3] instanceof Function)) { | ||
} else if (typeof handler[3] !== 'function') { | ||
utils.settle( | ||
@@ -55,3 +56,3 @@ resolve, | ||
// TODO throw a sane exception when return value is incorrect | ||
if (!(result.then instanceof Function)) { | ||
if (typeof result.then !== 'function') { | ||
utils.settle(resolve, reject, makeResponse(result, config), mockAdapter.delayResponse); | ||
@@ -61,3 +62,7 @@ } else { | ||
function(result) { | ||
utils.settle(resolve, reject, makeResponse(result, config), mockAdapter.delayResponse); | ||
if (result.config && result.status) { | ||
utils.settle(resolve, reject, makeResponse([result.status, result.data, result.headers], result.config), 0); | ||
} else { | ||
utils.settle(resolve, reject, makeResponse(result, config), mockAdapter.delayResponse); | ||
} | ||
}, | ||
@@ -64,0 +69,0 @@ function(error) { |
@@ -7,3 +7,3 @@ 'use strict'; | ||
var VERBS = ['get', 'post', 'head', 'delete', 'patch', 'put', 'options']; | ||
var VERBS = ['get', 'post', 'head', 'delete', 'patch', 'put', 'options', 'list']; | ||
@@ -80,10 +80,12 @@ function adapter() { | ||
function replyOnce(code, response, headers) { | ||
var handler = [matcher, body, requestHeaders, code, response, headers, true]; | ||
addHandler(method, _this.handlers, handler); | ||
return _this; | ||
} | ||
return { | ||
reply: reply, | ||
replyOnce: function replyOnce(code, response, headers) { | ||
var handler = [matcher, body, requestHeaders, code, response, headers, true]; | ||
addHandler(method, _this.handlers, handler); | ||
return _this; | ||
}, | ||
replyOnce: replyOnce, | ||
@@ -104,2 +106,10 @@ passThrough: function passThrough() { | ||
networkErrorOnce: function() { | ||
replyOnce(function(config) { | ||
var error = new Error('Network Error'); | ||
error.config = config; | ||
return Promise.reject(error); | ||
}); | ||
}, | ||
timeout: function() { | ||
@@ -112,2 +122,11 @@ reply(function(config) { | ||
}); | ||
}, | ||
timeoutOnce: function() { | ||
replyOnce(function(config) { | ||
var error = new Error('timeout of ' + config.timeout + 'ms exceeded'); | ||
error.config = config; | ||
error.code = 'ECONNABORTED'; | ||
return Promise.reject(error); | ||
}); | ||
} | ||
@@ -114,0 +133,0 @@ }; |
@@ -1,6 +0,12 @@ | ||
import { AxiosAdapter, AxiosInstance, AxiosRequestConfig } from "axios"; | ||
import { AxiosAdapter, AxiosInstance, AxiosRequestConfig } from 'axios'; | ||
type CallbackResponseSpecFunc = (config: AxiosRequestConfig) => any[] | Promise<any[]>; | ||
type CallbackResponseSpecFunc = ( | ||
config: AxiosRequestConfig | ||
) => any[] | Promise<any[]>; | ||
type ResponseSpecFunc = (statusOrCallback: number | CallbackResponseSpecFunc, data?: any, headers?: any) => MockAdapter; | ||
type ResponseSpecFunc = ( | ||
statusOrCallback: number | CallbackResponseSpecFunc, | ||
data?: any, | ||
headers?: any | ||
) => MockAdapter; | ||
@@ -10,6 +16,8 @@ interface RequestHandler { | ||
replyOnce: ResponseSpecFunc; | ||
timeoutOnce: ResponseSpecFunc; | ||
networkErrorOnce: ResponseSpecFunc; | ||
passThrough(): void; | ||
networkError(): void; | ||
timeout(): void; | ||
passThrough(): MockAdapter; | ||
networkError(): MockAdapter; | ||
timeout(): MockAdapter; | ||
} | ||
@@ -24,8 +32,16 @@ | ||
params?: { | ||
[index: string]: any, | ||
[index: string]: any; | ||
}; | ||
} | ||
type RequestMatcherFunc = (matcher?: string | RegExp, body?: string | RequestDataMatcher) => RequestHandler; | ||
interface HeadersMatcher { | ||
[header: string]: string; | ||
} | ||
type RequestMatcherFunc = ( | ||
matcher?: string | RegExp, | ||
body?: string | RequestDataMatcher, | ||
headers?: HeadersMatcher | ||
) => RequestHandler; | ||
declare class MockAdapter { | ||
@@ -37,2 +53,4 @@ constructor(axiosInstance: AxiosInstance, options?: MockAdapterOptions); | ||
restore(): void; | ||
history: { [method:string]:AxiosRequestConfig[]; }; | ||
@@ -45,2 +63,3 @@ onGet: RequestMatcherFunc; | ||
onPatch: RequestMatcherFunc; | ||
onList: RequestMatcherFunc; | ||
onAny: RequestMatcherFunc; | ||
@@ -47,0 +66,0 @@ } |
@@ -1,3 +0,3 @@ | ||
import axios from "axios"; | ||
import MockAdapter from "axios-mock-adapter"; | ||
import axios from 'axios'; | ||
import MockAdapter from 'axios-mock-adapter'; | ||
@@ -13,3 +13,3 @@ const instance = axios.create(); | ||
new MockAdapter(instance, { | ||
delayResponse: 2000, | ||
delayResponse: 2000 | ||
}); | ||
@@ -37,2 +37,3 @@ } | ||
mock.onPatch; | ||
mock.onList; | ||
} | ||
@@ -49,3 +50,3 @@ | ||
namespace AllowsUrlMatcher { | ||
mock.onGet("/foo"); | ||
mock.onGet('/foo'); | ||
} | ||
@@ -58,9 +59,9 @@ | ||
namespace AllowsStringBodyMatcher { | ||
mock.onPatch("/foo", "bar"); | ||
mock.onPatch('/foo', 'bar'); | ||
} | ||
namespace AllowsBodyMatcher { | ||
mock.onGet("/foo", { | ||
mock.onGet('/foo', { | ||
id: 4, | ||
name: "foo", | ||
name: 'foo' | ||
}); | ||
@@ -70,6 +71,6 @@ } | ||
namespace AllowsParameterMatcher { | ||
mock.onGet("/foo", { | ||
mock.onGet('/foo', { | ||
params: { | ||
searchText: "John", | ||
}, | ||
searchText: 'John' | ||
} | ||
}); | ||
@@ -95,8 +96,4 @@ } | ||
namespace AllowsFunctionReply { | ||
mock.onGet().reply((config) => { | ||
return [ | ||
200, | ||
{ data: "foo" }, | ||
{ RequestedURL: config.url }, | ||
]; | ||
mock.onGet().reply(config => { | ||
return [200, { data: 'foo' }, { RequestedURL: config.url }]; | ||
}); | ||
@@ -106,7 +103,7 @@ } | ||
namespace AllowsPromiseReply { | ||
mock.onGet().reply((config) => { | ||
mock.onGet().reply(config => { | ||
return Promise.resolve([ | ||
200, | ||
{ data: "bar" }, | ||
{ RequestedURL: config.url }, | ||
{ data: 'bar' }, | ||
{ RequestedURL: config.url } | ||
]); | ||
@@ -118,4 +115,10 @@ }); | ||
mock | ||
.onGet("/users").reply(200, [/* users */]) | ||
.onGet("/posts").reply(200, [/* posts */]); | ||
.onGet('/users') | ||
.reply(200, [ | ||
/* users */ | ||
]) | ||
.onGet('/posts') | ||
.reply(200, [ | ||
/* posts */ | ||
]); | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
54359
300
709
4
7