SponsorBlockServer/test/test.ts
2021-07-12 02:43:46 -04:00

60 lines
No EOL
1.8 KiB
TypeScript

import Mocha from "mocha";
import fs from "fs";
import path from "path";
import {config} from "../src/config";
import {createServer} from "../src/app";
import {createMockServer} from "./mocks";
import {Logger} from "../src/utils/logger";
import {initDb} from "../src/databases/databases";
import {ImportMock} from "ts-mock-imports";
import * as rateLimitMiddlewareModule from "../src/middleware/requestRateLimit";
import rateLimit from "express-rate-limit";
async function init() {
ImportMock.mockFunction(rateLimitMiddlewareModule, "rateLimitMiddleware", rateLimit({
skip: () => true
}));
// delete old test database
if (fs.existsSync(config.db)) fs.unlinkSync(config.db);
if (fs.existsSync(config.privateDB)) fs.unlinkSync(config.privateDB);
await initDb();
const dbMode = config.mysql ? "mysql"
: config.postgres ? "postgres"
: "sqlite";
Logger.info(`Database Mode: ${dbMode}`);
// Instantiate a Mocha instance.
const mocha = new Mocha();
const testDir = "./test/cases";
// Add each .ts file to the mocha instance
fs.readdirSync(testDir)
.filter((file) =>
// Only keep the .ts files
file.substr(-3) === ".ts"
)
.forEach(function(file) {
mocha.addFile(
path.join(testDir, file)
);
});
const mockServer = createMockServer(() => {
Logger.info("Started mock HTTP Server");
const server = createServer(() => {
Logger.info("Started main HTTP server");
// Run the tests.
mocha.run((failures) => {
mockServer.close();
server.close();
process.exitCode = failures ? 1 : 0; // exit with non-zero status if there were failures
});
});
});
}
init();