@planet/user-store
Advanced tools
Comparing version 2.1.0 to 3.0.0
@@ -16,7 +16,9 @@ var Emitter = require('tiny-emitter'); | ||
this._store.set(user); | ||
setTimeout(function() { | ||
this.emit('update', user); | ||
}.bind(this)); | ||
setTimeout( | ||
function() { | ||
this.emit('update', user); | ||
}.bind(this) | ||
); | ||
}; | ||
module.exports = Manager; |
var key = '@planet/user-store#2'; | ||
var store = require('store/dist/store.modern'); | ||
var decode = require('jwt-decode'); | ||
@@ -8,2 +9,9 @@ exports.get = function() { | ||
user = store.get(key) || null; | ||
if (user) { | ||
var claims = decode(user.token); | ||
if (!(claims.exp * 1000 > Date.now())) { | ||
user = null; | ||
store.remove(key); | ||
} | ||
} | ||
} catch (_) { | ||
@@ -24,2 +32,6 @@ // pass | ||
} | ||
var claims = decode(user.token); | ||
if (!(claims.exp * 1000 > Date.now())) { | ||
throw new Error('The exp claim must be for a future date'); | ||
} | ||
try { | ||
@@ -26,0 +38,0 @@ store.set(key, user); |
{ | ||
"name": "@planet/user-store", | ||
"version": "2.1.0", | ||
"version": "3.0.0", | ||
"description": "Simple event emitting store for Planet users", | ||
@@ -21,2 +21,3 @@ "license": "Apache-2.0", | ||
"dependencies": { | ||
"jwt-decode": "^2.2.0", | ||
"store": "^2.0.4", | ||
@@ -26,7 +27,8 @@ "tiny-emitter": "^1.0.2" | ||
"devDependencies": { | ||
"code": "^4.0.0", | ||
"eslint": "^3.17.1", | ||
"eslint-config-planet": "^12.0.0", | ||
"lab": "^12.1.0", | ||
"sinon": "^1.17.7", | ||
"code": "^4.1.0", | ||
"eslint": "^4.5.0", | ||
"eslint-config-planet": "^14.0.0", | ||
"jwt-simple": "^0.5.1", | ||
"lab": "^14.2.0", | ||
"sinon": "^3.2.1", | ||
"watchy": "^0.6.7" | ||
@@ -33,0 +35,0 @@ }, |
var _store = require('store/dist/store.modern'); | ||
var api = require('../../lib/index'); | ||
var expect = require('code').expect; | ||
var lab = exports.lab = require('lab').script(); | ||
var lab = (exports.lab = require('lab').script()); | ||
var sinon = require('sinon'); | ||
var jwt = require('jwt-simple'); | ||
lab.experiment('API', function() { | ||
lab.afterEach(function(done) { | ||
@@ -15,6 +15,24 @@ _store.clearAll(); | ||
lab.experiment('set()', function() { | ||
var future = new Date(); | ||
future.setMonth(future.getMonth() + 1); | ||
var past = new Date(); | ||
past.setMonth(past.getMonth() - 1); | ||
var secret = 'burrito'; | ||
var validToken = jwt.encode( | ||
{exp: Math.round(future.getTime() / 1000)}, | ||
secret | ||
); | ||
var expiredToken = jwt.encode( | ||
{exp: Math.round(past.getTime() / 1000)}, | ||
secret | ||
); | ||
lab.test('stores a user object', function(done) { | ||
var user = {token: 'raw token'}; | ||
var date = new Date(); | ||
date.setMonth(date.getMonth() + 1); | ||
var user = {token: validToken}; | ||
api.set(user); | ||
@@ -29,3 +47,3 @@ expect(api.get()).to.equal(user); | ||
lab.test('clears the store if null is provided', function(done) { | ||
var user = {token: 'raw token'}; | ||
var user = {token: validToken}; | ||
@@ -47,4 +65,24 @@ api.set(user); | ||
lab.test('throws if token is invalid', function(done) { | ||
var user = {token: 'bogus'}; | ||
function call() { | ||
return api.set(user); | ||
} | ||
expect(call).to.throw(/^Invalid token specified/); | ||
done(); | ||
}); | ||
lab.test('throws if token has expired', function(done) { | ||
var user = {token: expiredToken}; | ||
function call() { | ||
return api.set(user); | ||
} | ||
expect(call).to.throw(/^The exp claim must be for a future date/); | ||
done(); | ||
}); | ||
lab.test('triggers an asynchronous update event', function(done) { | ||
var user = {token: 'raw token'}; | ||
var user = {token: validToken}; | ||
@@ -67,5 +105,3 @@ var callback = sinon.spy(); | ||
}); | ||
}); | ||
}); |
var Emitter = require('tiny-emitter'); | ||
var Manager = require('../../lib/manager'); | ||
var expect = require('code').expect; | ||
var lab = exports.lab = require('lab').script(); | ||
var lab = (exports.lab = require('lab').script()); | ||
var sinon = require('sinon'); | ||
lab.experiment('Manager', function() { | ||
var store; | ||
@@ -24,3 +23,2 @@ lab.beforeEach(function(done) { | ||
lab.experiment('constructor', function() { | ||
lab.test('creates a new manager given a store', function(done) { | ||
@@ -32,7 +30,5 @@ var manager = new Manager(store); | ||
}); | ||
}); | ||
lab.experiment('get()', function() { | ||
lab.test('calls store.get()', function(done) { | ||
@@ -51,7 +47,5 @@ var manager = new Manager(store); | ||
}); | ||
}); | ||
lab.experiment('set()', function() { | ||
lab.test('calls store.set()', function(done) { | ||
@@ -80,5 +74,3 @@ var manager = new Manager(store); | ||
}); | ||
}); | ||
}); |
var _store = require('store/dist/store.modern'); | ||
var expect = require('code').expect; | ||
var lab = exports.lab = require('lab').script(); | ||
var jwt = require('jwt-simple'); | ||
var lab = (exports.lab = require('lab').script()); | ||
var store = require('../../lib/store'); | ||
lab.experiment('store', function() { | ||
var future = new Date(); | ||
future.setMonth(future.getMonth() + 1); | ||
var past = new Date(); | ||
past.setMonth(past.getMonth() - 1); | ||
var secret = 'burrito'; | ||
var validToken = jwt.encode( | ||
{exp: Math.round(future.getTime() / 1000)}, | ||
secret | ||
); | ||
var expiredToken = jwt.encode( | ||
{exp: Math.round(past.getTime() / 1000)}, | ||
secret | ||
); | ||
lab.afterEach(function(done) { | ||
@@ -14,5 +29,4 @@ _store.clearAll(); | ||
lab.experiment('set()', function() { | ||
lab.test('stores an object', function(done) { | ||
var user = {token: 'raw token'}; | ||
var user = {token: validToken}; | ||
store.set(user); | ||
@@ -24,3 +38,3 @@ expect(store.get()).to.equal(user); | ||
lab.test('clears the store if null is provided', function(done) { | ||
var user = {token: 'raw token'}; | ||
var user = {token: validToken}; | ||
store.set(user); | ||
@@ -34,3 +48,3 @@ expect(store.get()).to.equal(user); | ||
lab.test('throws for too many keys', function(done) { | ||
var user = {token: 'raw token', foo: 'bar'}; | ||
var user = {token: validToken, foo: 'bar'}; | ||
var call = function() { | ||
@@ -51,9 +65,7 @@ store.set(user); | ||
}); | ||
}); | ||
lab.experiment('get()', function() { | ||
lab.test('gets a previously stored object', function(done) { | ||
var user = {token: 'raw token'}; | ||
var user = {token: validToken}; | ||
store.set(user); | ||
@@ -69,4 +81,15 @@ expect(store.get()).to.equal(user); | ||
lab.test('returns null if stored user token has expired', function(done) { | ||
var validUser = {token: validToken}; | ||
var expiredUser = {token: expiredToken}; | ||
_store.set('@planet/user-store#2', validUser); | ||
expect(store.get()).to.equal(validUser); | ||
_store.set('@planet/user-store#2', expiredUser); | ||
expect(store.get()).to.equal(null); | ||
done(); | ||
}); | ||
}); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
11695
287
3
7
+ Addedjwt-decode@^2.2.0
+ Addedjwt-decode@2.2.0(transitive)