Files
marketing-app/server/node_modules/connect-sqlite3/test/test.js
fahed 35d84b6bff Marketing Hub: RBAC, i18n (AR/EN), tasks overhaul, team/user merge, tutorial
Features:
- Full RBAC with 3 roles (superadmin/manager/contributor)
- Ownership tracking on posts, tasks, campaigns, projects
- Task system: assign to anyone, filter combobox, visibility scoping
- Team members merged into users table (single source of truth)
- Post thumbnails on kanban cards from attachments
- Publication link validation before publishing
- Interactive onboarding tutorial with Settings restart
- Full Arabic/English i18n with RTL layout support
- Language toggle in sidebar, IBM Plex Sans Arabic font
- Brand-based visibility filtering for non-superadmins
- Manager can only create contributors
- Profile completion flow for new users
- Cookie-based sessions (express-session + SQLite)
2026-02-08 20:46:58 +03:00

125 lines
4.4 KiB
JavaScript

var should = require('should'),
session = require('express-session'),
util = require('util'),
SQLiteStore = require('../lib/connect-sqlite3.js')(session);
describe('connect-sqlite3 basic test suite', function() {
before(function() {
this.memStore = new SQLiteStore({db: ':memory:', dir: 'dbs'});
});
after(function() {
//this.memStore.close();
});
it('it should save a new session record', function(done) {
this.memStore.set('1111222233334444', {cookie: {maxAge:2000}, name: 'sample name'}, function(err, rows) {
should.not.exist(err, 'set() returned an error');
rows.should.be.empty;
done();
});
});
it('it should retrieve an active session', function(done) {
this.memStore.get('1111222233334444', function(err, session) {
should.not.exist(err, 'get() returned an error');
should.exist(session);
(session).should.eql({cookie: {maxAge:2000}, name: 'sample name'});
done();
});
});
it('it should gracefully handle retrieving an unkonwn session', function(done) {
this.memStore.get('hope-and-change', function(err, rows) {
should.not.exist(err, 'get() unknown session returned an error');
should.equal(undefined, rows, 'unknown session is not undefined');
done();
});
});
it('it should only contain one session', function(done) {
this.memStore.length(function(err, len) {
should.not.exist(err, 'session count returned an error');
should.exist(len);
len.should.equal(1);
done();
});
});
it('it should clear all session records', function(done) {
var that = this;
this.memStore.clear(function(err, success) {
should.not.exist(err, 'clear returned an error');
success.should.be.true;
that.memStore.length(function(err, len) {
should.not.exist(err, 'session count after clear returned an error');
should.exist(len);
len.should.equal(0);
done();
});
});
});
it('it should destroy a session', function(done) {
var that = this;
this.memStore.set('555666777', {cookie: {maxAge:1000}, name: 'Rob Dobilina'}, function(err, rows) {
should.not.exist(err, 'set() returned an error');
rows.should.be.empty;
that.memStore.destroy('555666777', function(err) {
should.not.exist(err, 'destroy returned an error');
that.memStore.length(function(err, len) {
should.not.exist(err, 'session count after destroy returned an error');
should.exist(len);
len.should.equal(0);
done();
});
});
});
});
});
describe('connect-sqlite3 shared cache', function() {
it("should retrieve in one cached session what's stored in another.", function(done) {
var cwd = process.cwd();
var memStore = new SQLiteStore({db: 'file::memory:?cache=shared', mode: 0x20046});
process.chdir('..'); // Ensure we aren't opening a shared disk file
var memStore2 = new SQLiteStore({db: 'file::memory:?cache=shared', mode: 0x20046});
memStore.set('1111222233334444', {cookie: {maxAge:2011}, name: 'sample name'}, function(err, rows) {
process.chdir(cwd); // Restore dir
should.not.exist(err, 'set() returned an error');
rows.should.be.empty;
memStore2.get('1111222233334444', function(err, session) {
should.not.exist(err, 'get() returned an error');
should.exist(session);
(session).should.eql({cookie: {maxAge:2011}, name: 'sample name'});
done();
});
});
});
it("should not retrieve in one uncached session what's stored in another.", function(done) {
var memStore = new SQLiteStore({db: ':memory:'});
var memStore2 = new SQLiteStore({db: ':memory:'});
memStore.set('1111222233334444', {cookie: {maxAge:2011}, name: 'sample name'}, function(err, rows) {
should.not.exist(err, 'set() returned an error');
rows.should.be.empty;
memStore2.get('1111222233334444', function(err, session) {
should.not.exist(err, 'get() returned an error');
should.not.exist(session);
done();
});
});
});
});