diff --git a/lib/adapters/xhr.js b/lib/adapters/xhr.js index f83f1444bc..71e3a5e67c 100644 --- a/lib/adapters/xhr.js +++ b/lib/adapters/xhr.js @@ -30,7 +30,7 @@ module.exports = function xhrAdapter(config) { // HTTP basic authentication if (config.auth) { var username = config.auth.username || ''; - var password = unescape(encodeURIComponent(config.auth.password)) || ''; + var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); } diff --git a/test/specs/__helpers.js b/test/specs/__helpers.js index 660ae09a53..a08b8eb1cc 100644 --- a/test/specs/__helpers.js +++ b/test/specs/__helpers.js @@ -76,6 +76,21 @@ setupBasicAuthTest = function setupBasicAuthTest() { }, 100); }); + it('should accept HTTP Basic auth credentials without the password parameter', function (done) { + axios('/foo', { + auth: { + username: 'Aladdin' + } + }); + + setTimeout(function () { + var request = jasmine.Ajax.requests.mostRecent(); + + expect(request.requestHeaders['Authorization']).toEqual('Basic QWxhZGRpbjo='); + done(); + }, 100); + }); + it('should accept HTTP Basic auth credentials with non-Latin1 characters in password', function (done) { axios('/foo', { auth: { @@ -86,7 +101,6 @@ setupBasicAuthTest = function setupBasicAuthTest() { setTimeout(function () { var request = jasmine.Ajax.requests.mostRecent(); - console.log(request.requestHeaders['Authorization'], '\n\n\n'); expect(request.requestHeaders['Authorization']).toEqual('Basic QWxhZGRpbjpvcGVuIMOfw6fCo+KYg3Nlc2FtZQ=='); done();