2017-05-17 04:17:46 +07:00
|
|
|
|
|
|
|
import * as assert from "assert";
|
|
|
|
import * as Promise from "bluebird";
|
|
|
|
import * as sinon from "sinon";
|
|
|
|
import * as MockDate from "mockdate";
|
2017-07-16 19:55:01 +07:00
|
|
|
import UserDataStore from "../../../../src/server/lib/UserDataStore";
|
2017-05-21 17:14:59 +07:00
|
|
|
import nedb = require("nedb");
|
2017-05-17 04:17:46 +07:00
|
|
|
|
|
|
|
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
|
|
|
|
};
|
|
|
|
|
2017-05-21 17:14:59 +07:00
|
|
|
const data_store = new UserDataStore(options, nedb);
|
2017-05-17 04:17:46 +07:00
|
|
|
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
|
|
|
|
};
|
|
|
|
|
2017-05-21 17:14:59 +07:00
|
|
|
const data_store = new UserDataStore(options, nedb);
|
2017-05-17 04:17:46 +07:00
|
|
|
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();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|