Socket
Socket
Sign inDemoInstall

axios-mock-adapter

Package Overview
Dependencies
Maintainers
1
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

axios-mock-adapter - npm Package Compare versions

Comparing version 1.7.1 to 1.8.0

786

dist/axios-mock-adapter.js

@@ -10,43 +10,69 @@ (function webpackUniversalModuleDefinition(root, factory) {

root["AxiosMockAdapter"] = factory(root["axios"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_3__) {
})(this, function(__WEBPACK_EXTERNAL_MODULE_5__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ return __webpack_require__(__webpack_require__.s = 6);
/******/ })

@@ -56,417 +82,443 @@ /************************************************************************/

/* 0 */
/***/ function(module, exports, __webpack_require__) {
/***/ (function(module, exports, __webpack_require__) {
'use strict';
var utils = __webpack_require__(4);
var handleRequest = __webpack_require__(1);
function makeResponse(result, config) {
return {
status: result[0],
data: result[1],
headers: result[2],
config: config
};
}
var VERBS = ['get', 'post', 'head', 'delete', 'patch', 'put'];
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;
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);
}
var handler = utils.findHandler(mockAdapter.handlers, config.method, config.url, config.data, config.params);
function reset() {
this.handlers = VERBS.reduce(function(accumulator, verb) {
accumulator[verb] = [];
return accumulator;
}, {});
this.replyOnceHandlers = [];
}
if (handler) {
utils.purgeIfReplyOnce(mockAdapter, handler);
function MockAdapter(axiosInstance, options) {
reset.call(this);
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);
}
}
if (axiosInstance) {
this.axiosInstance = axiosInstance;
this.originalAdapter = axiosInstance.defaults.adapter;
this.delayResponse = options && options.delayResponse > 0
? options.delayResponse
: null;
axiosInstance.defaults.adapter = adapter.call(this);
}
}
module.exports = handleRequest;
MockAdapter.prototype.adapter = adapter;
MockAdapter.prototype.restore = function restore() {
if (this.axiosInstance) {
this.axiosInstance.defaults.adapter = this.originalAdapter;
}
};
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
MockAdapter.prototype.reset = reset;
var pSlice = Array.prototype.slice;
var objectKeys = __webpack_require__(3);
var isArguments = __webpack_require__(2);
VERBS.concat('any').forEach(function(method) {
var methodName = 'on' + method.charAt(0).toUpperCase() + method.slice(1);
MockAdapter.prototype[methodName] = function(matcher, body) {
var _this = this;
var matcher = matcher === undefined ? /.*/ : matcher;
return {
reply: function reply(code, response, headers) {
var handler = [matcher, body, code, response, headers];
addHandler(method, _this.handlers, handler);
return _this;
},
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;
replyOnce: function replyOnce(code, response, headers) {
var handler = [matcher, body, code, response, headers];
addHandler(method, _this.handlers, handler);
_this.replyOnceHandlers.push(handler);
return _this;
},
} else if (actual instanceof Date && expected instanceof Date) {
return actual.getTime() === expected.getTime();
passThrough: function passThrough() {
var handler = [matcher, body];
addHandler(method, _this.handlers, handler);
return _this;
}
};
};
});
// 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;
function addHandler(method, handlers, handler) {
if (method === 'any') {
VERBS.forEach(function(verb) {
handlers[verb].push(handler);
});
} else {
handlers[method].push(handler);
}
}
// 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);
}
}
module.exports = MockAdapter;
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;
}
/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {
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;
}
var utils = __webpack_require__(2);
function makeResponse(result, config) {
return {
status: result[0],
data: result[1],
headers: result[2],
config: config
};
}
/***/ }),
/* 2 */
/***/ (function(module, exports) {
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 supportsArgumentsClass = (function(){
return Object.prototype.toString.call(arguments)
})() == '[object Arguments]';
var handler = utils.findHandler(mockAdapter.handlers, config.method, config.url, config.data);
exports = module.exports = supportsArgumentsClass ? supported : unsupported;
if (handler) {
utils.purgeIfReplyOnce(mockAdapter, handler);
exports.supported = supported;
function supported(object) {
return Object.prototype.toString.call(object) == '[object Arguments]';
};
if (handler.length === 2) { // passThrough handler
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);
}
}
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;
};
module.exports = handleRequest;
/***/ }),
/* 3 */
/***/ (function(module, exports) {
/***/ },
/* 2 */
/***/ function(module, exports, __webpack_require__) {
exports = module.exports = typeof Object.keys === 'function'
? Object.keys : shim;
'use strict';
exports.shim = shim;
function shim (obj) {
var keys = [];
for (var key in obj) keys.push(key);
return keys;
}
var axios = __webpack_require__(3);
var deepEqual = __webpack_require__(4);
function isEqual(a, b) {
return deepEqual(a, b, { strict: true });
}
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
// < 0.13.0 will not have default headers set on a custom instance
var rejectWithError = !!axios.create().defaults.headers;
"use strict";
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 findHandler(handlers, method, url, body) {
return find(handlers[method.toLowerCase()], function(handler) {
if (typeof handler[0] === 'string') {
return url === handler[0] && isBodyMatching(body, handler[1]);
} else if (handler[0] instanceof RegExp) {
return handler[0].test(url) && isBodyMatching(body, handler[1]);
}
});
}
var axios = __webpack_require__(5);
var deepEqual = __webpack_require__(1);
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 isEqual(a, b) {
return deepEqual(a, b, { strict: true });
}
function purgeIfReplyOnce(mock, handler) {
var index = mock.replyOnceHandlers.indexOf(handler);
if (index > -1) {
mock.replyOnceHandlers.splice(index, 1);
// < 0.13.0 will not have default headers set on a custom instance
var rejectWithError = !!axios.create().defaults.headers;
Object.keys(mock.handlers).forEach(function(key) {
index = mock.handlers[key].indexOf(handler);
if (index > -1) {
mock.handlers[key].splice(index, 1);
}
});
}
}
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 settle(resolve, reject, response, delay) {
if (delay > 0) {
setTimeout(function() {
settle(resolve, reject, response);
}, delay);
return;
}
function findHandler(handlers, method, url, body, parameters) {
return find(handlers[method.toLowerCase()], function(handler) {
if (typeof handler[0] === 'string') {
return isUrlMatching(url, handler[0]) && isBodyOrParametersMatching(method, body, parameters, handler[1]);
} else if (handler[0] instanceof RegExp) {
return handler[0].test(url) && isBodyOrParametersMatching(method, body, parameters, handler[1]);
}
});
}
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;
}
function isUrlMatching(url, required) {
var noSlashUrl = url[0] === '/' ? url.substr(1) : url;
var noSlashRequired = required[0] === '/' ? required.substr(1) : required;
return (noSlashUrl === noSlashRequired);
}
// Support for axios < 0.11
if (response.status >= 200 && response.status < 300) {
resolve(response);
} else {
reject(response);
}
}
function isBodyOrParametersMatching(method, body, parameters, required) {
if (method.toLowerCase() === 'get') {
var params = required ? required.params : undefined;
return isParametersMatching(parameters, params);
} else {
return isBodyMatching(body, required);
}
}
function createErrorResponse(message, config, response) {
// Support for axios < 0.13.0
if (!rejectWithError) return response;
function isParametersMatching(parameters, required) {
if (required === undefined && parameters === undefined) {
return true;
}
var error = new Error(message);
error.config = config;
error.response = response;
return error;
}
return isEqual(parameters, required);
}
module.exports = {
find: find,
findHandler: findHandler,
purgeIfReplyOnce: purgeIfReplyOnce,
settle: settle
};
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) {
var index = mock.replyOnceHandlers.indexOf(handler);
if (index > -1) {
mock.replyOnceHandlers.splice(index, 1);
/***/ },
/* 3 */
/***/ function(module, exports) {
Object.keys(mock.handlers).forEach(function(key) {
index = mock.handlers[key].indexOf(handler);
if (index > -1) {
mock.handlers[key].splice(index, 1);
}
});
}
}
module.exports = __WEBPACK_EXTERNAL_MODULE_3__;
function settle(resolve, reject, response, delay) {
if (delay > 0) {
setTimeout(function() {
settle(resolve, reject, response);
}, delay);
return;
}
/***/ },
/* 4 */
/***/ function(module, exports, __webpack_require__) {
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;
}
var pSlice = Array.prototype.slice;
var objectKeys = __webpack_require__(5);
var isArguments = __webpack_require__(6);
// Support for axios < 0.11
if (response.status >= 200 && response.status < 300) {
resolve(response);
} else {
reject(response);
}
}
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;
function createErrorResponse(message, config, response) {
// Support for axios < 0.13.0
if (!rejectWithError) return response;
} else if (actual instanceof Date && expected instanceof Date) {
return actual.getTime() === expected.getTime();
var error = new Error(message);
error.config = config;
error.response = response;
return error;
}
// 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;
module.exports = {
find: find,
findHandler: findHandler,
purgeIfReplyOnce: purgeIfReplyOnce,
settle: settle
};
// 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;
}
/***/ }),
/* 5 */
/***/ (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;
}
module.exports = __WEBPACK_EXTERNAL_MODULE_5__;
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;
}
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/***/ },
/* 5 */
/***/ function(module, exports) {
exports = module.exports = typeof Object.keys === 'function'
? Object.keys : shim;
var handleRequest = __webpack_require__(0);
exports.shim = shim;
function shim (obj) {
var keys = [];
for (var key in obj) keys.push(key);
return keys;
}
var VERBS = ['get', 'post', 'head', 'delete', 'patch', 'put'];
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);
}
/***/ },
/* 6 */
/***/ function(module, exports) {
function reset() {
this.handlers = VERBS.reduce(function(accumulator, verb) {
accumulator[verb] = [];
return accumulator;
}, {});
this.replyOnceHandlers = [];
}
var supportsArgumentsClass = (function(){
return Object.prototype.toString.call(arguments)
})() == '[object Arguments]';
function MockAdapter(axiosInstance, options) {
reset.call(this);
exports = module.exports = supportsArgumentsClass ? supported : unsupported;
if (axiosInstance) {
this.axiosInstance = axiosInstance;
this.originalAdapter = axiosInstance.defaults.adapter;
this.delayResponse = options && options.delayResponse > 0
? options.delayResponse
: null;
axiosInstance.defaults.adapter = adapter.call(this);
}
}
exports.supported = supported;
function supported(object) {
return Object.prototype.toString.call(object) == '[object Arguments]';
};
MockAdapter.prototype.adapter = adapter;
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;
};
MockAdapter.prototype.restore = function restore() {
if (this.axiosInstance) {
this.axiosInstance.defaults.adapter = this.originalAdapter;
}
};
MockAdapter.prototype.reset = reset;
/***/ }
/******/ ])
VERBS.concat('any').forEach(function(method) {
var methodName = 'on' + method.charAt(0).toUpperCase() + method.slice(1);
MockAdapter.prototype[methodName] = function(matcher, body) {
var _this = this;
var matcher = matcher === undefined ? /.*/ : matcher;
return {
reply: function reply(code, response, headers) {
var handler = [matcher, body, code, response, headers];
addHandler(method, _this.handlers, handler);
return _this;
},
replyOnce: function replyOnce(code, response, headers) {
var handler = [matcher, body, code, response, headers];
addHandler(method, _this.handlers, handler);
_this.replyOnceHandlers.push(handler);
return _this;
},
passThrough: function passThrough() {
var handler = [matcher, body];
addHandler(method, _this.handlers, handler);
return _this;
}
};
};
});
;
function addHandler(method, handlers, handler) {
if (method === 'any') {
VERBS.forEach(function(verb) {
handlers[verb].push(handler);
});
} else {
handlers[method].push(handler);
}
}
module.exports = MockAdapter;
/***/ })
/******/ ]);
});

