mirror of
https://github.com/tenrok/axios.git
synced 2026-05-15 11:59:42 +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 () {
|
||||
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()
|
||||
});
|
||||
});
|
||||
setupBasicAuthTest();
|
||||
});
|
||||
|
||||
@@ -1,52 +1,21 @@
|
||||
var axios = require('../../index');
|
||||
var setupBasicAuthTest = require('./__setupBasicAuthTest');
|
||||
var window_btoa;
|
||||
|
||||
describe('basicAuth with btoa polyfill', function () {
|
||||
beforeAll(function() {
|
||||
this.original_btoa = window.btoa;
|
||||
window_btoa = window.btoa;
|
||||
window.btoa = undefined;
|
||||
})
|
||||
});
|
||||
|
||||
afterAll(function() {
|
||||
window.btoa = this.original_btoa;
|
||||
})
|
||||
|
||||
beforeEach(function () {
|
||||
jasmine.Ajax.install();
|
||||
window.btoa = window_btoa;
|
||||
window_btoa = undefined;
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
jasmine.Ajax.uninstall();
|
||||
it('should not have native window.btoa', function () {
|
||||
expect(window.btoa).toEqual(undefined);
|
||||
});
|
||||
|
||||
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('\'btoa\' failed: The string to be encoded contains characters outside of the Latin1 range.')
|
||||
done()
|
||||
});
|
||||
});
|
||||
setupBasicAuthTest();
|
||||
});
|
||||
|
||||
|
||||
@@ -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