44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import Application from "../src/Application";
|
|
import {setupMailServer, teardownMailServer} from "./_mail_server";
|
|
import TestApp from "../src/TestApp";
|
|
import MysqlConnectionManager from "../src/db/MysqlConnectionManager";
|
|
import config from "config";
|
|
|
|
|
|
export default function useApp(appSupplier?: AppSupplier): void {
|
|
let app: Application;
|
|
|
|
beforeAll(async (done) => {
|
|
await MysqlConnectionManager.prepare();
|
|
await MysqlConnectionManager.query('DROP DATABASE IF EXISTS ' + config.get<string>('mysql.database'));
|
|
await MysqlConnectionManager.endPool();
|
|
|
|
await setupMailServer();
|
|
app = appSupplier ? await appSupplier('127.0.0.1', 8966) : new TestApp('127.0.0.1', 8966, true);
|
|
|
|
await app.start();
|
|
done();
|
|
});
|
|
|
|
afterAll(async (done) => {
|
|
const errors = [];
|
|
|
|
try {
|
|
await app.stop();
|
|
} catch (e) {
|
|
errors.push(e);
|
|
}
|
|
|
|
try {
|
|
await teardownMailServer();
|
|
} catch (e) {
|
|
errors.push(e);
|
|
}
|
|
|
|
if (errors.length > 0) throw errors;
|
|
done();
|
|
});
|
|
}
|
|
|
|
export type AppSupplier = (addr: string, port: number) => Promise<TestApp>;
|