mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 01:56:46 +00:00
ci(core): Reduce memory usage in tests (part-1) (no-changelog) (#7654)
This commit is contained in:
committed by
GitHub
parent
6a53c2a375
commit
0346b211a7
@@ -1,8 +1,13 @@
|
||||
import Container from 'typedi';
|
||||
import type { SuperAgentTest } from 'supertest';
|
||||
import type { Variables } from '@db/entities/Variables';
|
||||
import { VariablesRepository } from '@db/repositories';
|
||||
import { generateNanoId } from '@db/utils/generators';
|
||||
import { License } from '@/License';
|
||||
import { VariablesService } from '@/environments/variables/variables.service';
|
||||
import * as testDb from './shared/testDb';
|
||||
import * as utils from './shared/utils/';
|
||||
import { createOwner, createUser } from './shared/db/users';
|
||||
|
||||
let authOwnerAgent: SuperAgentTest;
|
||||
let authMemberAgent: SuperAgentTest;
|
||||
@@ -15,12 +20,38 @@ const licenseLike = {
|
||||
|
||||
const testServer = utils.setupTestServer({ endpointGroups: ['variables'] });
|
||||
|
||||
async function createVariable(key: string, value: string) {
|
||||
const result = await Container.get(VariablesRepository).save({
|
||||
id: generateNanoId(),
|
||||
key,
|
||||
value,
|
||||
});
|
||||
await Container.get(VariablesService).updateCache();
|
||||
return result;
|
||||
}
|
||||
|
||||
async function getVariableByKey(key: string) {
|
||||
return Container.get(VariablesRepository).findOne({
|
||||
where: {
|
||||
key,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async function getVariableById(id: string) {
|
||||
return Container.get(VariablesRepository).findOne({
|
||||
where: {
|
||||
id,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
beforeAll(async () => {
|
||||
utils.mockInstance(License, licenseLike);
|
||||
|
||||
const owner = await testDb.createOwner();
|
||||
const owner = await createOwner();
|
||||
authOwnerAgent = testServer.authAgentFor(owner);
|
||||
const member = await testDb.createUser();
|
||||
const member = await createUser();
|
||||
authMemberAgent = testServer.authAgentFor(member);
|
||||
});
|
||||
|
||||
@@ -35,10 +66,7 @@ beforeEach(async () => {
|
||||
// ----------------------------------------
|
||||
describe('GET /variables', () => {
|
||||
beforeEach(async () => {
|
||||
await Promise.all([
|
||||
testDb.createVariable('test1', 'value1'),
|
||||
testDb.createVariable('test2', 'value2'),
|
||||
]);
|
||||
await Promise.all([createVariable('test1', 'value1'), createVariable('test2', 'value2')]);
|
||||
});
|
||||
|
||||
test('should return all variables for an owner', async () => {
|
||||
@@ -61,8 +89,8 @@ describe('GET /variables/:id', () => {
|
||||
let var1: Variables, var2: Variables;
|
||||
beforeEach(async () => {
|
||||
[var1, var2] = await Promise.all([
|
||||
testDb.createVariable('test1', 'value1'),
|
||||
testDb.createVariable('test2', 'value2'),
|
||||
createVariable('test1', 'value1'),
|
||||
createVariable('test2', 'value2'),
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -104,8 +132,8 @@ describe('POST /variables', () => {
|
||||
expect(response.body.data.value).toBe(toCreate.value);
|
||||
|
||||
const [byId, byKey] = await Promise.all([
|
||||
testDb.getVariableById(response.body.data.id),
|
||||
testDb.getVariableByKey(toCreate.key),
|
||||
getVariableById(response.body.data.id),
|
||||
getVariableByKey(toCreate.key),
|
||||
]);
|
||||
|
||||
expect(byId).not.toBeNull();
|
||||
@@ -123,7 +151,7 @@ describe('POST /variables', () => {
|
||||
expect(response.body.data?.key).not.toBe(toCreate.key);
|
||||
expect(response.body.data?.value).not.toBe(toCreate.value);
|
||||
|
||||
const byKey = await testDb.getVariableByKey(toCreate.key);
|
||||
const byKey = await getVariableByKey(toCreate.key);
|
||||
expect(byKey).toBeNull();
|
||||
});
|
||||
|
||||
@@ -134,12 +162,12 @@ describe('POST /variables', () => {
|
||||
expect(response.body.data?.key).not.toBe(toCreate.key);
|
||||
expect(response.body.data?.value).not.toBe(toCreate.value);
|
||||
|
||||
const byKey = await testDb.getVariableByKey(toCreate.key);
|
||||
const byKey = await getVariableByKey(toCreate.key);
|
||||
expect(byKey).toBeNull();
|
||||
});
|
||||
|
||||
test('should fail to create a new variable and if one with the same key exists', async () => {
|
||||
await testDb.createVariable(toCreate.key, toCreate.value);
|
||||
await createVariable(toCreate.key, toCreate.value);
|
||||
const response = await authOwnerAgent.post('/variables').send(toCreate);
|
||||
expect(response.statusCode).toBe(500);
|
||||
expect(response.body.data?.key).not.toBe(toCreate.key);
|
||||
@@ -151,7 +179,7 @@ describe('POST /variables', () => {
|
||||
let i = 1;
|
||||
let toCreate = generatePayload(i);
|
||||
while (i < 3) {
|
||||
await testDb.createVariable(toCreate.key, toCreate.value);
|
||||
await createVariable(toCreate.key, toCreate.value);
|
||||
i++;
|
||||
toCreate = generatePayload(i);
|
||||
}
|
||||
@@ -166,7 +194,7 @@ describe('POST /variables', () => {
|
||||
let i = 1;
|
||||
let toCreate = generatePayload(i);
|
||||
while (i < 6) {
|
||||
await testDb.createVariable(toCreate.key, toCreate.value);
|
||||
await createVariable(toCreate.key, toCreate.value);
|
||||
i++;
|
||||
toCreate = generatePayload(i);
|
||||
}
|
||||
@@ -224,15 +252,15 @@ describe('PATCH /variables/:id', () => {
|
||||
};
|
||||
|
||||
test('should modify existing variable if use is an owner', async () => {
|
||||
const variable = await testDb.createVariable('test1', 'value1');
|
||||
const variable = await createVariable('test1', 'value1');
|
||||
const response = await authOwnerAgent.patch(`/variables/${variable.id}`).send(toModify);
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response.body.data.key).toBe(toModify.key);
|
||||
expect(response.body.data.value).toBe(toModify.value);
|
||||
|
||||
const [byId, byKey] = await Promise.all([
|
||||
testDb.getVariableById(response.body.data.id),
|
||||
testDb.getVariableByKey(toModify.key),
|
||||
getVariableById(response.body.data.id),
|
||||
getVariableByKey(toModify.key),
|
||||
]);
|
||||
|
||||
expect(byId).not.toBeNull();
|
||||
@@ -245,15 +273,15 @@ describe('PATCH /variables/:id', () => {
|
||||
});
|
||||
|
||||
test('should modify existing variable if use is an owner', async () => {
|
||||
const variable = await testDb.createVariable('test1', 'value1');
|
||||
const variable = await createVariable('test1', 'value1');
|
||||
const response = await authOwnerAgent.patch(`/variables/${variable.id}`).send(toModify);
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response.body.data.key).toBe(toModify.key);
|
||||
expect(response.body.data.value).toBe(toModify.value);
|
||||
|
||||
const [byId, byKey] = await Promise.all([
|
||||
testDb.getVariableById(response.body.data.id),
|
||||
testDb.getVariableByKey(toModify.key),
|
||||
getVariableById(response.body.data.id),
|
||||
getVariableByKey(toModify.key),
|
||||
]);
|
||||
|
||||
expect(byId).not.toBeNull();
|
||||
@@ -266,13 +294,13 @@ describe('PATCH /variables/:id', () => {
|
||||
});
|
||||
|
||||
test('should not modify existing variable if use is a member', async () => {
|
||||
const variable = await testDb.createVariable('test1', 'value1');
|
||||
const variable = await createVariable('test1', 'value1');
|
||||
const response = await authMemberAgent.patch(`/variables/${variable.id}`).send(toModify);
|
||||
expect(response.statusCode).toBe(401);
|
||||
expect(response.body.data?.key).not.toBe(toModify.key);
|
||||
expect(response.body.data?.value).not.toBe(toModify.value);
|
||||
|
||||
const byId = await testDb.getVariableById(variable.id);
|
||||
const byId = await getVariableById(variable.id);
|
||||
expect(byId).not.toBeNull();
|
||||
expect(byId!.key).not.toBe(toModify.key);
|
||||
expect(byId!.value).not.toBe(toModify.value);
|
||||
@@ -280,15 +308,15 @@ describe('PATCH /variables/:id', () => {
|
||||
|
||||
test('should not modify existing variable if one with the same key exists', async () => {
|
||||
const [var1, var2] = await Promise.all([
|
||||
testDb.createVariable('test1', 'value1'),
|
||||
testDb.createVariable(toModify.key, toModify.value),
|
||||
createVariable('test1', 'value1'),
|
||||
createVariable(toModify.key, toModify.value),
|
||||
]);
|
||||
const response = await authOwnerAgent.patch(`/variables/${var1.id}`).send(toModify);
|
||||
expect(response.statusCode).toBe(500);
|
||||
expect(response.body.data?.key).not.toBe(toModify.key);
|
||||
expect(response.body.data?.value).not.toBe(toModify.value);
|
||||
|
||||
const byId = await testDb.getVariableById(var1.id);
|
||||
const byId = await getVariableById(var1.id);
|
||||
expect(byId).not.toBeNull();
|
||||
expect(byId!.key).toBe(var1.key);
|
||||
expect(byId!.value).toBe(var1.value);
|
||||
@@ -301,15 +329,15 @@ describe('PATCH /variables/:id', () => {
|
||||
describe('DELETE /variables/:id', () => {
|
||||
test('should delete a single variable for an owner', async () => {
|
||||
const [var1, var2, var3] = await Promise.all([
|
||||
testDb.createVariable('test1', 'value1'),
|
||||
testDb.createVariable('test2', 'value2'),
|
||||
testDb.createVariable('test3', 'value3'),
|
||||
createVariable('test1', 'value1'),
|
||||
createVariable('test2', 'value2'),
|
||||
createVariable('test3', 'value3'),
|
||||
]);
|
||||
|
||||
const delResponse = await authOwnerAgent.delete(`/variables/${var1.id}`);
|
||||
expect(delResponse.statusCode).toBe(200);
|
||||
|
||||
const byId = await testDb.getVariableById(var1.id);
|
||||
const byId = await getVariableById(var1.id);
|
||||
expect(byId).toBeNull();
|
||||
|
||||
const getResponse = await authOwnerAgent.get('/variables');
|
||||
@@ -318,15 +346,15 @@ describe('DELETE /variables/:id', () => {
|
||||
|
||||
test('should not delete a single variable for a member', async () => {
|
||||
const [var1, var2, var3] = await Promise.all([
|
||||
testDb.createVariable('test1', 'value1'),
|
||||
testDb.createVariable('test2', 'value2'),
|
||||
testDb.createVariable('test3', 'value3'),
|
||||
createVariable('test1', 'value1'),
|
||||
createVariable('test2', 'value2'),
|
||||
createVariable('test3', 'value3'),
|
||||
]);
|
||||
|
||||
const delResponse = await authMemberAgent.delete(`/variables/${var1.id}`);
|
||||
expect(delResponse.statusCode).toBe(401);
|
||||
|
||||
const byId = await testDb.getVariableById(var1.id);
|
||||
const byId = await getVariableById(var1.id);
|
||||
expect(byId).not.toBeNull();
|
||||
|
||||
const getResponse = await authMemberAgent.get('/variables');
|
||||
|
||||
Reference in New Issue
Block a user