mirror of
https://github.com/tenrok/axios.git
synced 2026-06-20 20:00:40 +03:00
Better tests for btoa
This commit is contained in:
@@ -0,0 +1,43 @@
|
|||||||
|
var axios = require('../../index');
|
||||||
|
|
||||||
|
module.exports = function setupBasicAuthTest() {
|
||||||
|
beforeEach(function () {
|
||||||
|
jasmine.Ajax.install();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
jasmine.Ajax.uninstall();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should accept HTTP Basic auth with username/password', function (done) {
|
||||||
|
axios({
|
||||||
|
url: '/foo',
|
||||||
|
auth: {
|
||||||
|
username: 'Aladdin',
|
||||||
|
password: 'open sesame'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
var request = jasmine.Ajax.requests.mostRecent();
|
||||||
|
|
||||||
|
expect(request.requestHeaders['Authorization']).toEqual('Basic: QWxhZGRpbjpvcGVuIHNlc2FtZQ==');
|
||||||
|
done();
|
||||||
|
}, 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail to encode HTTP Basic auth credentials with non-Latin1 characters', function (done) {
|
||||||
|
axios({
|
||||||
|
url: '/foo',
|
||||||
|
auth: {
|
||||||
|
username: 'Aladßç£☃din',
|
||||||
|
password: 'open sesame'
|
||||||
|
}
|
||||||
|
}).then(function(response) {
|
||||||
|
done(new Error('Should not succeed to make a HTTP Basic auth request with non-latin1 chars in credentials.'));
|
||||||
|
}).catch(function(error) {
|
||||||
|
expect(error.message).toEqual('INVALID_CHARACTER_ERR: DOM Exception 5');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
@@ -1,43 +1,5 @@
|
|||||||
var axios = require('../../index');
|
var setupBasicAuthTest = require('./__setupBasicAuthTest');
|
||||||
|
|
||||||
describe('basicAuth without btoa polyfill', function () {
|
describe('basicAuth without btoa polyfill', function () {
|
||||||
beforeEach(function () {
|
setupBasicAuthTest();
|
||||||
jasmine.Ajax.install();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(function () {
|
|
||||||
jasmine.Ajax.uninstall();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should accept HTTP Basic auth with username/password', function (done) {
|
|
||||||
axios({
|
|
||||||
url: '/foo',
|
|
||||||
auth: {
|
|
||||||
username: 'Aladdin',
|
|
||||||
password: 'open sesame'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
setTimeout(function () {
|
|
||||||
var request = jasmine.Ajax.requests.mostRecent();
|
|
||||||
|
|
||||||
expect(request.requestHeaders['Authorization']).toEqual('Basic: QWxhZGRpbjpvcGVuIHNlc2FtZQ==');
|
|
||||||
done();
|
|
||||||
}, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should fail to encode HTTP Basic auth credentials with non-Latin1 characters', function (done) {
|
|
||||||
axios({
|
|
||||||
url: '/foo',
|
|
||||||
auth: {
|
|
||||||
username: 'Aladßç£☃din',
|
|
||||||
password: 'open sesame'
|
|
||||||
}
|
|
||||||
}).then(function(response) {
|
|
||||||
done(new Error('Should not succeed to make a HTTP Basic auth request with non-latin1 chars in credentials.'))
|
|
||||||
}).catch(function(error) {
|
|
||||||
expect(error.message).toEqual('INVALID_CHARACTER_ERR: DOM Exception 5')
|
|
||||||
done()
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,52 +1,21 @@
|
|||||||
var axios = require('../../index');
|
var setupBasicAuthTest = require('./__setupBasicAuthTest');
|
||||||
|
var window_btoa;
|
||||||
|
|
||||||
describe('basicAuth with btoa polyfill', function () {
|
describe('basicAuth with btoa polyfill', function () {
|
||||||
beforeAll(function() {
|
beforeAll(function() {
|
||||||
this.original_btoa = window.btoa;
|
window_btoa = window.btoa;
|
||||||
window.btoa = undefined;
|
window.btoa = undefined;
|
||||||
})
|
});
|
||||||
|
|
||||||
afterAll(function() {
|
afterAll(function() {
|
||||||
window.btoa = this.original_btoa;
|
window.btoa = window_btoa;
|
||||||
})
|
window_btoa = undefined;
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
jasmine.Ajax.install();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(function () {
|
it('should not have native window.btoa', function () {
|
||||||
jasmine.Ajax.uninstall();
|
expect(window.btoa).toEqual(undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should accept HTTP Basic auth with username/password', function (done) {
|
setupBasicAuthTest();
|
||||||
axios({
|
|
||||||
url: '/foo',
|
|
||||||
auth: {
|
|
||||||
username: 'Aladdin',
|
|
||||||
password: 'open sesame'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
setTimeout(function () {
|
|
||||||
var request = jasmine.Ajax.requests.mostRecent();
|
|
||||||
|
|
||||||
expect(request.requestHeaders['Authorization']).toEqual('Basic: QWxhZGRpbjpvcGVuIHNlc2FtZQ==');
|
|
||||||
done();
|
|
||||||
}, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should fail to encode HTTP Basic auth credentials with non-Latin1 characters', function (done) {
|
|
||||||
axios({
|
|
||||||
url: '/foo',
|
|
||||||
auth: {
|
|
||||||
username: 'Aladßç£☃din',
|
|
||||||
password: 'open sesame'
|
|
||||||
}
|
|
||||||
}).then(function(response) {
|
|
||||||
done(new Error('Should not succeed to make a HTTP Basic auth request with non-latin1 chars in credentials.'))
|
|
||||||
}).catch(function(error) {
|
|
||||||
expect(error.message).toEqual('\'btoa\' failed: The string to be encoded contains characters outside of the Latin1 range.')
|
|
||||||
done()
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
var __btoa = require('../../../lib/helpers/btoa');
|
||||||
|
|
||||||
|
describe('btoa polyfill', function () {
|
||||||
|
it('should behave the same as native window.btoa', function () {
|
||||||
|
var data = 'Hello, world';
|
||||||
|
expect(__btoa(data)).toEqual(window.btoa(data));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw an error if char is out of range 0xFF', function () {
|
||||||
|
var err1, err2;
|
||||||
|
var data = 'I ♡ Unicode!';
|
||||||
|
|
||||||
|
try {
|
||||||
|
window.btoa(data);
|
||||||
|
} catch (e) {
|
||||||
|
err1 = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
__btoa(data);
|
||||||
|
} catch (e) {
|
||||||
|
err2 = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(err1.message).toEqual(err2.message);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user