@@ -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]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(){return function(e){var t=this;return 3!==arguments.length?new Promise(function(n,r){a(t,n,r,e)}):void a(t,arguments[0],arguments[1],arguments[2])}.bind(this)}function o(){this.handlers=u.reduce(function(e,t){return e[t]=[],e},{}),this.replyOnceHandlers=[]}function s(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 i(e,t,n){"any"===e?u.forEach(function(e){t[e].push(n)}):t[e].push(n)}var a=n(1),u=["get","post","head","delete","patch","put"];s.prototype.adapter=r,s.prototype.restore=function(){this.axiosInstance&&(this.axiosInstance.defaults.adapter=this.originalAdapter)},s.prototype.reset=o,u.concat("any").forEach(function(e){var t="on"+e.charAt(0).toUpperCase()+e.slice(1);s.prototype[t]=function(t,n){var r=this,t=void 0===t?/.*/:t;return{reply:function(o,s,a){var u=[t,n,o,s,a];return i(e,r.handlers,u),r},replyOnce:function(o,s,a){var u=[t,n,o,s,a];return i(e,r.handlers,u),r.replyOnceHandlers.push(u),r},passThrough:function(){var o=[t,n];return i(e,r.handlers,o),r}}}}),e.exports=s},function(e,t,n){function r(e,t){return{status:e[0],data: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 i=s.findHandler(e.handlers,o.method,o.url,o.data);if(i)if(s.purgeIfReplyOnce(e,i),2===i.length)e.axiosInstance.request(o).then(t,n);else if(i[2]instanceof Function){var a=i[2](o);a.then instanceof Function?a.then(function(i){s.settle(t,n,r(i,o),e.delayResponse)},function(t){e.delayResponse>0?setTimeout(function(){n(t)},e.delayResponse):n(t)}):s.settle(t,n,r(a,o),e.delayResponse)}else s.settle(t,n,r(i.slice(2),o),e.delayResponse);else s.settle(t,n,{status:404,config:o},e.delayResponse)}var s=n(2);e.exports=o},function(e,t,n){"use strict";function r(e,t){return l(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 s(e,t,n,r){return o(e[t.toLowerCase()],function(e){return"string"==typeof e[0]?n===e[0]&&i(r,e[1]):e[0]instanceof RegExp?e[0].test(n)&&i(r,e[1]):void 0})}function i(e,t){if(void 0===t)return!0;var n;try{n=JSON.parse(e)}catch(o){}return n?r(n,t):r(e,t)}function a(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),n>-1&&e.handlers[r].splice(n,1)}))}function u(e,t,n,r){return r>0?void setTimeout(function(){u(e,t,n)},r):n.config&&n.config.validateStatus?void(n.config.validateStatus(n.status)?e(n):t(c("Request failed with status code "+n.status,n.config,n))):void(n.status>=200&&n.status<300?e(n):t(n))}function c(e,t,n){if(!p)return n;var r=new Error(e);return r.config=t,r.response=n,r}var f=n(3),l=n(4),p=!!f.create().defaults.headers;e.exports={find:o,findHandler:s,purgeIfReplyOnce:a,settle:u}},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 s(e,t,n){var s,f;if(r(e)||r(t))return!1;if(e.prototype!==t.prototype)return!1;if(u(e))return!!u(t)&&(e=i.call(e),t=i.call(t),c(e,t,n));if(o(e)){if(!o(t))return!1;if(e.length!==t.length)return!1;for(s=0;s<e.length;s++)if(e[s]!==t[s])return!1;return!0}try{var l=a(e),p=a(t)}catch(d){return!1}if(l.length!=p.length)return!1;for(l.sort(),p.sort(),s=l.length-1;s>=0;s--)if(l[s]!=p[s])return!1;for(s=l.length-1;s>=0;s--)if(f=l[s],!c(e[f],t[f],n))return!1;return typeof e==typeof t}var i=Array.prototype.slice,a=n(5),u=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:s(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}])});
!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=6)}([function(e,t,n){function r(e,t){return{status:e[0],data: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(4);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(e,t){return h(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){var n="/"===e[0]?e.substr(1):e,r="/"===t[0]?t.substr(1):t;return n===r}function u(e,t,n,r){if("get"===e.toLowerCase()){var o=r?r.params:void 0;return a(n,o)}return c(t,r)}function a(e,t){return void 0===t&&void 0===e||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),n>-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(!y)return n;var r=new Error(e);return r.config=t,r.response=n,r}var d=n(5),h=n(1),y=!!d.create().defaults.headers;e.exports={find:o,findHandler:i,purgeIfReplyOnce:f,settle:l}},function(t,n){t.exports=e},function(e,t,n){"use strict";function r(){return function(e){var t=this;return 3!==arguments.length?new Promise(function(n,r){u(t,n,r,e)}):void 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){var r=this,t=void 0===t?/.*/:t;return{reply:function(o,i,u){var a=[t,n,o,i,u];return s(e,r.handlers,a),r},replyOnce:function(o,i,u){var a=[t,n,o,i,u];return s(e,r.handlers,a),r.replyOnceHandlers.push(a),r},passThrough:function(){var o=[t,n];return s(e,r.handlers,o),r}}}}),e.exports=i}])});
{
"name": "axios-mock-adapter",
"version": "1.7.1",
"version": "1.8.0",
"description": "Axios adapter that allows to easily mock requests",

@@ -43,8 +43,8 @@ "main": "src/index.js",

"chai": "^3.5.0",
"cross-env": "^3.1.3",
"eslint": "^3.8.1",
"cross-env": "^3.2.3",
"eslint": "^3.17.1",
"istanbul": "^0.4.5",
"mocha": "^3.1.2",
"rimraf": "^2.5.2",
"webpack": "^1.13.2"
"rimraf": "^2.6.1",
"webpack": "^2.2.1"
},

