test(core): Implement timeout in SMTP tests (#3152)

*  Implement timeout in SMTP tests

* 🚚 Move timeout to constants
This commit is contained in:
Iván Ovejero 2022-04-22 12:38:53 +02:00 committed by GitHub
parent 1c2ca6244c
commit bc5749b7ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 112 additions and 86 deletions

View file

@ -13,6 +13,7 @@ import {
} from './shared/random';
import * as testDb from './shared/testDb';
import type { Role } from '../../src/databases/entities/Role';
import { SMTP_TEST_TIMEOUT } from './shared/constants';
jest.mock('../../src/telemetry');
@ -40,19 +41,22 @@ beforeEach(async () => {
config.set('userManagement.isInstanceOwnerSetUp', true);
config.set('userManagement.emails.mode', '');
jest.setTimeout(30000); // fake SMTP service might be slow
});
afterAll(async () => {
await testDb.terminate(testDbName);
});
test('POST /forgot-password should send password reset email', async () => {
test(
'POST /forgot-password should send password reset email',
async () => {
const owner = await testDb.createUser({ globalRole: globalOwnerRole });
const authlessAgent = utils.createAgent(app);
const member = await testDb.createUser({ email: 'test@test.com', globalRole: globalMemberRole });
const member = await testDb.createUser({
email: 'test@test.com',
globalRole: globalMemberRole,
});
await utils.configureSmtp();
@ -68,7 +72,9 @@ test('POST /forgot-password should send password reset email', async () => {
expect(user.resetPasswordTokenExpiration).toBeGreaterThan(Math.ceil(Date.now() / 1000));
}),
);
});
},
SMTP_TEST_TIMEOUT,
);
test('POST /forgot-password should fail if emailing is not set up', async () => {
const owner = await testDb.createUser({ globalRole: globalOwnerRole });

View file

@ -57,3 +57,8 @@ export const BOOTSTRAP_POSTGRES_CONNECTION_NAME: Readonly<string> = 'n8n_bs_post
* for each suite test run.
*/
export const BOOTSTRAP_MYSQL_CONNECTION_NAME: Readonly<string> = 'n8n_bs_mysql';
/**
* Timeout (in milliseconds) to account for fake SMTP service being slow to respond.
*/
export const SMTP_TEST_TIMEOUT = 30_000;

View file

@ -4,7 +4,7 @@ import { v4 as uuid } from 'uuid';
import { Db } from '../../src';
import config from '../../config';
import { SUCCESS_RESPONSE_BODY } from './shared/constants';
import { SMTP_TEST_TIMEOUT, SUCCESS_RESPONSE_BODY } from './shared/constants';
import {
randomEmail,
randomValidPassword,
@ -47,8 +47,6 @@ beforeAll(async () => {
utils.initTestTelemetry();
utils.initTestLogger();
jest.setTimeout(30000); // fake SMTP service might be slow
});
beforeEach(async () => {
@ -481,7 +479,9 @@ test('POST /users should fail if user management is disabled', async () => {
expect(response.statusCode).toBe(500);
});
test('POST /users should email invites and create user shells but ignore existing', async () => {
test(
'POST /users should email invites and create user shells but ignore existing',
async () => {
const owner = await testDb.createUser({ globalRole: globalOwnerRole });
const member = await testDb.createUser({ globalRole: globalMemberRole });
const memberShell = await testDb.createUserShell(globalMemberRole);
@ -489,7 +489,12 @@ test('POST /users should email invites and create user shells but ignore existin
await utils.configureSmtp();
const testEmails = [randomEmail(), randomEmail().toUpperCase(), memberShell.email, member.email];
const testEmails = [
randomEmail(),
randomEmail().toUpperCase(),
memberShell.email,
member.email,
];
const payload = testEmails.map((e) => ({ email: e }));
@ -522,9 +527,13 @@ test('POST /users should email invites and create user shells but ignore existin
expect(password).toBeNull();
expect(resetPasswordToken).toBeNull();
}
});
},
SMTP_TEST_TIMEOUT,
);
test('POST /users should fail with invalid inputs', async () => {
test(
'POST /users should fail with invalid inputs',
async () => {
const owner = await testDb.createUser({ globalRole: globalOwnerRole });
const authOwnerAgent = utils.createAgent(app, { auth: true, user: owner });
@ -547,9 +556,13 @@ test('POST /users should fail with invalid inputs', async () => {
expect(users.length).toBe(1); // DB unaffected
}),
);
});
},
SMTP_TEST_TIMEOUT,
);
test('POST /users should ignore an empty payload', async () => {
test(
'POST /users should ignore an empty payload',
async () => {
const owner = await testDb.createUser({ globalRole: globalOwnerRole });
const authOwnerAgent = utils.createAgent(app, { auth: true, user: owner });
@ -565,7 +578,9 @@ test('POST /users should ignore an empty payload', async () => {
const users = await Db.collections.User!.find();
expect(users.length).toBe(1);
});
},
SMTP_TEST_TIMEOUT,
);
// TODO: /users/:id/reinvite route tests missing