feat: testing with real database
Some checks failed
TrafficCue Server CI / check (push) Failing after 21s
Some checks failed
TrafficCue Server CI / check (push) Failing after 21s
This commit is contained in:
@ -16,36 +16,42 @@ process.env.REVIEWS_ENABLED = "true";
|
|||||||
const app = await import("../src/main").then(m => m.default);
|
const app = await import("../src/main").then(m => m.default);
|
||||||
|
|
||||||
const PGSQL_IMAGE = "postgres:latest";
|
const PGSQL_IMAGE = "postgres:latest";
|
||||||
let postgresContainer: StartedTestContainer;
|
let postgresContainer: StartedTestContainer | null = null;
|
||||||
let jwk: JWK;
|
let jwk: JWK;
|
||||||
let privateKey: string;
|
let privateKey: string;
|
||||||
|
|
||||||
// Spin up a temporary Postgres container for testing
|
// Spin up a temporary Postgres container for testing
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
postgresContainer = await new GenericContainer(PGSQL_IMAGE)
|
if(!process.env.DATABASE_URL) {
|
||||||
.withEnvironment({
|
postgresContainer = await new GenericContainer(PGSQL_IMAGE)
|
||||||
POSTGRES_USER: "tc",
|
.withEnvironment({
|
||||||
POSTGRES_PASSWORD: "tc",
|
POSTGRES_USER: "tc",
|
||||||
POSTGRES_DB: "tc"
|
POSTGRES_PASSWORD: "tc",
|
||||||
})
|
POSTGRES_DB: "tc"
|
||||||
.withExposedPorts(5432)
|
})
|
||||||
.withHealthCheck({
|
.withExposedPorts(5432)
|
||||||
test: ["CMD-SHELL", "pg_isready -U postgres"],
|
.withHealthCheck({
|
||||||
interval: 1000,
|
test: ["CMD-SHELL", "pg_isready -U postgres"],
|
||||||
timeout: 3000,
|
interval: 1000,
|
||||||
retries: 5,
|
timeout: 3000,
|
||||||
})
|
retries: 5,
|
||||||
.withWaitStrategy(Wait.forHealthCheck())
|
})
|
||||||
.start();
|
.withWaitStrategy(Wait.forHealthCheck())
|
||||||
|
.start();
|
||||||
|
|
||||||
process.env.DATABASE_URL = `postgres://tc:tc@localhost:${postgresContainer.getMappedPort(5432)}/tc`;
|
process.env.DATABASE_URL = `postgres://tc:tc@localhost:${postgresContainer.getMappedPort(5432)}/tc`;
|
||||||
|
}
|
||||||
|
|
||||||
getDb(true);
|
getDb(true);
|
||||||
await initDb();
|
await initDb();
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
await postgresContainer.stop();
|
// Nuke the entire database after tests
|
||||||
|
const db = getDb();
|
||||||
|
await db.dropDatabase();
|
||||||
|
await db.destroy();
|
||||||
|
if(postgresContainer) await postgresContainer.stop();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Override JWKS URL to prevent external calls during tests
|
// Override JWKS URL to prevent external calls during tests
|
||||||
|
|||||||
Reference in New Issue
Block a user