Skip to content

Commit

Permalink
Adding HTTP status code to error.toJSON (axios#2956)
Browse files Browse the repository at this point in the history
* Adding HTTP status code to error.toJSON (axios#2947)

* Adding Error display div to internal server client.html

Co-authored-by: Jay <jasonsaayman@gmail.com>
  • Loading branch information
byrne-greg and jasonsaayman committed Sep 5, 2021
1 parent 7f2cb2e commit 41b3d21
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 3 deletions.
3 changes: 2 additions & 1 deletion lib/core/enhanceError.js
Expand Up @@ -35,7 +35,8 @@ module.exports = function enhanceError(error, config, code, request, response) {
stack: this.stack,
// Axios
config: this.config,
code: this.code
code: this.code,
status: this.response && this.response.status ? this.response.status : null
};
};
return error;
Expand Down
10 changes: 9 additions & 1 deletion sandbox/client.html
Expand Up @@ -5,7 +5,6 @@
<link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"/>
<style type="text/css">
pre {
max-height: 200px;
min-height: 39px;
overflow: auto;
}
Expand Down Expand Up @@ -58,6 +57,11 @@ <h3>Response</h3>
<pre id="response">No Data</pre>
</div>

<div class="well">
<h3>Error</h3>
<pre id="error">None</pre>
</div>

<script src="/axios.js"></script>
<script>
(function () {
Expand All @@ -81,6 +85,7 @@ <h3>Response</h3>
var submit = document.getElementById('submit');
var request = document.getElementById('request');
var response = document.getElementById('response');
var error = document.getElementById('error');

function acceptsData(method) {
return ['PATCH', 'POST', 'PUT'].indexOf(method) > -1;
Expand Down Expand Up @@ -138,8 +143,11 @@ <h3>Response</h3>
axios(options)
.then(function (res) {
response.innerHTML = JSON.stringify(res.data, null, 2);
error.innerHTML = "None";
})
.catch(function (res) {
error.innerHTML = JSON.stringify(res.toJSON(), null, 2)
console.error('Axios caught an error from request', res.toJSON());
response.innerHTML = JSON.stringify(res.data, null, 2);
});
};
Expand Down
1 change: 1 addition & 0 deletions test/specs/core/createError.spec.js
Expand Up @@ -23,6 +23,7 @@ describe('core::createError', function() {
expect(json.message).toBe('Boom!');
expect(json.config).toEqual({ foo: 'bar' });
expect(json.code).toBe('ESOMETHING');
expect(json.status).toBe(200);
expect(json.request).toBe(undefined);
expect(json.response).toBe(undefined);
});
Expand Down
12 changes: 11 additions & 1 deletion test/specs/core/enhanceError.spec.js
@@ -1,7 +1,7 @@
var enhanceError = require('../../../lib/core/enhanceError');

describe('core::enhanceError', function() {
it('should add config, config, request and response to error', function() {
it('should add config, code, request, response, and toJSON function to error', function() {
var error = new Error('Boom!');
var request = { path: '/foo' };
var response = { status: 200, data: { foo: 'bar' } };
Expand All @@ -11,9 +11,19 @@ describe('core::enhanceError', function() {
expect(error.code).toBe('ESOMETHING');
expect(error.request).toBe(request);
expect(error.response).toBe(response);
expect(typeof error.toJSON).toBe('function');
expect(error.isAxiosError).toBe(true);
});

it('should serialize to JSON with a status of null when there is no response', function() {
var error = new Error('Boom!');
var request = { path: '/foo' };
var response = undefined;

var errorAsJson = enhanceError(error, { foo: 'bar' }, 'ESOMETHING', request, response).toJSON();
expect(errorAsJson.status).toEqual(null);
});

it('should return error', function() {
var error = new Error('Boom!');
expect(enhanceError(error, { foo: 'bar' }, 'ESOMETHING')).toBe(error);
Expand Down

0 comments on commit 41b3d21

Please sign in to comment.