mirror of
https://github.com/tenrok/axios.git
synced 2026-06-20 20:00:40 +03:00
fix: unclear error message is thrown when specifying an empty proxy authorization (#6314)
* fix: add AxiosError to Invalid proxy authorization * fix: minor update * Update test/unit/adapters/http.js Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: remove redundant check Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: code style Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: style Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: correct assert Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: João Gabriel Quaresma de Almeida <joaoGabriel55> Co-authored-by: Jay <jasonsaayman@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -193,12 +193,16 @@ function setProxy(options, configProxy, location) {
|
|||||||
|
|
||||||
if (proxy.auth) {
|
if (proxy.auth) {
|
||||||
// Support proxy auth object form
|
// Support proxy auth object form
|
||||||
if (proxy.auth.username || proxy.auth.password) {
|
const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password);
|
||||||
|
|
||||||
|
if (validProxyAuth) {
|
||||||
proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');
|
proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');
|
||||||
|
} else if (typeof proxy.auth === 'object') {
|
||||||
|
throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { proxy });
|
||||||
}
|
}
|
||||||
const base64 = Buffer
|
|
||||||
.from(proxy.auth, 'utf8')
|
const base64 = Buffer.from(proxy.auth, 'utf8').toString('base64');
|
||||||
.toString('base64');
|
|
||||||
options.headers['Proxy-Authorization'] = 'Basic ' + base64;
|
options.headers['Proxy-Authorization'] = 'Basic ' + base64;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1361,6 +1361,29 @@ describe('supports http with nodejs', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('when invalid proxy options are provided', function () {
|
||||||
|
it('should throw error', function () {
|
||||||
|
const proxy = {
|
||||||
|
protocol: "http:",
|
||||||
|
host: "hostname.abc.xyz",
|
||||||
|
port: 3300,
|
||||||
|
auth: {
|
||||||
|
username: "",
|
||||||
|
password: "",
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return axios.get('https://test-domain.abc', {proxy})
|
||||||
|
.then(function(){
|
||||||
|
assert.fail('Does not throw');
|
||||||
|
}, function (error) {
|
||||||
|
assert.strictEqual(error.message, 'Invalid proxy authorization');
|
||||||
|
assert.strictEqual(error.code, 'ERR_BAD_OPTION');
|
||||||
|
assert.deepStrictEqual(error.config.proxy, proxy);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
context('different options for direct proxy configuration (without env variables)', () => {
|
context('different options for direct proxy configuration (without env variables)', () => {
|
||||||
const destination = 'www.example.com';
|
const destination = 'www.example.com';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user