mirror of
https://github.com/tenrok/axios.git
synced 2026-05-15 11:59:42 +03:00
* Adding tests to show config.url mutation Because config.url is modified while processing the request when the baseURL is set, it is impossible to perform a retry with the provided config object. Ref #1628 * Fixing url combining without modifying config.url As config.url is not modified anymore during the request processing. The request can safely be retried after it failed with the provided config. resolves #1628
This commit is contained in:
committed by
Felipe Martins
parent
98e4acd893
commit
6fe506fda2
@@ -0,0 +1,20 @@
|
||||
var buildFullPath = require('../../../lib/core/buildFullPath');
|
||||
|
||||
describe('helpers::buildFullPath', function () {
|
||||
it('should combine URLs when the requestedURL is relative', function () {
|
||||
expect(buildFullPath('https://api.github.com', '/users')).toBe('https://api.github.com/users');
|
||||
});
|
||||
|
||||
it('should return the requestedURL when it is absolute', function () {
|
||||
expect(buildFullPath('https://api.github.com', 'https://api.example.com/users')).toBe('https://api.example.com/users');
|
||||
});
|
||||
|
||||
it('should not combine URLs when the baseURL is not configured', function () {
|
||||
expect(buildFullPath(undefined, '/users')).toBe('/users');
|
||||
});
|
||||
|
||||
it('should combine URLs when the baseURL and requestedURL are relative', function () {
|
||||
expect(buildFullPath('/api', '/users')).toBe('/api/users');
|
||||
});
|
||||
|
||||
});
|
||||
@@ -245,6 +245,30 @@ describe('requests', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('should not modify the config url with relative baseURL', function (done) {
|
||||
var config;
|
||||
|
||||
axios.get('/foo', {
|
||||
baseURL: '/api'
|
||||
}).catch(function (error) {
|
||||
config = error.config;
|
||||
});
|
||||
|
||||
getAjaxRequest().then(function (request) {
|
||||
request.respondWith({
|
||||
status: 404,
|
||||
statusText: 'NOT FOUND',
|
||||
responseText: 'Resource not found'
|
||||
});
|
||||
|
||||
setTimeout(function () {
|
||||
expect(config.baseURL).toEqual('/api');
|
||||
expect(config.url).toEqual('/foo');
|
||||
done();
|
||||
}, 100);
|
||||
});
|
||||
});
|
||||
|
||||
it('should allow overriding Content-Type header case-insensitive', function (done) {
|
||||
var response;
|
||||
var contentType = 'application/vnd.myapp.type+json';
|
||||
|
||||
@@ -646,6 +646,20 @@ describe('supports http with nodejs', function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should combine baseURL and url', function (done) {
|
||||
server = http.createServer(function (req, res) {
|
||||
res.end();
|
||||
}).listen(4444, function () {
|
||||
axios.get('/foo', {
|
||||
baseURL: 'http://localhost:4444/',
|
||||
}).then(function (res) {
|
||||
assert.equal(res.config.baseURL, 'http://localhost:4444/');
|
||||
assert.equal(res.config.url, '/foo');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user