chore: refactor server test setup (#3976)

* chore: refactor server test setup

* Close dangling redis connections instead of mocking rate limiter
  specific modules
* Segregate pre and post env test setup

* fix: remove mock file
This commit is contained in:
Apoorv Mishra
2022-08-16 09:16:57 +05:30
committed by GitHub
parent 93bb9d067d
commit 7a758f84a0
4 changed files with 21 additions and 45 deletions

View File

@@ -12,6 +12,9 @@
}, },
"setupFiles": [ "setupFiles": [
"<rootDir>/__mocks__/console.js", "<rootDir>/__mocks__/console.js",
"<rootDir>/server/test/env.ts"
],
"setupFilesAfterEnv": [
"<rootDir>/server/test/setup.ts" "<rootDir>/server/test/setup.ts"
], ],
"testEnvironment": "node", "testEnvironment": "node",

View File

@@ -1,28 +0,0 @@
export default class MockRateLimiter {
static getRateLimiter() {
return {
points: 100,
consume: jest.fn(),
};
}
static setRateLimiter() {
//
}
static hasRateLimiter() {
return false;
}
}
export const RateLimiterStrategy = new Proxy(
{},
{
get() {
return {
duration: 60,
requests: 10,
};
},
}
);

14
server/test/env.ts Normal file
View File

@@ -0,0 +1,14 @@
import env from "../env";
// test environment variables
env.SMTP_HOST = "smtp.example.com";
env.ENVIRONMENT = "test";
env.GOOGLE_CLIENT_ID = "123";
env.GOOGLE_CLIENT_SECRET = "123";
env.SLACK_CLIENT_ID = "123";
env.SLACK_CLIENT_SECRET = "123";
env.DEPLOYMENT = undefined;
if (process.env.DATABASE_URL_TEST) {
env.DATABASE_URL = process.env.DATABASE_URL_TEST;
}

View File

@@ -1,25 +1,10 @@
import env from "../env"; import Redis from "@server/redis";
// test environment variables // NOTE: this require must come after the ENV var override
env.SMTP_HOST = "smtp.example.com";
env.ENVIRONMENT = "test";
env.GOOGLE_CLIENT_ID = "123";
env.GOOGLE_CLIENT_SECRET = "123";
env.SLACK_CLIENT_ID = "123";
env.SLACK_CLIENT_SECRET = "123";
env.DEPLOYMENT = undefined;
if (process.env.DATABASE_URL_TEST) {
env.DATABASE_URL = process.env.DATABASE_URL_TEST;
}
// NOTE: this require must come after the ENV var override above
// so that sequelize uses the test config variables // so that sequelize uses the test config variables
require("@server/database/sequelize"); require("@server/database/sequelize");
jest.mock("bull"); jest.mock("bull");
jest.mock("rate-limiter-flexible");
jest.mock("../RateLimiter");
// This is needed for the relative manual mock to be picked up // This is needed for the relative manual mock to be picked up
jest.mock("../queues"); jest.mock("../queues");
@@ -42,3 +27,5 @@ jest.mock("aws-sdk", () => {
}); });
jest.mock("@getoutline/y-prosemirror", () => ({})); jest.mock("@getoutline/y-prosemirror", () => ({}));
afterAll(() => Redis.defaultClient.disconnect());