reset postgres and redis between test runs

This commit is contained in:
Michael C
2023-02-20 22:21:14 -05:00
parent f70a26009c
commit d04230a1c4
2 changed files with 26 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ import { ImportMock } from "ts-mock-imports";
import * as rateLimitMiddlewareModule from "../src/middleware/requestRateLimit";
import rateLimit from "express-rate-limit";
import redis from "../src/utils/redis";
import { resetRedis, resetPostgres } from "./utils/reset";
async function init() {
ImportMock.mockFunction(rateLimitMiddlewareModule, "rateLimitMiddleware", rateLimit({
@@ -19,6 +20,8 @@ async function init() {
// delete old test database
if (fs.existsSync(config.db)) fs.unlinkSync(config.db);
if (fs.existsSync(config.privateDB)) fs.unlinkSync(config.privateDB);
await resetRedis();
await resetPostgres();
await initDb();
@@ -59,6 +62,7 @@ async function init() {
server.close();
redis.quit();
process.exitCode = failures ? 1 : 0; // exit with non-zero status if there were failures
process.exit();
});
});
});

22
test/utils/reset.ts Normal file
View File

@@ -0,0 +1,22 @@
// drop postgres tables
// reset redis cache
import { config } from "../../src/config";
import { createClient } from "redis";
import { Pool } from "pg";
import { Logger } from "../../src/utils/logger";
export async function resetRedis() {
if (config.redis) {
const client = createClient(config.redis);
await client.connect();
await client.flushAll();
}
}
export async function resetPostgres() {
if (process.env.TEST_POSTGRES && config.postgres) {
const pool = new Pool({ ...config.postgres });
await pool.query(`DROP DATABASE IF EXISTS "sponsorTimes"`);
await pool.query(`DROP DATABASE IF EXISTS "privateDB"`);
await pool.end().catch(err => Logger.error(`closing db (postgres): ${err}`));
}
}