UNPKG

connect-caminte

Version:

CrossDB session store for Connect and ExpressJS

140 lines (128 loc) 3.96 kB
/** * * @revision $Id: test.js 2013-10-08 04:54:16 Aleksey $ * @created 2013-10-08 04:54:16 * @category Express Helpers * @package connect-caminte * @version 0.0.4 * @copyright Copyright (c) 2009-2013 - All rights reserved. * @license MIT License * @author Alexey Gordeyev IK <aleksej@gordejev.lv> * @link http://www.gordejev.lv/ * * Created by init script * App based on TrinteJS MVC framework * TrinteJS homepage http://www.trintejs.com */ var driver = process.env.CAMINTE_DRIVER || 'memory'; var should = require('should'); var fs = require('fs'); var database = require('./database'); var ExpressSession = require('express-session'); var CaminteStore = require("./../lib/connect-caminte"); var SessionStore = CaminteStore(ExpressSession); var sid = 'XXXr4djvbu7ubi8708uyuby' + new Date().getTime(); var maxAge = 300000; // 3 min var db = database[driver]; var dbDir = './db'; // for sqlite /* create dir for sqlite */ var dstat, tstat; try { dstat = fs.statSync(dbDir); } catch (err) { console.log(err); } if (!dstat) { fs.mkdirSync(dbDir, '0755'); } try { tstat = fs.statSync(dbDir + '/test'); } catch (err) { console.log(err); } if (!tstat) { fs.mkdirSync(dbDir + '/test', '0755'); } /** * Simple tests for the Session store */ describe(driver + ' - Session store:', function () { 'use strict'; var store; before(function (done) { store = new SessionStore({ driver: driver, collection: 'session', db: db, clear_interval: 60, // 1 min secret: "feb722690aeccfa92ca9ee6fdf06e55a", maxAge: maxAge }, function () { setTimeout(function () { done(); }, 1000); }); }); after(function (done) { store.clear(done); }); it('Create and store session', function (done) { store.set(sid, { cookie: {ssid: sid, maxAge: maxAge} }, function (err, session) { should.equal(err, null); session.should.be.have.property('sid'); should.equal(session.sid, sid); should.equal(session.session_data.cookie.ssid, sid); should.equal(session.session_data.cookie.maxAge, maxAge); should.equal(session.expireAfterSeconds, maxAge / 1000); should.equal(session.ip, 'localhost'); should.equal(session.user, 'guest'); should.equal(session.loggedIn, 0); done(); }); }); it('Find stored session', function (done) { store.get(sid, function (err, session) { should.equal(err, null); should.equal(session.cookie.ssid, sid); done(); }); }); it('Count sessions', function (done) { store.length(function (err, count) { should.equal(err, null); should.equal(typeof count, 'number'); should.equal(count, 1); done(); }); }); it('Select all sessions', function (done) { store.all(function (err, sessions) { should.equal(err, null); should.equal(sessions.length, 1); done(); }); }); it('Destroy session', function (done) { store.destroy(sid, function (err) { should.equal(err, null); store.get(sid, function (err, session) { should.equal(err, null); should.equal(session, null); done(); }); }); }); it('Clear all sessions', function (done) { store.clear(function (err) { should.equal(err, null); store.length(function (err, count) { should.equal(err, null); should.equal(typeof count, 'number'); should.equal(count, 0); done(); }); }); }); });