authelia/test/helpers/context/WithAutheliaRunning.ts

44 lines
1.3 KiB
TypeScript
Raw Normal View History

import ChildProcess from 'child_process';
import fs from 'fs';
export default function WithAutheliaRunning(configPath: string, waitTimeout: number = 5000) {
before(function() {
this.timeout(10000);
2019-02-23 22:02:03 +00:00
console.log('Spawning Authelia server with configuration %s.', configPath);
const authelia = ChildProcess.spawn(
'./scripts/authelia-scripts',
['serve', '--no-watch', '--config', configPath],
{detached: true});
authelia.on('exit', function(statusCode) {
console.log('Server terminated with status ' + statusCode);
if (statusCode != 0) {
fs.readFile('/tmp/authelia-server.log', function(err, data) {
if (err) {
console.error(err);
return;
}
console.log(data.toString('utf-8'));
})
}
});
this.authelia = authelia;
const waitPromise = new Promise((resolve, reject) => setTimeout(() => resolve(), waitTimeout));
return waitPromise;
});
after(function() {
this.timeout(10000);
2019-02-23 22:02:03 +00:00
console.log('Killing Authelia server.');
// Kill the group of processes.
process.kill(-this.authelia.pid);
// Leave 5 seconds for the process to terminate.
const waitPromise = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000));
return waitPromise;
});
}