meshblu-core-manager-token
Version:
Meshblu Token Manager
85 lines (67 loc) • 2.55 kB
text/coffeescript
{describe,beforeEach,it,expect} = global
mongojs = require 'mongojs'
Datastore = require 'meshblu-core-datastore'
TokenManager = require '../'
describe 'TokenManager->verifyToken', ->
beforeEach (done) ->
= 'im-a-pepper'
= resolve: (uuid, callback) => callback(null, uuid)
database = mongojs 'token-manager-test', ['things']
= new Datastore
database: database
collection: 'things'
database.things.remove done
beforeEach ->
= new TokenManager {, , }
describe 'when called with an invalid uuid', ->
beforeEach (done) ->
.verifyToken uuid: 'not-supergirl', token: 'token', (error, ) =>
done error
it 'should yield false', ->
expect().to.be.false
describe 'when the token is invalid', ->
beforeEach (done) ->
.insert
uuid: 'superperson'
hashedToken: 'not-even-a-hash'
metadata: {}
, done
beforeEach (done) ->
.verifyToken uuid: 'superperson', token: 'invalid', (error, ) =>
done error
it 'should yield false', ->
expect().to.be.false
describe 'when the token has expiresOn', ->
beforeEach (done) ->
.insert
uuid: 'superperson'
hashedToken: 'QXxm1YUGk11jbSfTnqyc2xT47cYIWS8kqeXoqMJYlcA='
expiresOn: new Date(Date.now() - (1000 * 60))
metadata:
createdAt: new Date()
, done
beforeEach (done) ->
.verifyToken uuid: 'superperson', token: 'abc123', (error, ) =>
done error
it 'should yield true', ->
expect().to.be.true
it 'should not be in the database', (done) ->
.find { uuid: 'superperson', 'T/GMBdFNOc9l3uagnYZSwgFfjtp8Vlf6ryltQUEUY1U=' }, (error, records) =>
return done error if error?
expect(records.length).to.equal 0
done()
describe 'when uuid "uuid" has the session token "POPPED"', ->
beforeEach (done) ->
record =
uuid: 'superman'
hashedToken: 'd5/NnLFR29SDb6d7AXTj8Jx+efETnN1JBQaknjF6vDA='
metadata:
createdAt: new Date()
.insert record, done
beforeEach (done) ->
pepper = 'is super secret, ssshh'
= new TokenManager {,pepper,}
.verifyToken {uuid: 'superman', token: 'POPPED'}, (error, ) =>
done error
it 'should yield true', ->
expect().to.be.true