mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
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:
@@ -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 = [
|
||||
|
||||
Reference in New Issue
Block a user