70 lines
2.2 KiB
JavaScript
70 lines
2.2 KiB
JavaScript
|
|
var assert = require('assert');
|
|
var Promise = require('bluebird');
|
|
var sinon = require('sinon');
|
|
var MockDate = require('mockdate');
|
|
var UserDataStore = require('../../../src/lib/user_data_store');
|
|
var DataStore = require('nedb');
|
|
|
|
describe('test user data store', function() {
|
|
describe('test authentication traces', test_authentication_traces);
|
|
});
|
|
|
|
function test_authentication_traces() {
|
|
it('should save an authentication trace in db', function() {
|
|
var options = {};
|
|
options.inMemoryOnly = true;
|
|
|
|
var data_store = new UserDataStore(DataStore, options);
|
|
var userid = 'user';
|
|
var type = '1stfactor';
|
|
var is_success = false;
|
|
return data_store.save_authentication_trace(userid, type, is_success)
|
|
.then(function(doc) {
|
|
assert('_id' in doc);
|
|
assert.equal(doc.userid, 'user');
|
|
assert.equal(doc.is_success, false);
|
|
assert.equal(doc.type, '1stfactor');
|
|
return Promise.resolve();
|
|
});
|
|
});
|
|
|
|
it('should return 3 last authentication traces', function() {
|
|
var options = {};
|
|
options.inMemoryOnly = true;
|
|
|
|
var data_store = new UserDataStore(DataStore, options);
|
|
var userid = 'user';
|
|
var type = '1stfactor';
|
|
var is_success = false;
|
|
MockDate.set('2/1/2000');
|
|
return data_store.save_authentication_trace(userid, type, false)
|
|
.then(function(doc) {
|
|
MockDate.set('1/2/2000');
|
|
return data_store.save_authentication_trace(userid, type, true);
|
|
})
|
|
.then(function(doc) {
|
|
MockDate.set('1/7/2000');
|
|
return data_store.save_authentication_trace(userid, type, false);
|
|
})
|
|
.then(function(doc) {
|
|
MockDate.set('1/2/2000');
|
|
return data_store.save_authentication_trace(userid, type, false);
|
|
})
|
|
.then(function(doc) {
|
|
MockDate.set('1/5/2000');
|
|
return data_store.save_authentication_trace(userid, type, false);
|
|
})
|
|
.then(function(doc) {
|
|
return data_store.get_last_authentication_traces(userid, type, false, 3);
|
|
})
|
|
.then(function(docs) {
|
|
assert.equal(docs.length, 3);
|
|
assert.deepEqual(docs[0].date, new Date('2/1/2000'));
|
|
assert.deepEqual(docs[1].date, new Date('1/7/2000'));
|
|
assert.deepEqual(docs[2].date, new Date('1/5/2000'));
|
|
return Promise.resolve();
|
|
})
|
|
});
|
|
}
|