forked from mongodb/node-mongodb-native
-
Notifications
You must be signed in to change notification settings - Fork 49
/
connect_test.js
100 lines (89 loc) · 2.95 KB
/
connect_test.js
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
96
97
98
99
100
var mongodb = process.env['TEST_NATIVE'] != null ? require('../lib/mongodb').native() : require('../lib/mongodb').pure();
var testCase = require('../deps/nodeunit').testCase,
debug = require('util').debug,
inspect = require('util').inspect,
nodeunit = require('../deps/nodeunit'),
Db = mongodb.Db,
Cursor = mongodb.Cursor,
connect = mongodb.connect,
gleak = require('../tools/gleak'),
Script = require('vm'),
Collection = mongodb.Collection,
Server = mongodb.Server,
Step = require("../deps/step/lib/step");
var MONGODB = 'integration_tests';
var clientUrl = 'mongo://localhost:27017/' + MONGODB;
function connectionTester(test, testName) {
return function(err, db) {
test.equal(err, null);
db.collection(testName, function(err, collection) {
test.equal(err, null);
var doc = {foo:123};
collection.insert({foo:123}, {safe:true}, function(err, docs) {
test.equal(err, null);
db.dropDatabase(function(err, done) {
test.equal(err, null);
test.ok(done);
test.done();
});
});
});
};
};
exports.testConnectNoOptions = function(test) {
connect(clientUrl, connectionTester(test, 'testConnectNoOptions'));
};
exports.testConnectDbOptions = function(test) {
connect(clientUrl,
{ db: {native_parser: (process.env['TEST_NATIVE'] != null)} },
connectionTester(test, 'testConnectDbOptions'));
};
exports.testConnectServerOptions = function(test) {
connect(clientUrl,
{ server: {auto_reconnect: true, poolSize: 4} },
connectionTester(test, 'testConnectServerOptions'));
};
exports.testConnectAllOptions = function(test) {
connect(clientUrl,
{ server: {auto_reconnect: true, poolSize: 4},
db: {native_parser: (process.env['TEST_NATIVE'] != null)} },
connectionTester(test, 'testConnectAllOptions'));
};
exports.testConnectGoodAuth = function(test) {
var user = 'testConnectGoodAuth', password = 'password';
// First add a user.
connect(clientUrl, function(err, db) {
test.equal(err, null);
db.addUser(user, password, function(err, result) {
test.equal(err, null);
db.close();
restOfTest();
});
});
function restOfTest() {
var url = 'mongo://' + user + ':' + password + '@localhost:27017/' + MONGODB;
connect(url, connectionTester(test, 'testConnectGoodAuth'));
}
};
exports.testConnectBadAuth = function(test) {
var url = 'mongo://slithy:toves@localhost:27017/' + MONGODB;
connect(url, function(err, db) {
test.ok(err);
test.equal(db, null);
test.done();
});
};
exports.testConnectBadUrl = function(test) {
test.throws(function() {
connect('mango://localhost:27017/' + MONGODB, function(err, db) {
test.ok(false, 'Bad URL!');
});
});
test.done();
};
// run this last
exports.noGlobalsLeaked = function(test) {
var leaks = gleak.detectNew();
test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', '));
test.done();
}