can-connect-feathers
Version:
Feathers client library for DoneJS and can-connect
76 lines (63 loc) • 3.19 kB
JavaScript
var QUnit = require('steal-qunit');
var decode = require('jwt-decode');
var readCookie = require('./utils').readCookie;
var getStoredToken = require('./utils').getStoredToken;
var payloadIsValid = require('./utils').payloadIsValid;
var hasValidToken = require('./utils').hasValidToken;
var convertLocalAuthData = require('./utils').convertLocalAuthData;
var token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiZXhwIjo5NDc2MzkyNDgwLCJpYXQiOjE0NzYzOTI0ODAsImlzcyI6ImZlYXRoZXJzIn0.EzmokNutNr98ULGl1sr12OYAAEoZ9ZTl1dTWTQiA7Ro';
var expiredToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiZXhwIjo0NzYzOTI0ODAsImlhdCI6MTQ3NjM5MjQ4MCwiaXNzIjoiZmVhdGhlcnMifQ.nlvKR9cBuWOuPl7hXzdM7N8JH1n86IuL1WaJverAoFk';
QUnit.module('can-connect-feathers/utils');
QUnit.test('readCookie', function (assert) {
document.cookie = 'feathers-jwt=' + token;
var cookieContents = readCookie('feathers-jwt');
assert.equal(cookieContents, token, 'Got the token from the cookie.');
});
QUnit.test('getStoredToken from sessionStorage', function (assert) {
window.sessionStorage.setItem('feathers-jwt', token);
var storedToken = getStoredToken('feathers-jwt');
assert.equal(storedToken, token, 'Got the token back from sessionStorage');
window.sessionStorage.removeItem('feathers-jwt');
});
QUnit.test('getStoredToken from localStorage', function (assert) {
window.localStorage.setItem('feathers-jwt', token);
var storedToken = getStoredToken('feathers-jwt');
assert.equal(storedToken, token, 'Got the token back from localStorage');
window.localStorage.removeItem('feathers-jwt');
});
QUnit.test('payloadIsValid', function (assert) {
var validPayload = decode(token);
var expiredPayload = decode(expiredToken);
assert.equal(payloadIsValid(validPayload), true, 'Non-expired token is valid.');
assert.equal(payloadIsValid(expiredPayload), false, 'Expired token is invalid.');
});
QUnit.test('hasValidToken', function (assert) {
document.cookie = 'feathers-jwt=' + expiredToken;
assert.equal(hasValidToken('feathers-jwt'), false, 'expired token was invalid.');
document.cookie = 'feathers-jwt=' + token;
assert.equal(hasValidToken('feathers-jwt'), true, 'non-expired token was valid.');
document.cookie = 'feathers-jwt=';
});
QUnit.test('convertLocalAuthData', function (assert) {
var originalData = {
strategy: 'local',
user: {
email: 'marshall@bitovi.com',
password: '1234'
}
};
var data = convertLocalAuthData(originalData);
assert.ok(originalData !== data, 'Got a new object back from convertLocalAuthData');
assert.equal(data.user, undefined, 'user property was removed');
assert.equal(data.email, 'marshall@bitovi.com', 'Email was set propertly.');
assert.equal(data.password, '1234', 'Password was set propertly');
var feathersLocalDefaults = {
strategy: 'local',
email: 'marshall@bitovi.com',
password: '1234'
};
var untouchedDefaults = convertLocalAuthData(feathersLocalDefaults);
assert.equal(untouchedDefaults.user, undefined, 'user property was removed');
assert.equal(untouchedDefaults.email, 'marshall@bitovi.com', 'Email was still in place.');
assert.equal(untouchedDefaults.password, '1234', 'Password was still in place');
});