2
0
mirror of https://github.com/tenrok/axios.git synced 2026-05-27 14:47:43 +03:00
Files
Willian Agostini 696fa753c5 fix: status is missing in AxiosError on and after v1.13.3 (#7368)
* test: add error handling tests for fetch and http adapters with status code

* fix: improve error handling in fetch adapter by including request and response in AxiosError

* fix: skip fetch test if fetch is not supported

* Update lib/adapters/fetch.js

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

* fix: improve error handling in fetch adapter by using the correct request object

---------

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-02-04 09:47:12 +02:00

96 lines
2.8 KiB
JavaScript

import assert from 'assert';
import http from 'http';
import axios from '../../../index.js';
describe('issues', function () {
describe('4999', function () {
it('should not fail with query parsing', async function () {
const {data} = await axios.get('https://postman-echo.com/get?foo1=bar1&foo2=bar2');
assert.strictEqual(data.args.foo1, 'bar1');
assert.strictEqual(data.args.foo2, 'bar2');
});
});
describe('5028', function () {
it('should handle set-cookie headers as an array', async function () {
const cookie1 = 'something=else; path=/; expires=Wed, 12 Apr 2023 12:03:42 GMT; samesite=lax; secure; httponly';
const cookie2 = 'something-ssr.sig=n4MlwVAaxQAxhbdJO5XbUpDw-lA; path=/; expires=Wed, 12 Apr 2023 12:03:42 GMT; samesite=lax; secure; httponly';
const server = http.createServer((req, res) => {
//res.setHeader('Set-Cookie', 'my=value');
res.setHeader('Set-Cookie', [cookie1, cookie2]);
res.writeHead(200);
res.write('Hi there');
res.end();
}).listen(0);
const request = axios.create();
request.interceptors.response.use((res) => {
assert.deepStrictEqual(res.headers['set-cookie'], [
cookie1, cookie2
]);
});
try {
await request({url: `http://localhost:${server.address().port}`});
} finally {
server.close()
}
});
});
describe('7364', function () {
it('fetch: should have status code in axios error', async function () {
const isFetchSupported = typeof fetch === 'function';
if (!isFetchSupported) {
this.skip();
}
const server = http.createServer((req, res) => {
res.statusCode = 400;
res.end();
}).listen(0);
const instance = axios.create({
baseURL: `http://localhost:${server.address().port}`,
adapter: "fetch",
});
try {
await instance.get("/status/400");
} catch (error) {
assert.equal(error.name, "AxiosError");
assert.equal(error.isAxiosError, true);
assert.equal(error.status, 400);
} finally {
server.close();
}
});
it('http: should have status code in axios error', async function () {
const server = http.createServer((req, res) => {
res.statusCode = 400;
res.end();
}).listen(0);
const instance = axios.create({
baseURL: `http://localhost:${server.address().port}`,
adapter: "http",
});
try {
await instance.get("/status/400");
} catch (error) {
assert.equal(error.name, "AxiosError");
assert.equal(error.isAxiosError, true);
assert.equal(error.status, 400);
} finally {
server.close();
}
});
});
});