mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-18 14:26:56 +00:00
372 lines
10 KiB
JavaScript
372 lines
10 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 redisSocket = think.adapter('socket', 'redis');
|
|
|
|
describe('adapter/socket/redis', function(){
|
|
it('get instance', function(){
|
|
var instance = new redisSocket();
|
|
assert.deepEqual(instance.config, { port: 6379, host: '127.0.0.1', password: '' });
|
|
})
|
|
it('get connection', function(done){
|
|
var npm = think.npm;
|
|
var wait = think.await;
|
|
think.npm = function(){
|
|
return {
|
|
createClient: function(port, host, config){
|
|
assert.equal(port, 6379);
|
|
assert.equal(host, '127.0.0.1');
|
|
return {
|
|
on: function(type, callback){
|
|
if(type === 'connect'){
|
|
callback && callback();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
think.await = function(str, callback){
|
|
assert.equal(str, 'redis://127.0.0.1:6379');
|
|
return callback && callback();
|
|
}
|
|
var instance = new redisSocket();
|
|
instance.getConnection().then(function(connection){
|
|
think.npm = npm;
|
|
think.await = wait;
|
|
done();
|
|
})
|
|
}),
|
|
it('get connection, change host & port', function(done){
|
|
var npm = think.npm;
|
|
var wait = think.await;
|
|
think.npm = function(){
|
|
return {
|
|
createClient: function(port, host, config){
|
|
assert.equal(port, 1234);
|
|
assert.equal(host, 'www.welefen.com');
|
|
return {
|
|
on: function(type, callback){
|
|
if(type === 'connect'){
|
|
callback && callback();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
think.await = function(str, callback){
|
|
assert.equal(str, 'redis://www.welefen.com:1234');
|
|
return callback && callback();
|
|
}
|
|
var instance = new redisSocket({
|
|
host: 'www.welefen.com',
|
|
port: 1234
|
|
});
|
|
instance.getConnection().then(function(connection){
|
|
think.npm = npm;
|
|
think.await = wait;
|
|
done();
|
|
})
|
|
}),
|
|
it('get connection, has password', function(done){
|
|
var npm = think.npm;
|
|
var wait = think.await;
|
|
think.npm = function(){
|
|
return {
|
|
createClient: function(port, host, config){
|
|
assert.equal(port, 1234);
|
|
assert.equal(host, 'www.welefen.com');
|
|
return {
|
|
on: function(type, callback){
|
|
if(type === 'connect'){
|
|
callback && callback();
|
|
}
|
|
},
|
|
auth: function(password, callback){
|
|
assert.equal(password, 'password');
|
|
callback && callback();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
think.await = function(str, callback){
|
|
assert.equal(str, 'redis://www.welefen.com:1234');
|
|
return callback && callback();
|
|
}
|
|
var instance = new redisSocket({
|
|
host: 'www.welefen.com',
|
|
port: 1234,
|
|
password: 'password'
|
|
});
|
|
instance.getConnection().then(function(connection){
|
|
think.npm = npm;
|
|
think.await = wait;
|
|
done();
|
|
})
|
|
})
|
|
it('get connection, error', function(done){
|
|
var npm = think.npm;
|
|
var wait = think.await;
|
|
var reject = think.reject;
|
|
think.npm = function(){
|
|
return {
|
|
createClient: function(port, host, config){
|
|
assert.equal(port, 1234);
|
|
assert.equal(host, 'www.welefen.com');
|
|
return {
|
|
on: function(type, callback){
|
|
if(type === 'error'){
|
|
callback && callback(new Error('redis get connection error'));
|
|
}
|
|
},
|
|
auth: function(password, callback){
|
|
assert.equal(password, 'password');
|
|
callback && callback();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
think.await = function(str, callback){
|
|
assert.equal(str, 'redis://www.welefen.com:1234');
|
|
return callback && callback();
|
|
}
|
|
think.reject = function(err){
|
|
return Promise.reject(err);
|
|
}
|
|
var instance = new redisSocket({
|
|
host: 'www.welefen.com',
|
|
port: 1234,
|
|
password: 'password'
|
|
});
|
|
instance.getConnection().catch(function(err){
|
|
assert.equal(err.message, 'redis get connection error');
|
|
assert.equal(instance.connection, null);
|
|
think.npm = npm;
|
|
think.await = wait;
|
|
think.reject = reject;
|
|
done();
|
|
})
|
|
})
|
|
it('get connection, error 1', function(done){
|
|
var npm = think.npm;
|
|
var wait = think.await;
|
|
var reject = think.reject;
|
|
think.npm = function(){
|
|
return {
|
|
createClient: function(port, host, config){
|
|
assert.equal(port, 1234);
|
|
assert.equal(host, 'www.welefen.com');
|
|
return {
|
|
on: function(type, callback){
|
|
if(type === 'error'){
|
|
callback && callback(new Error('EADDRNOTAVAIL'));
|
|
}
|
|
},
|
|
auth: function(password, callback){
|
|
assert.equal(password, 'password');
|
|
callback && callback();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
think.await = function(str, callback){
|
|
assert.equal(str, 'redis://www.welefen.com:1234');
|
|
return callback && callback();
|
|
}
|
|
think.reject = function(err){
|
|
return Promise.reject(err);
|
|
}
|
|
var instance = new redisSocket({
|
|
host: 'www.welefen.com',
|
|
port: 1234,
|
|
password: 'password'
|
|
});
|
|
instance.getConnection().catch(function(err){
|
|
assert.equal(err.message, 'Address not available, redis://www.welefen.com:1234. http://www.thinkjs.org/doc/error_message.html#eaddrnotavail');
|
|
assert.equal(instance.connection, null);
|
|
think.npm = npm;
|
|
think.await = wait;
|
|
think.reject = reject;
|
|
done();
|
|
})
|
|
})
|
|
it('get connection, exist', function(done){
|
|
var instance = new redisSocket({
|
|
host: 'www.welefen.com',
|
|
port: 1234,
|
|
password: 'password'
|
|
});
|
|
instance.connection = 'welefen';
|
|
instance.getConnection().then(function(connection){
|
|
assert.equal(connection, 'welefen')
|
|
done();
|
|
})
|
|
})
|
|
it('get connection, fail', function(done){
|
|
var instance = new redisSocket({
|
|
host: 'www.welefen.com',
|
|
port: 1234,
|
|
password: 'password'
|
|
});
|
|
var npm = think.npm;
|
|
think.npm = function(){
|
|
return Promise.reject(new Error('reject'));
|
|
}
|
|
instance.getConnection().catch(function(err){
|
|
think.npm = npm;
|
|
assert.equal(err.message, 'reject')
|
|
done();
|
|
})
|
|
})
|
|
it('on', function(done){
|
|
var instance = new redisSocket();
|
|
instance.getConnection = function(){
|
|
return Promise.resolve({
|
|
on: function(event, callback){
|
|
assert.equal(event, 'test');
|
|
assert.equal(think.isFunction(callback), true);
|
|
}
|
|
})
|
|
}
|
|
instance.on('test', function(){}).then(function(){
|
|
done();
|
|
})
|
|
})
|
|
it('wrap', function(done){
|
|
var instance = new redisSocket();
|
|
instance.getConnection = function(){
|
|
var obj = {
|
|
get: function(key, callback){
|
|
assert.equal(key, 'key');
|
|
callback && callback();
|
|
}
|
|
}
|
|
instance.connection = obj;
|
|
return Promise.resolve(obj);
|
|
}
|
|
instance.wrap('get', 'key').then(function(){
|
|
done();
|
|
})
|
|
})
|
|
it('wrap reject', function(done){
|
|
var instance = new redisSocket();
|
|
var reject = think.reject;
|
|
think.reject = function(err){
|
|
return Promise.reject(err);
|
|
}
|
|
instance.getConnection = function(){
|
|
var obj = {
|
|
get: function(key, callback){
|
|
assert.equal(key, 'key');
|
|
callback && callback(new Error('redis wrap error'));
|
|
}
|
|
}
|
|
instance.connection = obj;
|
|
return Promise.resolve(obj);
|
|
}
|
|
instance.wrap('get', 'key').catch(function(err){
|
|
assert.equal(err.message, 'redis wrap error');
|
|
think.reject = reject;
|
|
done();
|
|
})
|
|
})
|
|
it('get', function(done){
|
|
var instance = new redisSocket();
|
|
instance.getConnection = function(){
|
|
var obj = {
|
|
get: function(key, callback){
|
|
assert.equal(key, 'key');
|
|
callback && callback();
|
|
}
|
|
}
|
|
instance.connection = obj;
|
|
return Promise.resolve(obj);
|
|
}
|
|
instance.get('key').then(function(){
|
|
done();
|
|
})
|
|
})
|
|
it('set', function(done){
|
|
var instance = new redisSocket();
|
|
instance.getConnection = function(){
|
|
var obj = {
|
|
set: function(key, value, callback){
|
|
assert.equal(key, 'key');
|
|
assert.equal(value, 'value');
|
|
callback && callback();
|
|
}
|
|
}
|
|
instance.connection = obj;
|
|
return Promise.resolve(obj);
|
|
}
|
|
instance.set('key', 'value').then(function(){
|
|
done();
|
|
})
|
|
}),
|
|
it('set, timeout', function(done){
|
|
var instance = new redisSocket();
|
|
instance.getConnection = function(){
|
|
var obj = {
|
|
set: function(key, value, callback){
|
|
assert.equal(key, 'key');
|
|
assert.equal(value, 'value');
|
|
callback && callback();
|
|
},
|
|
expire: function(key, timeout, callback){
|
|
assert.equal(timeout, 10000);
|
|
callback && callback();
|
|
}
|
|
}
|
|
instance.connection = obj;
|
|
return Promise.resolve(obj);
|
|
}
|
|
instance.set('key', 'value', 10000).then(function(){
|
|
done();
|
|
})
|
|
})
|
|
it('delete', function(done){
|
|
var instance = new redisSocket();
|
|
instance.getConnection = function(){
|
|
var obj = {
|
|
del: function(key, callback){
|
|
assert.equal(key, 'key');
|
|
callback && callback();
|
|
}
|
|
}
|
|
instance.connection = obj;
|
|
return Promise.resolve(obj);
|
|
}
|
|
instance.delete('key').then(function(){
|
|
done();
|
|
})
|
|
})
|
|
it('close', function(){
|
|
var instance = new redisSocket();
|
|
var flag = false;
|
|
instance.connection = {
|
|
end: function(){
|
|
flag = true;
|
|
}
|
|
}
|
|
instance.close();
|
|
assert.equal(flag, true);
|
|
})
|
|
}) |