mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-18 14:26:56 +00:00
178 lines
5.8 KiB
JavaScript
178 lines
5.8 KiB
JavaScript
'use strict';
|
|
|
|
var assert = require('assert');
|
|
var path = require('path');
|
|
var fs = require('fs');
|
|
var muk = require('muk');
|
|
|
|
|
|
for(var filepath in require.cache){
|
|
delete require.cache[filepath];
|
|
}
|
|
var Index = require('../../../lib/index.js');
|
|
var instance = new Index();
|
|
instance.load();
|
|
|
|
think.APP_PATH = path.dirname(__dirname) + think.sep + 'testApp';
|
|
|
|
var RedisSession = think.adapter('session', 'redis');
|
|
|
|
describe('adapter/session/redis', function(){
|
|
it('get instance, no options', function(){
|
|
var instance = new RedisSession();
|
|
assert.equal(instance.gcType, undefined);
|
|
//assert.equal(instance.cookie, undefined);
|
|
})
|
|
it('get instance', function(){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
assert.equal(instance.gcType, undefined);
|
|
assert.equal(instance.cookie, 'welefen');
|
|
})
|
|
it('get redis instance', function(){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.parseConfig = function(a, b, options){
|
|
assert.equal(options.from, 'session')
|
|
return options;
|
|
}
|
|
var redis = instance.getRedisInstance('get');
|
|
assert.equal(think.isObject(redis), true)
|
|
})
|
|
it('get redis instance, exist', function(){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.parseConfig = function(options){
|
|
assert.equal(options.from, undefined)
|
|
return options;
|
|
}
|
|
var redis = instance.getRedisInstance('get');
|
|
assert.equal(think.isObject(redis), true);
|
|
muk.restore();
|
|
})
|
|
it('getData, exist', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.data = {name: 'thinkjs'};
|
|
instance.getData().then(function(data){
|
|
assert.deepEqual(data, {name: 'thinkjs'});
|
|
done();
|
|
})
|
|
})
|
|
it('getData, from redis, empty', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.getRedisInstance = function(){
|
|
return {
|
|
get: function(cookie){
|
|
assert.equal(cookie, 'welefen');
|
|
return Promise.resolve(null)
|
|
}
|
|
}
|
|
}
|
|
instance.getData().then(function(data){
|
|
assert.deepEqual(data, {});
|
|
done();
|
|
})
|
|
})
|
|
it('getData, from redis, empty 1', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.getRedisInstance = function(){
|
|
return {
|
|
get: function(cookie){
|
|
assert.equal(cookie, 'welefen');
|
|
return Promise.resolve(null)
|
|
}
|
|
}
|
|
}
|
|
instance.getData()
|
|
instance.getData().then(function(data){
|
|
assert.deepEqual(data, {});
|
|
done();
|
|
})
|
|
})
|
|
it('get, item', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.getData = function(){
|
|
instance.data = {name: 'thinkjs'};
|
|
return Promise.resolve(instance.data);
|
|
}
|
|
instance.get('name').then(function(data){
|
|
assert.deepEqual(data, 'thinkjs');
|
|
done();
|
|
})
|
|
})
|
|
it('get, all', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.getData = function(){
|
|
instance.data = {name: 'thinkjs'};
|
|
return Promise.resolve(instance.data);
|
|
}
|
|
instance.get().then(function(data){
|
|
assert.deepEqual(data, {name: 'thinkjs'});
|
|
done();
|
|
})
|
|
})
|
|
it('set data', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.getData = function(){
|
|
instance.data = {name: 'thinkjs'};
|
|
return Promise.resolve(instance.data);
|
|
}
|
|
instance.set('name', 'value').then(function(data){
|
|
assert.deepEqual(instance.data, {name: 'value'});
|
|
done();
|
|
})
|
|
})
|
|
it('set data, with timeout', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.getData = function(){
|
|
instance.data = {name: 'thinkjs'};
|
|
return Promise.resolve(instance.data);
|
|
}
|
|
instance.set('name', 'value', 1000).then(function(data){
|
|
assert.deepEqual(instance.data, {name: 'value'});
|
|
assert.equal(instance.timeout, 1000)
|
|
done();
|
|
})
|
|
})
|
|
it('delete data, item', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.getData = function(){
|
|
instance.data = {name: 'thinkjs'};
|
|
return Promise.resolve(instance.data);
|
|
}
|
|
instance.delete('name').then(function(data){
|
|
assert.deepEqual(instance.data, {});
|
|
done();
|
|
})
|
|
})
|
|
it('delete data, all', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.getData = function(){
|
|
instance.data = {name: 'thinkjs', value: '1111'};
|
|
return Promise.resolve(instance.data);
|
|
}
|
|
instance.delete().then(function(data){
|
|
assert.deepEqual(instance.data, {});
|
|
done();
|
|
})
|
|
})
|
|
it('flush', function(done){
|
|
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
|
|
instance.getData = function(){
|
|
instance.data = {name: 'thinkjs', value: '1111'};
|
|
return Promise.resolve(instance.data);
|
|
}
|
|
instance.getRedisInstance = function(){
|
|
return {
|
|
set: function(name, value, timeout){
|
|
assert.equal(name, 'welefen');
|
|
assert.equal(value, '{"name":"thinkjs","value":"1111"}');
|
|
assert.equal(timeout, 86400)
|
|
return Promise.resolve();
|
|
}
|
|
}
|
|
}
|
|
instance.flush().then(function(data){
|
|
done();
|
|
})
|
|
})
|
|
})
|
|
|