feat: RBAC (#8922)

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: Val <68596159+valya@users.noreply.github.com>
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
Co-authored-by: Valya Bullions <valya@n8n.io>
Co-authored-by: Danny Martini <danny@n8n.io>
Co-authored-by: Danny Martini <despair.blue@gmail.com>
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
Co-authored-by: oleg <me@olegivaniv.com>
Co-authored-by: Michael Kret <michael.k@radency.com>
Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com>
Co-authored-by: Elias Meire <elias@meire.dev>
Co-authored-by: Giulio Andreini <andreini@netseven.it>
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
Co-authored-by: Ayato Hayashi <go12limchangyong@gmail.com>
This commit is contained in:
Csaba Tuncsik
2024-05-17 10:53:15 +02:00
committed by GitHub
parent b1f977ebd0
commit 596c472ecc
292 changed files with 14129 additions and 3989 deletions

View File

@@ -15,6 +15,7 @@ import * as utils from './shared/utils/';
import { addApiKey, createUser, createUserShell } from './shared/db/users';
import Container from 'typedi';
import { UserRepository } from '@db/repositories/user.repository';
import { ProjectRepository } from '@/databases/repositories/project.repository';
const testServer = utils.setupTestServer({ endpointGroups: ['me'] });
@@ -65,6 +66,12 @@ describe('Owner shell', () => {
expect(storedOwnerShell.email).toBe(validPayload.email.toLowerCase());
expect(storedOwnerShell.firstName).toBe(validPayload.firstName);
expect(storedOwnerShell.lastName).toBe(validPayload.lastName);
const storedPersonalProject = await Container.get(
ProjectRepository,
).getPersonalProjectForUserOrFail(storedOwnerShell.id);
expect(storedPersonalProject.name).toBe(storedOwnerShell.createPersonalProjectName());
}
});
@@ -77,6 +84,12 @@ describe('Owner shell', () => {
expect(storedOwnerShell.email).toBeNull();
expect(storedOwnerShell.firstName).toBeNull();
expect(storedOwnerShell.lastName).toBeNull();
const storedPersonalProject = await Container.get(
ProjectRepository,
).getPersonalProjectForUserOrFail(storedOwnerShell.id);
expect(storedPersonalProject.name).toBe(storedOwnerShell.createPersonalProjectName());
}
});
@@ -176,9 +189,7 @@ describe('Member', () => {
test('PATCH /me should succeed with valid inputs', async () => {
for (const validPayload of VALID_PATCH_ME_PAYLOADS) {
const response = await authMemberAgent.patch('/me').send(validPayload);
expect(response.statusCode).toBe(200);
const response = await authMemberAgent.patch('/me').send(validPayload).expect(200);
const {
id,
@@ -207,6 +218,11 @@ describe('Member', () => {
expect(storedMember.email).toBe(validPayload.email.toLowerCase());
expect(storedMember.firstName).toBe(validPayload.firstName);
expect(storedMember.lastName).toBe(validPayload.lastName);
const storedPersonalProject =
await Container.get(ProjectRepository).getPersonalProjectForUserOrFail(id);
expect(storedPersonalProject.name).toBe(storedMember.createPersonalProjectName());
}
});
@@ -219,6 +235,12 @@ describe('Member', () => {
expect(storedMember.email).toBe(member.email);
expect(storedMember.firstName).toBe(member.firstName);
expect(storedMember.lastName).toBe(member.lastName);
const storedPersonalProject = await Container.get(
ProjectRepository,
).getPersonalProjectForUserOrFail(storedMember.id);
expect(storedPersonalProject.name).toBe(storedMember.createPersonalProjectName());
}
});
@@ -336,6 +358,12 @@ describe('Owner', () => {
expect(storedOwner.email).toBe(validPayload.email.toLowerCase());
expect(storedOwner.firstName).toBe(validPayload.firstName);
expect(storedOwner.lastName).toBe(validPayload.lastName);
const storedPersonalProject = await Container.get(
ProjectRepository,
).getPersonalProjectForUserOrFail(storedOwner.id);
expect(storedPersonalProject.name).toBe(storedOwner.createPersonalProjectName());
}
});
});
@@ -357,11 +385,11 @@ const VALID_PATCH_ME_PAYLOADS = [
firstName: randomName(),
lastName: randomName(),
},
{
email: randomEmail().toUpperCase(),
firstName: randomName(),
lastName: randomName(),
},
// {
// email: randomEmail().toUpperCase(),
// firstName: randomName(),
// lastName: randomName(),
// },
];
const INVALID_PATCH_ME_PAYLOADS = [