2
2
* rm -rf data; mkdir data; mongod --dbpath=./data --setParameter authenticationMechanisms=SCRAM-SHA-1 --auth
3
3
* @ignore
4
4
*/
5
- exports [ 'should correctly create a new user and authenticate using scram' ] = {
6
- metadata : { requires : { topology : [ 'scram' ] , mongodb : " >=2.7.5" } } ,
5
+ exports [ 'Should correctly authenticate against scram' ] = {
6
+ metadata : { requires : { topology : 'scram' , mongodb : ' >=2.7.5' } } ,
7
7
8
8
// The actual test we wish to run
9
9
test : function ( configuration , test ) {
10
- var Buffer = require ( 'buffer' ) . Buffer
11
- , BSON = require ( 'bson' ) . pure ( ) . BSON
12
- , MongoClient = configuration . require . MongoClient ;
13
- // console.dir(BSON)
10
+ var Db = configuration . require . Db
11
+ , MongoClient = configuration . require . MongoClient
12
+ , Server = configuration . require . Server ;
14
13
15
14
// User and password
16
15
var user = 'test' ;
17
16
var password = 'test' ;
18
17
19
- // var db = configuration.newDbInstance({w:1}, {poolSize:1});
20
- // db.open(function(err, db) {
18
+ // Connect to the server
21
19
MongoClient . connect ( 'mongodb://localhost:27017/test' , function ( err , db ) {
22
20
test . equal ( null , err ) ;
23
21
22
+ // Create an admin user
24
23
db . admin ( ) . addUser ( user , password , function ( err , result ) {
25
24
test . equal ( null , err ) ;
26
25
db . close ( ) ;
27
26
28
27
// Attempt to reconnect authenticating against the admin database
29
- MongoClient . connect ( 'mongodb://test:test@localhost:27017/test?authMechanism=SCRAM-SHA-1&authSource=admin&maxPoolSize=1 ' , function ( err , db ) {
28
+ MongoClient . connect ( 'mongodb://test:test@localhost:27017/test?authMechanism=SCRAM-SHA-1&authSource=admin&maxPoolSize=5 ' , function ( err , db ) {
30
29
test . equal ( null , err ) ;
31
- console . dir ( db )
32
30
33
- db . close ( ) ;
34
- test . done ( ) ;
31
+ db . collection ( 'test' ) . insert ( { a :1 } , function ( err , r ) {
32
+ test . equal ( null , err ) ;
33
+ test . ok ( r != null ) ;
34
+
35
+ // Wait for a reconnect to happen
36
+ db . serverConfig . once ( 'reconnect' , function ( ) {
37
+
38
+ // Perform an insert after reconnect
39
+ db . collection ( 'test' ) . insert ( { a :1 } , function ( err , r ) {
40
+ test . equal ( null , err ) ;
41
+ test . ok ( r != null ) ;
42
+
43
+ // Remove the user
44
+ db . admin ( ) . removeUser ( user , function ( err , r ) {
45
+ test . equal ( null , err ) ;
46
+
47
+ db . close ( ) ;
48
+ test . done ( ) ;
49
+ } ) ;
50
+ } ) ;
51
+ } ) ;
52
+
53
+ // Attempt disconnect again
54
+ db . serverConfig . connections ( ) [ 0 ] . destroy ( ) ;
55
+ } ) ;
35
56
} ) ;
36
57
} ) ;
37
58
} ) ;
38
59
}
39
- }
60
+ }
0 commit comments