UNPKG

4.78 kBJavaScriptView Raw
1"use strict"
2
3var co = require('co'),
4 f = require('util').format,
5 assert = require('assert');
6
7// Polyfill Promise if none exists
8if(!global.Promise) {
9 require('es6-promise').polyfill();
10}
11
12// Get babel polyfill
13require("babel-polyfill");
14
15describe('Server', function() {
16 describe('manager', function() {
17 it('establish server version', function(done) {
18 this.timeout(50000);
19
20 co(function*() {
21 var Server = require('../').Server;
22 // Create new instance
23 var server = new Server();
24 // Perform discovery
25 var version = yield server.discover();
26 // Expect 3 integers
27 assert.ok(typeof version.version[0] == 'number');
28 assert.ok(typeof version.version[1] == 'number');
29 assert.ok(typeof version.version[2] == 'number');
30 done();
31 }).catch(function(err) {
32 console.log(err.stack);
33 });
34 });
35
36 it('start server instance', function(done) {
37 this.timeout(50000);
38
39 co(function*() {
40 var Server = require('../').Server;
41
42 // Create dbpath
43 var dbpath = f('%s/../db', __dirname);
44
45 // Create new instance
46 var server = new Server('mongod', {
47 dbpath: dbpath
48 });
49
50 // Purge the directory
51 yield server.purge();
52
53 // Start process
54 yield server.start();
55
56 // Stop the process
57 yield server.stop();
58
59 // Finish test
60 done();
61 }).catch(function(err) {
62 console.log(err);
63 });
64 });
65
66 it('restart server instance', function(done) {
67 this.timeout(50000);
68
69 co(function*() {
70 var Server = require('../').Server;
71
72 // Create dbpath
73 var dbpath = f('%s/../db', __dirname);
74
75 // Create new instance
76 var server = new Server('mongod', {
77 dbpath: dbpath
78 });
79
80 // Start process
81 yield server.start();
82
83 // Get current pid
84 var pid1 = server.process.pid;
85
86 // Restart
87 yield server.restart();
88
89 // Get new pid
90 var pid2 = server.process.pid;
91
92 // Stop the process
93 yield server.stop();
94
95 // Assert we had different processes
96 assert.ok(pid1 != pid2);
97
98 // Finish test
99 done();
100 }).catch(function(err) {
101 console.log(err);
102 });
103 });
104
105 it('call ismaster on server instance', function(done) {
106 this.timeout(50000);
107
108 co(function*() {
109 var Server = require('../').Server;
110
111 // Create dbpath
112 var dbpath = f('%s/../db', __dirname);
113
114 // Create new instance
115 var server = new Server('mongod', {
116 dbpath: dbpath
117 });
118
119 // Start process
120 yield server.start();
121
122 // Call ismaster
123 var ismaster = yield server.ismaster();
124 assert.equal(true, ismaster.ismaster);
125
126 // Stop the process
127 yield server.stop();
128
129 // Finish test
130 done();
131 }).catch(function(err) {
132 console.log(err);
133 });
134 });
135
136 it('start up authenticated server', function(done) {
137 this.timeout(50000);
138
139 co(function*() {
140 var Server = require('../').Server;
141
142 // Create dbpath
143 var dbpath = f('%s/../db', __dirname);
144
145 // Create new instance
146 var server = new Server('mongod', {
147 dbpath: dbpath, auth:null
148 });
149
150 // Start process
151 yield server.start();
152
153 // Call ismaster
154 var ismaster = yield server.ismaster();
155 assert.equal(true, ismaster.ismaster);
156
157 // Stop the process
158 yield server.stop();
159
160 // Finish test
161 done();
162 }).catch(function(err) {
163 console.log(err);
164 });
165 });
166
167 it('start up ssl server server', function(done) {
168 this.timeout(50000);
169
170 co(function*() {
171 var Server = require('../').Server;
172
173 // Create dbpath
174 var dbpath = f('%s/../db', __dirname);
175
176 // Create new instance
177 var server = new Server('mongod', {
178 dbpath: dbpath,
179 sslOnNormalPorts:null,
180 sslPEMKeyFile: f('%s/ssl/server.pem', __dirname),
181 sslAllowInvalidCertificates:null
182 }, {
183 ssl:true,
184 rejectUnauthorized:false
185 });
186
187 // Perform discovery
188 var result = yield server.discover();
189 // Skip ssl test
190 if(!result.ssl) return done();
191
192 // Start process
193 yield server.start();
194
195 // Call ismaster
196 var ismaster = yield server.ismaster();
197 assert.equal(true, ismaster.ismaster);
198
199 // Stop the process
200 yield server.stop();
201
202 // Finish test
203 done();
204 }).catch(function(err) {
205 console.log(err);
206 });
207 });
208 });
209});