axios-mock-adapter
Advanced tools
Comparing version 1.9.0 to 1.10.0
@@ -10,3 +10,3 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
root["AxiosMockAdapter"] = factory(root["axios"]); | ||
})(this, function(__WEBPACK_EXTERNAL_MODULE_6__) { | ||
})(this, function(__WEBPACK_EXTERNAL_MODULE_3__) { | ||
return /******/ (function(modules) { // webpackBootstrap | ||
@@ -47,5 +47,2 @@ /******/ // The module cache | ||
/******/ | ||
/******/ // identity function for calling harmony imports with the correct context | ||
/******/ __webpack_require__.i = function(value) { return value; }; | ||
/******/ | ||
/******/ // define getter function for harmony exports | ||
@@ -78,3 +75,3 @@ /******/ __webpack_require__.d = function(exports, name, getter) { | ||
/******/ // Load entry module and return exports | ||
/******/ return __webpack_require__(__webpack_require__.s = 4); | ||
/******/ return __webpack_require__(__webpack_require__.s = 0); | ||
/******/ }) | ||
@@ -89,216 +86,4 @@ /************************************************************************/ | ||
var utils = __webpack_require__(5); | ||
var handleRequest = __webpack_require__(1); | ||
function makeResponse(result, config) { | ||
return { | ||
status: result[0], | ||
data: utils.isObject(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); | ||
} | ||
config.adapter = null; | ||
var handler = utils.findHandler(mockAdapter.handlers, config.method, config.url, config.data, config.params); | ||
if (handler) { | ||
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[2] instanceof Function)) { | ||
utils.settle(resolve, reject, makeResponse(handler.slice(2), config), mockAdapter.delayResponse); | ||
} else { | ||
var result = handler[2](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; | ||
/***/ }), | ||
/* 1 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
var pSlice = Array.prototype.slice; | ||
var objectKeys = __webpack_require__(3); | ||
var isArguments = __webpack_require__(2); | ||
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(); | ||
// 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; | ||
// 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; | ||
} | ||
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; | ||
} | ||
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; | ||
} | ||
/***/ }), | ||
/* 2 */ | ||
/***/ (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; | ||
}; | ||
/***/ }), | ||
/* 3 */ | ||
/***/ (function(module, exports) { | ||
exports = module.exports = typeof Object.keys === 'function' | ||
? Object.keys : shim; | ||
exports.shim = shim; | ||
function shim (obj) { | ||
var keys = []; | ||
for (var key in obj) keys.push(key); | ||
return keys; | ||
} | ||
/***/ }), | ||
/* 4 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
var handleRequest = __webpack_require__(0); | ||
var VERBS = ['get', 'post', 'head', 'delete', 'patch', 'put']; | ||
@@ -354,3 +139,3 @@ | ||
var methodName = 'on' + method.charAt(0).toUpperCase() + method.slice(1); | ||
MockAdapter.prototype[methodName] = function(matcher, body) { | ||
MockAdapter.prototype[methodName] = function(matcher, body, requestHeaders) { | ||
var _this = this; | ||
@@ -360,3 +145,3 @@ var matcher = matcher === undefined ? /.*/ : matcher; | ||
function reply(code, response, headers) { | ||
var handler = [matcher, body, code, response, headers]; | ||
var handler = [matcher, body, requestHeaders, code, response, headers]; | ||
addHandler(method, _this.handlers, handler); | ||
@@ -370,3 +155,3 @@ return _this; | ||
replyOnce: function replyOnce(code, response, headers) { | ||
var handler = [matcher, body, code, response, headers]; | ||
var handler = [matcher, body, requestHeaders, code, response, headers]; | ||
addHandler(method, _this.handlers, handler); | ||
@@ -414,7 +199,7 @@ _this.replyOnceHandlers.push(handler); | ||
module.exports = MockAdapter; | ||
module.exports = module.exports.default = MockAdapter; | ||
/***/ }), | ||
/* 5 */ | ||
/* 1 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
@@ -425,5 +210,76 @@ | ||
var axios = __webpack_require__(6); | ||
var deepEqual = __webpack_require__(1); | ||
var utils = __webpack_require__(2); | ||
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); | ||
} | ||
config.adapter = null; | ||
var handler = utils.findHandler(mockAdapter.handlers, config.method, config.url, config.data, config.params, config.headers); | ||
if (handler) { | ||
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; | ||
/***/ }), | ||
/* 2 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
var axios = __webpack_require__(3); | ||
var deepEqual = __webpack_require__(4); | ||
function isEqual(a, b) { | ||
@@ -444,8 +300,8 @@ return deepEqual(a, b, { strict: true }); | ||
function findHandler(handlers, method, url, body, parameters) { | ||
function findHandler(handlers, method, url, body, parameters, headers) { | ||
return find(handlers[method.toLowerCase()], function(handler) { | ||
if (typeof handler[0] === 'string') { | ||
return isUrlMatching(url, handler[0]) && isBodyOrParametersMatching(method, body, parameters, handler[1]); | ||
return isUrlMatching(url, handler[0]) && isBodyOrParametersMatching(method, body, parameters, handler[1]) && isRequestHeadersMatching(headers, handler[2]); | ||
} else if (handler[0] instanceof RegExp) { | ||
return handler[0].test(url) && isBodyOrParametersMatching(method, body, parameters, handler[1]); | ||
return handler[0].test(url) && isBodyOrParametersMatching(method, body, parameters, handler[1]) && isRequestHeadersMatching(headers, handler[2]); | ||
} | ||
@@ -461,4 +317,10 @@ }); | ||
function isRequestHeadersMatching(requestHeaders, required) { | ||
if (required === undefined) return true; | ||
return isEqual(requestHeaders, required); | ||
} | ||
function isBodyOrParametersMatching(method, body, parameters, required) { | ||
if (method.toLowerCase() === 'get') { | ||
var allowedParamsMethods = ['delete', 'get', 'head', 'options']; | ||
if (allowedParamsMethods.indexOf(method.toLowerCase()) >= 0 ) { | ||
var params = required ? required.params : undefined; | ||
@@ -539,4 +401,4 @@ return isParametersMatching(parameters, params); | ||
function isObject(value) { | ||
return value !== null && typeof value === 'object'; | ||
function isSimpleObject(value) { | ||
return value !== null && value !== undefined && value.toString() === '[object Object]'; | ||
} | ||
@@ -547,3 +409,3 @@ | ||
findHandler: findHandler, | ||
isObject: isObject, | ||
isSimpleObject: isSimpleObject, | ||
purgeIfReplyOnce: purgeIfReplyOnce, | ||
@@ -555,9 +417,150 @@ settle: settle | ||
/***/ }), | ||
/* 3 */ | ||
/***/ (function(module, exports) { | ||
module.exports = __WEBPACK_EXTERNAL_MODULE_3__; | ||
/***/ }), | ||
/* 4 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
var pSlice = Array.prototype.slice; | ||
var objectKeys = __webpack_require__(5); | ||
var isArguments = __webpack_require__(6); | ||
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(); | ||
// 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; | ||
// 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; | ||
} | ||
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; | ||
} | ||
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; | ||
} | ||
/***/ }), | ||
/* 5 */ | ||
/***/ (function(module, exports) { | ||
exports = module.exports = typeof Object.keys === 'function' | ||
? Object.keys : shim; | ||
exports.shim = shim; | ||
function shim (obj) { | ||
var keys = []; | ||
for (var key in obj) keys.push(key); | ||
return keys; | ||
} | ||
/***/ }), | ||
/* 6 */ | ||
/***/ (function(module, exports) { | ||
module.exports = __WEBPACK_EXTERNAL_MODULE_6__; | ||
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; | ||
}; | ||
/***/ }) | ||
/******/ ]); | ||
}); |
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("axios")):"function"==typeof define&&define.amd?define(["axios"],t):"object"==typeof exports?exports.AxiosMockAdapter=t(require("axios")):e.AxiosMockAdapter=t(e.axios)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t,n){"use strict";function r(e,t){return{status:e[0],data:i.isObject(e[1])?JSON.parse(JSON.stringify(e[1])):e[1],headers:e[2],config:t}}function o(e,t,n,o){o.baseURL&&o.url.substr(0,o.baseURL.length)===o.baseURL&&(o.url=o.url.slice(o.baseURL?o.baseURL.length:0)),o.adapter=null;var s=i.findHandler(e.handlers,o.method,o.url,o.data,o.params);if(s)if(i.purgeIfReplyOnce(e,s),2===s.length)o.adapter=e.originalAdapter,e.axiosInstance.request(o).then(t,n);else if(s[2]instanceof Function){var u=s[2](o);u.then instanceof Function?u.then(function(s){i.settle(t,n,r(s,o),e.delayResponse)},function(t){e.delayResponse>0?setTimeout(function(){n(t)},e.delayResponse):n(t)}):i.settle(t,n,r(u,o),e.delayResponse)}else i.settle(t,n,r(s.slice(2),o),e.delayResponse);else i.settle(t,n,{status:404,config:o},e.delayResponse)}var i=n(5);e.exports=o},function(e,t,n){function r(e){return null===e||void 0===e}function o(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length)&&("function"==typeof e.copy&&"function"==typeof e.slice&&!(e.length>0&&"number"!=typeof e[0]))}function i(e,t,n){var i,f;if(r(e)||r(t))return!1;if(e.prototype!==t.prototype)return!1;if(a(e))return!!a(t)&&(e=s.call(e),t=s.call(t),c(e,t,n));if(o(e)){if(!o(t))return!1;if(e.length!==t.length)return!1;for(i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}try{var l=u(e),p=u(t)}catch(e){return!1}if(l.length!=p.length)return!1;for(l.sort(),p.sort(),i=l.length-1;i>=0;i--)if(l[i]!=p[i])return!1;for(i=l.length-1;i>=0;i--)if(f=l[i],!c(e[f],t[f],n))return!1;return typeof e==typeof t}var s=Array.prototype.slice,u=n(3),a=n(2),c=e.exports=function(e,t,n){return n||(n={}),e===t||(e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?n.strict?e===t:e==t:i(e,t,n))}},function(e,t){function n(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function r(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();t=e.exports=o?n:r,t.supported=n,t.unsupported=r},function(e,t){function n(e){var t=[];for(var n in e)t.push(n);return t}t=e.exports="function"==typeof Object.keys?Object.keys:n,t.shim=n},function(e,t,n){"use strict";function r(){return function(e){var t=this;if(3!==arguments.length)return new Promise(function(n,r){u(t,n,r,e)});u(t,arguments[0],arguments[1],arguments[2])}.bind(this)}function o(){this.handlers=a.reduce(function(e,t){return e[t]=[],e},{}),this.replyOnceHandlers=[]}function i(e,t){o.call(this),e&&(this.axiosInstance=e,this.originalAdapter=e.defaults.adapter,this.delayResponse=t&&t.delayResponse>0?t.delayResponse:null,e.defaults.adapter=r.call(this))}function s(e,t,n){"any"===e?a.forEach(function(e){t[e].push(n)}):t[e].push(n)}var u=n(0),a=["get","post","head","delete","patch","put"];i.prototype.adapter=r,i.prototype.restore=function(){this.axiosInstance&&(this.axiosInstance.defaults.adapter=this.originalAdapter)},i.prototype.reset=o,a.concat("any").forEach(function(e){var t="on"+e.charAt(0).toUpperCase()+e.slice(1);i.prototype[t]=function(t,n){function r(r,i,u){var a=[t,n,r,i,u];return s(e,o.handlers,a),o}var o=this,t=void 0===t?/.*/:t;return{reply:r,replyOnce:function(r,i,u){var a=[t,n,r,i,u];return s(e,o.handlers,a),o.replyOnceHandlers.push(a),o},passThrough:function(){var r=[t,n];return s(e,o.handlers,r),o},networkError:function(){r(function(e){var t=new Error("Network Error");return t.config=e,Promise.reject(t)})},timeout:function(){r(function(e){var t=new Error("timeout of "+e.timeout+"ms exceeded");return t.config=e,t.code="ECONNABORTED",Promise.reject(t)})}}}}),e.exports=i},function(e,t,n){"use strict";function r(e,t){return y(e,t,{strict:!0})}function o(e,t){for(var n=e.length,r=0;r<n;r++){var o=e[r];if(t(o))return o}}function i(e,t,n,r,i){return o(e[t.toLowerCase()],function(e){return"string"==typeof e[0]?s(n,e[0])&&u(t,r,i,e[1]):e[0]instanceof RegExp?e[0].test(n)&&u(t,r,i,e[1]):void 0})}function s(e,t){return("/"===e[0]?e.substr(1):e)===("/"===t[0]?t.substr(1):t)}function u(e,t,n,r){if("get"===e.toLowerCase()){return a(n,r?r.params:void 0)}return c(t,r)}function a(e,t){return void 0===t||r(e,t)}function c(e,t){if(void 0===t)return!0;var n;try{n=JSON.parse(e)}catch(e){}return n?r(n,t):r(e,t)}function f(e,t){var n=e.replyOnceHandlers.indexOf(t);n>-1&&(e.replyOnceHandlers.splice(n,1),Object.keys(e.handlers).forEach(function(r){(n=e.handlers[r].indexOf(t))>-1&&e.handlers[r].splice(n,1)}))}function l(e,t,n,r){return r>0?void setTimeout(function(){l(e,t,n)},r):n.config&&n.config.validateStatus?void(n.config.validateStatus(n.status)?e(n):t(p("Request failed with status code "+n.status,n.config,n))):void(n.status>=200&&n.status<300?e(n):t(n))}function p(e,t,n){if(!g)return n;var r=new Error(e);return r.config=t,r.response=n,r}function d(e){return null!==e&&"object"==typeof e}var h=n(6),y=n(1),g=!!h.create().defaults.headers;e.exports={find:o,findHandler:i,isObject:d,purgeIfReplyOnce:f,settle:l}},function(t,n){t.exports=e}])}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("axios")):"function"==typeof define&&define.amd?define(["axios"],t):"object"==typeof exports?exports.AxiosMockAdapter=t(require("axios")):e.AxiosMockAdapter=t(e.axios)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,n){"use strict";function r(){return function(e){var t=this;if(3!==arguments.length)return new Promise(function(n,r){u(t,n,r,e)});u(t,arguments[0],arguments[1],arguments[2])}.bind(this)}function o(){this.handlers=a.reduce(function(e,t){return e[t]=[],e},{}),this.replyOnceHandlers=[]}function i(e,t){o.call(this),e&&(this.axiosInstance=e,this.originalAdapter=e.defaults.adapter,this.delayResponse=t&&t.delayResponse>0?t.delayResponse:null,e.defaults.adapter=r.call(this))}function s(e,t,n){"any"===e?a.forEach(function(e){t[e].push(n)}):t[e].push(n)}var u=n(1),a=["get","post","head","delete","patch","put"];i.prototype.adapter=r,i.prototype.restore=function(){this.axiosInstance&&(this.axiosInstance.defaults.adapter=this.originalAdapter)},i.prototype.reset=o,a.concat("any").forEach(function(e){var t="on"+e.charAt(0).toUpperCase()+e.slice(1);i.prototype[t]=function(t,n,r){function o(o,u,a){var c=[t,n,r,o,u,a];return s(e,i.handlers,c),i}var i=this,t=void 0===t?/.*/:t;return{reply:o,replyOnce:function(o,u,a){var c=[t,n,r,o,u,a];return s(e,i.handlers,c),i.replyOnceHandlers.push(c),i},passThrough:function(){var r=[t,n];return s(e,i.handlers,r),i},networkError:function(){o(function(e){var t=new Error("Network Error");return t.config=e,Promise.reject(t)})},timeout:function(){o(function(e){var t=new Error("timeout of "+e.timeout+"ms exceeded");return t.config=e,t.code="ECONNABORTED",Promise.reject(t)})}}}}),e.exports=e.exports.default=i},function(e,t,n){"use strict";function r(e,t){return{status:e[0],data:i.isSimpleObject(e[1])?JSON.parse(JSON.stringify(e[1])):e[1],headers:e[2],config:t}}function o(e,t,n,o){o.baseURL&&o.url.substr(0,o.baseURL.length)===o.baseURL&&(o.url=o.url.slice(o.baseURL?o.baseURL.length:0)),o.adapter=null;var s=i.findHandler(e.handlers,o.method,o.url,o.data,o.params,o.headers);if(s)if(i.purgeIfReplyOnce(e,s),2===s.length)o.adapter=e.originalAdapter,e.axiosInstance.request(o).then(t,n);else if(s[3]instanceof Function){var u=s[3](o);u.then instanceof Function?u.then(function(s){i.settle(t,n,r(s,o),e.delayResponse)},function(t){e.delayResponse>0?setTimeout(function(){n(t)},e.delayResponse):n(t)}):i.settle(t,n,r(u,o),e.delayResponse)}else i.settle(t,n,r(s.slice(3),o),e.delayResponse);else i.settle(t,n,{status:404,config:o},e.delayResponse)}var i=n(2);e.exports=o},function(e,t,n){"use strict";function r(e,t){return g(e,t,{strict:!0})}function o(e,t){for(var n=e.length,r=0;r<n;r++){var o=e[r];if(t(o))return o}}function i(e,t,n,r,i,c){return o(e[t.toLowerCase()],function(e){return"string"==typeof e[0]?s(n,e[0])&&a(t,r,i,e[1])&&u(c,e[2]):e[0]instanceof RegExp?e[0].test(n)&&a(t,r,i,e[1])&&u(c,e[2]):void 0})}function s(e,t){return("/"===e[0]?e.substr(1):e)===("/"===t[0]?t.substr(1):t)}function u(e,t){return void 0===t||r(e,t)}function a(e,t,n,r){if(["delete","get","head","options"].indexOf(e.toLowerCase())>=0)return c(n,r?r.params:void 0);return f(t,r)}function c(e,t){return void 0===t||r(e,t)}function f(e,t){if(void 0===t)return!0;var n;try{n=JSON.parse(e)}catch(e){}return n?r(n,t):r(e,t)}function l(e,t){var n=e.replyOnceHandlers.indexOf(t);n>-1&&(e.replyOnceHandlers.splice(n,1),Object.keys(e.handlers).forEach(function(r){(n=e.handlers[r].indexOf(t))>-1&&e.handlers[r].splice(n,1)}))}function p(e,t,n,r){return r>0?void setTimeout(function(){p(e,t,n)},r):n.config&&n.config.validateStatus?void(n.config.validateStatus(n.status)?e(n):t(d("Request failed with status code "+n.status,n.config,n))):void(n.status>=200&&n.status<300?e(n):t(n))}function d(e,t,n){if(!v)return n;var r=new Error(e);return r.config=t,r.response=n,r}function h(e){return null!==e&&void 0!==e&&"[object Object]"===e.toString()}var y=n(3),g=n(4),v=!!y.create().defaults.headers;e.exports={find:o,findHandler:i,isSimpleObject:h,purgeIfReplyOnce:l,settle:p}},function(t,n){t.exports=e},function(e,t,n){function r(e){return null===e||void 0===e}function o(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length)&&("function"==typeof e.copy&&"function"==typeof e.slice&&!(e.length>0&&"number"!=typeof e[0]))}function i(e,t,n){var i,f;if(r(e)||r(t))return!1;if(e.prototype!==t.prototype)return!1;if(a(e))return!!a(t)&&(e=s.call(e),t=s.call(t),c(e,t,n));if(o(e)){if(!o(t))return!1;if(e.length!==t.length)return!1;for(i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}try{var l=u(e),p=u(t)}catch(e){return!1}if(l.length!=p.length)return!1;for(l.sort(),p.sort(),i=l.length-1;i>=0;i--)if(l[i]!=p[i])return!1;for(i=l.length-1;i>=0;i--)if(f=l[i],!c(e[f],t[f],n))return!1;return typeof e==typeof t}var s=Array.prototype.slice,u=n(5),a=n(6),c=e.exports=function(e,t,n){return n||(n={}),e===t||(e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?n.strict?e===t:e==t:i(e,t,n))}},function(e,t){function n(e){var t=[];for(var n in e)t.push(n);return t}t=e.exports="function"==typeof Object.keys?Object.keys:n,t.shim=n},function(e,t){function n(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function r(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();t=e.exports=o?n:r,t.supported=n,t.unsupported=r}])}); |
{ | ||
"name": "axios-mock-adapter", | ||
"version": "1.9.0", | ||
"version": "1.10.0", | ||
"description": "Axios adapter that allows to easily mock requests", | ||
@@ -19,2 +19,3 @@ "main": "src/index.js", | ||
], | ||
"types": "types", | ||
"repository": { | ||
@@ -42,10 +43,10 @@ "type": "git", | ||
"devDependencies": { | ||
"axios": "^0.16.2", | ||
"chai": "^4.0.2", | ||
"cross-env": "3.2.4", | ||
"eslint": "^4.0.0", | ||
"axios": "^0.17.0", | ||
"chai": "^4.1.0", | ||
"cross-env": "^5.1.0", | ||
"eslint": "^4.3.0", | ||
"istanbul": "^0.4.5", | ||
"mocha": "^3.4.2", | ||
"mocha": "^4.0.1", | ||
"rimraf": "^2.6.1", | ||
"webpack": "^2.6.1" | ||
"webpack": "^3.3.0" | ||
}, | ||
@@ -52,0 +53,0 @@ "dependencies": { |
@@ -8,3 +8,3 @@ 'use strict'; | ||
status: result[0], | ||
data: utils.isObject(result[1]) ? JSON.parse(JSON.stringify(result[1])) : result[1], | ||
data: utils.isSimpleObject(result[1]) ? JSON.parse(JSON.stringify(result[1])) : result[1], | ||
headers: result[2], | ||
@@ -21,3 +21,3 @@ config: config | ||
var handler = utils.findHandler(mockAdapter.handlers, config.method, config.url, config.data, config.params); | ||
var handler = utils.findHandler(mockAdapter.handlers, config.method, config.url, config.data, config.params, config.headers); | ||
@@ -34,6 +34,6 @@ if (handler) { | ||
.then(resolve, reject); | ||
} else if (!(handler[2] instanceof Function)) { | ||
utils.settle(resolve, reject, makeResponse(handler.slice(2), config), mockAdapter.delayResponse); | ||
} else if (!(handler[3] instanceof Function)) { | ||
utils.settle(resolve, reject, makeResponse(handler.slice(3), config), mockAdapter.delayResponse); | ||
} else { | ||
var result = handler[2](config); | ||
var result = handler[3](config); | ||
// TODO throw a sane exception when return value is incorrect | ||
@@ -40,0 +40,0 @@ if (!(result.then instanceof Function)) { |
@@ -55,3 +55,3 @@ 'use strict'; | ||
var methodName = 'on' + method.charAt(0).toUpperCase() + method.slice(1); | ||
MockAdapter.prototype[methodName] = function(matcher, body) { | ||
MockAdapter.prototype[methodName] = function(matcher, body, requestHeaders) { | ||
var _this = this; | ||
@@ -61,3 +61,3 @@ var matcher = matcher === undefined ? /.*/ : matcher; | ||
function reply(code, response, headers) { | ||
var handler = [matcher, body, code, response, headers]; | ||
var handler = [matcher, body, requestHeaders, code, response, headers]; | ||
addHandler(method, _this.handlers, handler); | ||
@@ -71,3 +71,3 @@ return _this; | ||
replyOnce: function replyOnce(code, response, headers) { | ||
var handler = [matcher, body, code, response, headers]; | ||
var handler = [matcher, body, requestHeaders, code, response, headers]; | ||
addHandler(method, _this.handlers, handler); | ||
@@ -115,2 +115,2 @@ _this.replyOnceHandlers.push(handler); | ||
module.exports = MockAdapter; | ||
module.exports = module.exports.default = MockAdapter; |
@@ -21,8 +21,8 @@ 'use strict'; | ||
function findHandler(handlers, method, url, body, parameters) { | ||
function findHandler(handlers, method, url, body, parameters, headers) { | ||
return find(handlers[method.toLowerCase()], function(handler) { | ||
if (typeof handler[0] === 'string') { | ||
return isUrlMatching(url, handler[0]) && isBodyOrParametersMatching(method, body, parameters, handler[1]); | ||
return isUrlMatching(url, handler[0]) && isBodyOrParametersMatching(method, body, parameters, handler[1]) && isRequestHeadersMatching(headers, handler[2]); | ||
} else if (handler[0] instanceof RegExp) { | ||
return handler[0].test(url) && isBodyOrParametersMatching(method, body, parameters, handler[1]); | ||
return handler[0].test(url) && isBodyOrParametersMatching(method, body, parameters, handler[1]) && isRequestHeadersMatching(headers, handler[2]); | ||
} | ||
@@ -38,4 +38,10 @@ }); | ||
function isRequestHeadersMatching(requestHeaders, required) { | ||
if (required === undefined) return true; | ||
return isEqual(requestHeaders, required); | ||
} | ||
function isBodyOrParametersMatching(method, body, parameters, required) { | ||
if (method.toLowerCase() === 'get') { | ||
var allowedParamsMethods = ['delete', 'get', 'head', 'options']; | ||
if (allowedParamsMethods.indexOf(method.toLowerCase()) >= 0 ) { | ||
var params = required ? required.params : undefined; | ||
@@ -116,4 +122,4 @@ return isParametersMatching(parameters, params); | ||
function isObject(value) { | ||
return value !== null && typeof value === 'object'; | ||
function isSimpleObject(value) { | ||
return value !== null && value !== undefined && value.toString() === '[object Object]'; | ||
} | ||
@@ -124,5 +130,5 @@ | ||
findHandler: findHandler, | ||
isObject: isObject, | ||
isSimpleObject: isSimpleObject, | ||
purgeIfReplyOnce: purgeIfReplyOnce, | ||
settle: settle | ||
}; |
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
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
40280
731