mirror of
https://github.com/sstent/alex_app1.git
synced 2026-01-25 16:42:02 +00:00
204 lines
6.3 KiB
JavaScript
204 lines
6.3 KiB
JavaScript
GLOBAL.DEBUG = true;
|
|
|
|
var assert = require('assert'),
|
|
mongo = require('../lib/mongoskin');
|
|
|
|
console.log('======== test MongoSkin.db ========');
|
|
(function(){
|
|
var username = 'testuser',
|
|
password = 'password';
|
|
|
|
db = mongo.db('localhost/test');
|
|
db.open(function(err, db) {
|
|
assert.ok(!err);
|
|
assert.ok(db, err && err.stack);
|
|
db.addUser(username, password, function(err, result){
|
|
var authdb = mongo.db(username + ':' + password +'@localhost/test');
|
|
authdb.open(function(err, db){
|
|
assert.ok(!err, err && err.stack);
|
|
});
|
|
var faildb = mongo.db(username + ':wrongpassword@localhost/test');
|
|
faildb.open(function(err, db){
|
|
assert.ok(err, 'should not auth');
|
|
assert.ok(!db, 'should not return db');
|
|
});
|
|
});
|
|
});
|
|
})();
|
|
|
|
(function(){
|
|
db = mongo.db('db://admin:admin@localhost:27017/test?auto_reconnect');
|
|
db.open(function(err, db){
|
|
assert.ok(err instanceof Error);
|
|
})
|
|
})();
|
|
|
|
var bindToBlog = {
|
|
first: function(fn) {
|
|
this.findOne(fn);
|
|
}
|
|
};
|
|
|
|
console.log('======== test MongoSkin.router ========');
|
|
var testdb1 = mongo.db('localhost/test1');
|
|
var testdb2 = mongo.db('localhost/test2');
|
|
var router = mongo.router(function(name){
|
|
switch(name){
|
|
case 'user':
|
|
case 'message':
|
|
return testdb1;
|
|
default:
|
|
return testdb2;
|
|
}
|
|
});
|
|
assert.equal(router.collection('user'), testdb1.collection('user'), 'user should router to testdb1');
|
|
assert.equal(router.collection('message'), testdb1.collection('message'), 'message should router to testdb1');
|
|
assert.equal(router.collection('others'), testdb2.collection('others'), 'others should router to testdb2');
|
|
router.bind('user');
|
|
router.bind('others');
|
|
assert.equal(router.user, testdb1.user, 'user property should router to testdb1');
|
|
assert.equal(router.others, testdb2.others, 'user property should router to testdb1');
|
|
|
|
console.log('======== test MongoSkin.bind ========');
|
|
var db = mongo.db('localhost/test_mongoskin');
|
|
db.bind('blog', bindToBlog);
|
|
db.bind('users');
|
|
assert.equal(db.blog.first, bindToBlog.first);
|
|
assert.ok(db.users);
|
|
|
|
console.log('======== test SkinDb bson ========');
|
|
assert.ok(db.ObjectID.createFromHexString('a7b79d4dca9d730000000000'));
|
|
|
|
console.log('======== test SkinDb.bind ========');
|
|
db.bind('blog2', bindToBlog);
|
|
db.bind('user2');
|
|
assert.equal(db.blog2.first, bindToBlog.first);
|
|
assert.ok(db.user2);
|
|
|
|
console.log('======== test SkinDb.open ========');
|
|
(function(){
|
|
var db1, db2;
|
|
db.open(function(err, db) {
|
|
assert.ok(db, err && err.stack);
|
|
db1 = db;
|
|
assert.equal(db1.state, 'connected');
|
|
if (db2) {
|
|
assert.equal(db1, db2, 'should alwayse be the same instance in db.open.');
|
|
}
|
|
});
|
|
|
|
db.open(function(err, db) {
|
|
assert.ok(db, err && err.stack);
|
|
db2 = db;
|
|
assert.equal(db2.state, 'connected');
|
|
if (db1) {
|
|
assert.equal(db1, db2, 'should alwayse be the same instance in db.open.');
|
|
}
|
|
});
|
|
|
|
})()
|
|
|
|
console.log('======== test normal method of SkinDb ========');
|
|
db.createCollection('test_createCollection', function(err, collection) {
|
|
assert.equal(db.db.state, 'connected');
|
|
assert.ok(collection, err && err.stack);
|
|
});
|
|
|
|
|
|
console.log('======== test SkinDb.collection ========');
|
|
assert.equal(db.blog, db.collection('blog'));
|
|
|
|
console.log('======== test SkinCollection.open ========');
|
|
var coll1, coll2;
|
|
db.blog.open(function(err, coll) {
|
|
assert.ok(coll, err && err.stack);
|
|
coll1 = coll;
|
|
if (coll2) {
|
|
assert.equal(coll1, coll2, 'should be the same instance in collection.open');
|
|
}
|
|
});
|
|
|
|
db.blog.open(function(err, coll) {
|
|
assert.ok(coll, err && err.stack);
|
|
coll2 = coll;
|
|
if (coll1) {
|
|
assert.equal(coll1, coll2, 'should be the same instance in collection.open');
|
|
}
|
|
});
|
|
|
|
console.log('======== test normal method of SkinCollection ========');
|
|
db.collection('test_normal').ensureIndex([['a',1]], function(err, replies){
|
|
assert.ok(replies, err && err.stack);
|
|
});
|
|
|
|
console.log('======== test SkinCollection.drop ========');
|
|
db.collection('test_find').drop(function(err, replies){
|
|
assert.ok(!err, err && err.stack);
|
|
});
|
|
|
|
console.log('======== test SkinCollection.find ========');
|
|
collection = db.collection('test_find');
|
|
collection.insert([{a:1},{a:2},{a:3},{a:4}], function(err, replies){
|
|
assert.ok(replies, err && err.stack);
|
|
console.log('======== test SkinCollection.findById ========');
|
|
collection.findById(replies[0]._id.toString(), function(err, item){
|
|
assert.equal(item.a, 1);
|
|
console.log('======== test SkinCollection.removeById ========');
|
|
collection.removeById(replies[0]._id.toString(), function(err, reply){
|
|
assert.ok(!err, err && err.stack);
|
|
collection.findById(replies[0]._id.toString(), function(err, item){
|
|
assert.ok(!err);
|
|
assert.ok(!item);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
collection.findItems(function(err, items){
|
|
assert.ok(items, err && err.stack);
|
|
console.log('found '+ items.length + ' items');
|
|
});
|
|
collection.findEach(function(err, item){
|
|
assert.ok(!err, err && err.stack);
|
|
});
|
|
collection.find(function(err, cursor){
|
|
assert.ok(cursor, err && err.stack);
|
|
});
|
|
|
|
console.log('======== test SkinCursor ========');
|
|
collection.find().toArray(function(err, items){
|
|
console.log('======== test find cursor toArray========');
|
|
assert.ok(items, err && err.stack);
|
|
});
|
|
collection.find().each(function(err, item){
|
|
console.log('======== test find cursor each========');
|
|
assert.ok(!err, err && err.stack);
|
|
});
|
|
collection.find().sort({a:-1}).limit(2).skip(1).toArray(function(err, items){
|
|
console.log('======== test cursor sort() limit() skip() ========');
|
|
assert.ok(!err, err && err.stack);
|
|
console.dir(items);
|
|
});
|
|
|
|
console.log('======== deep future test ========');
|
|
(function(){
|
|
var db2 = mongo.db('localhost/test-mongoskin01');
|
|
db2.collection('blog').find().toArray(function(err, items){
|
|
assert.ok(!err, err && err.stack);
|
|
})
|
|
})();
|
|
|
|
(function(){
|
|
var db2 = mongo.db('unknownhost/test-mongoskin01');
|
|
db2.collection('blog').find().toArray(function(err, items){
|
|
assert.ok(err);
|
|
})
|
|
})();
|
|
/*
|
|
console.log('======== test SkinDb.close ========');
|
|
db.close();
|
|
assert.equal(db.db.state, 'notConnected');
|
|
*/
|
|
|