Skip to content
This repository was archived by the owner on Feb 4, 2022. It is now read-only.

Commit ab3b70b

Browse files
committed
feat(mock): support a means of consistently cleaning up mock servers
NODE-1132
1 parent 654802e commit ab3b70b

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

test/mock/index.js

+32-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,42 @@
11
var Server = require('./lib/server');
22

3+
const cleanup = (servers, spy, callback) => {
4+
if (!Array.isArray(servers)) {
5+
throw new Error('First argument must be an array of mock servers');
6+
}
7+
8+
if (spy) {
9+
const alreadyDrained = spy.connectionCount() === 0;
10+
const finish = () => {
11+
callback(null, null);
12+
};
13+
14+
if (!alreadyDrained) {
15+
spy.once('drained', () => finish());
16+
}
17+
18+
const cleanupPromise = Promise.all(servers.map(server => server.destroy())).catch(err =>
19+
callback(err, null)
20+
);
21+
22+
if (alreadyDrained) {
23+
cleanupPromise.then(() => finish());
24+
}
25+
} else {
26+
Promise.all(servers.map(server => server.destroy()))
27+
.then(() => callback(null, null))
28+
.catch(err => callback(err, null));
29+
}
30+
};
31+
332
/*
433
* Main module
534
*/
635
module.exports = {
736
createServer: function(port, host, options) {
837
options = options || {};
938
return new Server(port, host, options).start();
10-
}
39+
},
40+
41+
cleanup: cleanup
1142
};

0 commit comments

Comments
 (0)