mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 01:56:46 +00:00
🚨 Optimize UM tests (#3066)
* ⚡ Declutter test logs * 🐛 Fix random passwords length * 🐛 Fix password hashing in test user creation * 🐛 Hash leftover password * ⚡ Improve error message for `compare` * ⚡ Restore `randomInvalidPassword` contant * ⚡ Mock Telemetry module to prevent `--forceExit` * 🔥 Remove unused imports * 🔥 Remove unused import * ⚡ Add util for configuring test SMTP * ⚡ Isolate user creation * 🔥 De-duplicate `createFullUser` * ⚡ Centralize hashing * 🔥 Remove superfluous arg * 🔥 Remove outdated comment * ⚡ Prioritize shared tables during trucation * 🧪 Add login tests * ⚡ Use token helper * ✏️ Improve naming * ⚡ Make `createMemberShell` consistent * 🔥 Remove unneeded helper * 🔥 De-duplicate `beforeEach` * ✏️ Improve naming * 🚚 Move `categorize` to utils * ✏️ Update comment * 🧪 Simplify test * 📘 Improve `User.password` type * ⚡ Silence logger * ⚡ Simplify condition * ⚡ Unhash password in payload * 🐛 Fix comparison against unhashed password * ⚡ Increase timeout for fake SMTP service * 🔥 Remove unneeded import * ⚡ Use `isNull()` * 🧪 Use `Promise.all()` in creds tests * 🧪 Use `Promise.all()` in me tests * 🧪 Use `Promise.all()` in owner tests * 🧪 Use `Promise.all()` in password tests * 🧪 Use `Promise.all()` in users tests * ⚡ Re-set cookie if UM disabled * 🔥 Remove repeated line * ⚡ Refactor out shared owner data * 🔥 Remove unneeded import * 🔥 Remove repeated lines * ⚡ Organize imports * ⚡ Reuse helper * 🚚 Rename tests to match routers * 🚚 Rename `createFullUser()` to `createUser()` * ⚡ Consolidate user shell creation * ⚡ Make hashing async * ⚡ Add email to user shell * ⚡ Optimize array building * 🛠 refactor user shell factory * 🐛 Fix MySQL tests * ⚡ Silence logger in other DBs Co-authored-by: Ben Hesseldieck <b.hesseldieck@gmail.com>
This commit is contained in:
@@ -23,9 +23,7 @@ import { passwordResetNamespace as passwordResetEndpoints } from '../../../src/U
|
||||
import { issueJWT } from '../../../src/UserManagement/auth/jwt';
|
||||
import { getLogger } from '../../../src/Logger';
|
||||
import { credentialsController } from '../../../src/api/credentials.api';
|
||||
|
||||
import type { User } from '../../../src/databases/entities/User';
|
||||
import { Telemetry } from '../../../src/telemetry';
|
||||
import type { EndpointGroup, SmtpTestAccount } from './types';
|
||||
import type { N8nApp } from '../../../src/UserManagement/Interfaces';
|
||||
|
||||
@@ -182,9 +180,7 @@ export function prefix(pathSegment: string) {
|
||||
export function getAuthToken(response: request.Response, authCookieName = AUTH_COOKIE_NAME) {
|
||||
const cookies: string[] = response.headers['set-cookie'];
|
||||
|
||||
if (!cookies) {
|
||||
throw new Error("No 'set-cookie' header found in response");
|
||||
}
|
||||
if (!cookies) return undefined;
|
||||
|
||||
const authCookie = cookies.find((c) => c.startsWith(`${authCookieName}=`));
|
||||
|
||||
@@ -216,5 +212,37 @@ export async function isInstanceOwnerSetUp() {
|
||||
/**
|
||||
* Get an SMTP test account from https://ethereal.email to test sending emails.
|
||||
*/
|
||||
export const getSmtpTestAccount = util.promisify<SmtpTestAccount>(createTestAccount);
|
||||
const getSmtpTestAccount = util.promisify<SmtpTestAccount>(createTestAccount);
|
||||
|
||||
export async function configureSmtp() {
|
||||
const {
|
||||
user,
|
||||
pass,
|
||||
smtp: { host, port, secure },
|
||||
} = await getSmtpTestAccount();
|
||||
|
||||
config.set('userManagement.emails.mode', 'smtp');
|
||||
config.set('userManagement.emails.smtp.host', host);
|
||||
config.set('userManagement.emails.smtp.port', port);
|
||||
config.set('userManagement.emails.smtp.secure', secure);
|
||||
config.set('userManagement.emails.smtp.auth.user', user);
|
||||
config.set('userManagement.emails.smtp.auth.pass', pass);
|
||||
}
|
||||
|
||||
// ----------------------------------
|
||||
// misc
|
||||
// ----------------------------------
|
||||
|
||||
/**
|
||||
* Categorize array items into two groups based on whether they pass a test.
|
||||
*/
|
||||
export const categorize = <T>(arr: T[], test: (str: T) => boolean) => {
|
||||
return arr.reduce<{ pass: T[]; fail: T[] }>(
|
||||
(acc, cur) => {
|
||||
test(cur) ? acc.pass.push(cur) : acc.fail.push(cur);
|
||||
|
||||
return acc;
|
||||
},
|
||||
{ pass: [], fail: [] },
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user