@@ -51,0 +51,0 @@ "dependencies": {

@@ -46,2 +46,25 @@ # axios-mock-adapter

Mocking a `GET` request with specific parameters
```js
var axios = require('axios');
var MockAdapter = require('axios-mock-adapter');
// This sets the mock adapter on the default instance
var mock = new MockAdapter(axios);
// Mock any GET request to /users
// arguments for reply are (status, data, headers)
mock.onGet('/users', { params: { searchText: 'John' } }).reply(200, {
users: [
{ id: 1, name: 'John Smith' }
]
});
axios.get('/users', { params: { searchText: 'John' } } )
.then(function(response) {
console.log(response.data);
});
```
To add a delay to responses, specify a delay amount (in milliseconds) when instantiating the adapter

@@ -48,0 +71,0 @@

@@ -18,3 +18,3 @@ var utils = require('./utils');

var handler = utils.findHandler(mockAdapter.handlers, config.method, config.url, config.data);
var handler = utils.findHandler(mockAdapter.handlers, config.method, config.url, config.data, config.params);

@@ -25,2 +25,4 @@ if (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

@@ -27,0 +29,0 @@ .axiosInstance

@@ -21,8 +21,8 @@ 'use strict';

function findHandler(handlers, method, url, body) {
function findHandler(handlers, method, url, body, parameters) {
return find(handlers[method.toLowerCase()], function(handler) {
if (typeof handler[0] === 'string') {
return url === handler[0] && isBodyMatching(body, handler[1]);
return isUrlMatching(url, handler[0]) && isBodyOrParametersMatching(method, body, parameters, handler[1]);
} else if (handler[0] instanceof RegExp) {
return handler[0].test(url) && isBodyMatching(body, handler[1]);
return handler[0].test(url) && isBodyOrParametersMatching(method, body, parameters, handler[1]);
}

@@ -32,2 +32,25 @@ });

function isUrlMatching(url, required) {
var noSlashUrl = url[0] === '/' ? url.substr(1) : url;
var noSlashRequired = required[0] === '/' ? required.substr(1) : required;
return (noSlashUrl === noSlashRequired);
}
function isBodyOrParametersMatching(method, body, parameters, required) {
if (method.toLowerCase() === 'get') {
var params = required ? required.params : undefined;
return isParametersMatching(parameters, params);
} else {
return isBodyMatching(body, required);
}
}
function isParametersMatching(parameters, required) {
if (required === undefined && parameters === undefined) {
return true;
}
return isEqual(parameters, required);
}
function isBodyMatching(body, requiredBody) {

@@ -34,0 +57,0 @@ if (requiredBody === undefined) {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc