Files
shields/lib/in-process-server-test-helpers.js
2018-08-11 20:13:40 -04:00

70 lines
1.3 KiB
JavaScript

/**
* Helpers to run a Shields server in process.
*
* Usage:
* let server;
* before('Start running the server', function () {
* this.timeout(5000);
* server = serverHelpers.start();
* });
* after('Shut down the server', function () { serverHelpers.stop(server); });
*/
'use strict'
const config = require('./test-config')
const serverConfig = require('./server-config')
let startCalled = false
/**
* Start the server.
*
* @param {Number} port number (optional)
* @return {Object} The scoutcamp instance
*/
function start() {
if (startCalled) {
throw Error(
'Because of the way Shields works, you can only use this ' +
'once per node process. Once you call stop(), the game is over.'
)
}
startCalled = true
// Modifying config is a bit dirty, but it works, and avoids making bigger
// changes to server.js.
serverConfig.bind = {
host: 'localhost',
port: config.port,
}
const server = require('../server')
return server
}
/**
* Reset the server, to avoid or reduce side effects between tests.
*
* @param {Object} server instance
*/
function reset(server) {
server.reset()
}
/**
* Stop the server.
*
* @param {Object} server instance
*/
async function stop(server) {
if (server) {
await server.stop()
}
}
module.exports = {
start,
reset,
stop,
}