-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.js
More file actions
95 lines (75 loc) · 2.57 KB
/
test.js
File metadata and controls
95 lines (75 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
var os = require('os');
var path = require('path');
var level = require('level');
var session = require('express-session');
var levelSession = require('./');
var test = require('tape');
var tmpDir = path.join(os.tmpDir(), 'level-session-' + Math.random());
var Store = levelSession(session);
test('life cycle', function(t) {
var leveldb = level(tmpDir);
var store = new Store(leveldb);
var obj = { cookie: { maxAge: 2000 }, name: 'tj' };
store.set('123', obj, assertSet);
function assertSet(err) {
t.notOk(err, 'should not have error on SET');
store.get('123', assertGet); // continue Get test
}
function assertGet(err, val) {
t.notOk(err, 'should not have error on GET');
t.deepEqual(val, obj, 'stored value should be correct');
store.destroy('123', assertDestroy); // continue destroy test
}
function assertDestroy(err) {
t.notOk(err, 'should not have error on DESTROY');
store.get('123', function(err, val) { // asert '123' is NotFound
t.notOk(err);
t.equal(val, null, 'sessionId should not be found anymore');
store.db.close(t.end); // close leveldb and end test
});
}
});
test('options: prefix', function(t) {
var leveldb = level(tmpDir);
var store = new Store(leveldb, {prefix: 'prefix!'});
var obj = { cookie: { maxAge: 2000 }, name: 'tj' };
store.set('123', obj, assertSet);
function assertSet(err) {
t.notOk(err);
store.get('123', assertGet); // continue Get test
}
function assertGet(err, val) {
t.notOk(err);
t.deepEqual(val, obj, 'data should be retrievable');
leveldb.get('prefix!123', function(err, val) {
t.notOk(err);
t.deepEqual(JSON.parse(val), obj, 'data should be stored with prefix set');
store.db.close(t.end); // close leveldb and end test
});
}
});
test('options:levelTTLOptions', function(t) {
var leveldb = level(tmpDir);
var store = new Store(leveldb, {levelTTLOptions: {checkFrequency: 15000}});
t.equal(store.db._ttl.options.checkFrequency, 15000,
'checkFrequency options should be set to levelTTL instance');
store.db.close(t.end); // close leveldb and end test
});
test('maxAge ttl', function(t) {
var leveldb = level(tmpDir);
var store = new Store(leveldb, {levelTTLOptions: {checkFrequency: 100}});
var obj = { cookie: { maxAge: 2000 }, name: 'tj' };
store.set('123', obj, t.notOk);
setTimeout(function() {
store.db.get('123', function(err, data) {
t.notOk(err);
t.deepEqual(data, obj, 'it should not expire yet');
});
}, 1000);
setTimeout(function() {
store.db.get('123', function(err/*, data*/) {
t.ok(err.notFound, 'it should be expired');
t.end();
});
}, 3000);
});