meshblu-core-manager-token
Version:
Meshblu Token Manager
85 lines (72 loc) • 2.89 kB
text/coffeescript
{describe,beforeEach,it,expect} = global
_ = require 'lodash'
mongojs = require 'mongojs'
Datastore = require 'meshblu-core-datastore'
TokenManager = require '../'
describe 'TokenManager->revokeTokenByQuery', ->
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 tagged tokens are inserted', ->
beforeEach (done) ->
records = [
{
uuid: 'spiral'
hashedToken: 'U4Q+LOkeTvMW/0eKg9MCvhWEFH2MTNhRhJQF5wLlGiU='
metadata:
someDate: new Date()
tag: 'hello'
}
{
uuid: 'spiral'
hashedToken: 'PEDXcLLHInRFO7ccxgtTwT8IxkJE6ECZsp6s9KF31x8='
metadata:
someDate: new Date(Date.now() - (1000 * 60))
services: ['super', 'lame', 'awesome']
tag: 'hello'
}
]
.insert records, done
describe 'when called with a valid query', ->
beforeEach (done) ->
.revokeTokenByQuery {uuid: 'spiral', query: {tag: 'hello'}}, (error) =>
done error
it 'should have no tokens', (done) ->
.find { uuid: 'spiral' }, (error, records) =>
expect(records.length).to.equal 0
done()
describe 'when called with a date query', ->
beforeEach (done) ->
thirtySecondsAgo = new Date(Date.now() - (1000 * 30))
.revokeTokenByQuery { uuid: 'spiral', query: someDate: { $gt: thirtySecondsAgo } }, (error) =>
done error
it 'should have only one token', (done) ->
.find { uuid: 'spiral' }, (error, records) =>
hashedTokens = _.map records, 'hashedToken'
expect(hashedTokens).to.deep.equal [
'PEDXcLLHInRFO7ccxgtTwT8IxkJE6ECZsp6s9KF31x8='
]
done()
describe 'when called with a complex query', ->
beforeEach (done) ->
.revokeTokenByQuery {uuid: 'spiral', query: { services: { $in: ['super'] } }}, (error) =>
done error
it 'should have no tokens', (done) ->
.find { uuid: 'spiral' }, (error, records) =>
expect(records.length).to.equal 1
done()
describe 'when called with a weird key value in the query', ->
beforeEach (done) ->
.revokeTokenByQuery {uuid: 'spiral', query: { "something crazy yes" : true }}, (error) =>
done error
it 'should have no tokens', (done) ->
.find { uuid: 'spiral' }, (error, records) =>
expect(records.length).to.equal 2
done()