import * as assert from "assert"; import * as Promise from "bluebird"; import * as sinon from "sinon"; import * as MockDate from "mockdate"; import UserDataStore from "../../../src/lib/UserDataStore"; 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() { const options = { inMemoryOnly: true }; const data_store = new UserDataStore(options); const userid = "user"; const type = "1stfactor"; const 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() { const options = { inMemoryOnly: true }; const data_store = new UserDataStore(options); const userid = "user"; const type = "1stfactor"; const 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(); }); }); }