nitrogen-core
Version:
Core services used across ingestion, registry, and consumption servers.
58 lines (49 loc) • 2.42 kB
JavaScript
var assert = require('assert')
, moment = require('moment')
, core = require('../../lib')
, jwt = require('jsonwebtoken');
describe('accessToken service', function() {
it('can create and remove tokens', function(done) {
core.services.accessTokens.create(core.fixtures.models.principals.anotherUser, function(err, accessToken) {
assert(!err);
core.services.accessTokens.findByTokenCached(accessToken.token, function(err, accessToken) {
assert(!err);
assert(accessToken);
core.config.cache_provider.get('accessTokens', "token." + accessToken.token, function(err, accessTokenObj) {
assert(!err);
assert(accessTokenObj);
core.services.accessTokens.remove({ _id: accessToken.id }, function(err, removed) {
assert(!err);
assert.equal(removed, 1);
core.config.cache_provider.get('accessTokens', "token." + accessToken.token, function(err, accessTokenObj) {
assert(!err);
assert(!accessTokenObj);
done();
});
});
});
});
});
});
it('can create a token with the correct default expiration (1 day)', function(done) {
core.services.accessTokens.create(core.fixtures.models.principals.anotherUser, function(err, accessToken) {
assert(!err);
var expires = moment(accessToken.expiration);
var oneDayFromNow = moment().add(1, 'days');
assert((oneDayFromNow - expires) == (60 * 60 * 24 * 1000));
// test to make sure token is valid.
jwt.verify(accessToken.token, core.config.access_token_signing_key, function(err, jwtToken) {
assert(!err);
done();
});
});
});
it('can create a token with a custom expiration', function(done) {
core.services.accessTokens.create(core.fixtures.models.principals.anotherUser, { expires: moment().add(30, 'days') }, function(err, accessToken) {
assert(!err);
var thirtyDaysFromNow = moment().add(30, 'days')
assert((moment(accessToken.expires_at) - thirtyDaysFromNow) < 1000);
done();
});
});
});