mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-20 11:22:15 +00:00
feat(API): Add user management endpoints to the Projects Public API (#12329)
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in> Co-authored-by: Danny Martini <danny@n8n.io> Co-authored-by: Andreas Fitzek <andreas.fitzek@n8n.io> Co-authored-by: Guillaume Jacquart <jacquart.guillaume@gmail.com>
This commit is contained in:
@@ -52,7 +52,7 @@ describe('ProjectService', () => {
|
||||
//
|
||||
// ACT
|
||||
//
|
||||
await projectService.addUser(project.id, member.id, role);
|
||||
await projectService.addUser(project.id, { userId: member.id, role });
|
||||
|
||||
//
|
||||
// ASSERT
|
||||
@@ -74,7 +74,7 @@ describe('ProjectService', () => {
|
||||
type: 'team',
|
||||
}),
|
||||
);
|
||||
await projectService.addUser(project.id, member.id, 'project:viewer');
|
||||
await projectService.addUser(project.id, { userId: member.id, role: 'project:viewer' });
|
||||
|
||||
await projectRelationRepository.findOneOrFail({
|
||||
where: { userId: member.id, projectId: project.id, role: 'project:viewer' },
|
||||
@@ -83,7 +83,7 @@ describe('ProjectService', () => {
|
||||
//
|
||||
// ACT
|
||||
//
|
||||
await projectService.addUser(project.id, member.id, 'project:admin');
|
||||
await projectService.addUser(project.id, { userId: member.id, role: 'project:admin' });
|
||||
|
||||
//
|
||||
// ASSERT
|
||||
@@ -117,7 +117,7 @@ describe('ProjectService', () => {
|
||||
type: 'team',
|
||||
}),
|
||||
);
|
||||
await projectService.addUser(project.id, projectOwner.id, role);
|
||||
await projectService.addUser(project.id, { userId: projectOwner.id, role });
|
||||
|
||||
//
|
||||
// ACT
|
||||
@@ -157,7 +157,7 @@ describe('ProjectService', () => {
|
||||
type: 'team',
|
||||
}),
|
||||
);
|
||||
await projectService.addUser(project.id, projectViewer.id, role);
|
||||
await projectService.addUser(project.id, { userId: projectViewer.id, role });
|
||||
|
||||
//
|
||||
// ACT
|
||||
@@ -200,4 +200,44 @@ describe('ProjectService', () => {
|
||||
expect(projectFromService).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('deleteUserFromProject', () => {
|
||||
it('should not allow project owner to be removed from the project', async () => {
|
||||
const role = 'project:personalOwner';
|
||||
|
||||
const user = await createMember();
|
||||
const project = await projectRepository.save(
|
||||
projectRepository.create({
|
||||
name: 'Team Project',
|
||||
type: 'team',
|
||||
}),
|
||||
);
|
||||
await projectService.addUser(project.id, { userId: user.id, role });
|
||||
|
||||
await expect(projectService.deleteUserFromProject(project.id, user.id)).rejects.toThrowError(
|
||||
/^Project owner cannot be removed from the project$/,
|
||||
);
|
||||
});
|
||||
|
||||
it('should remove user from project if not owner', async () => {
|
||||
const role = 'project:editor';
|
||||
|
||||
const user = await createMember();
|
||||
const project = await projectRepository.save(
|
||||
projectRepository.create({
|
||||
name: 'Team Project',
|
||||
type: 'team',
|
||||
}),
|
||||
);
|
||||
await projectService.addUser(project.id, { userId: user.id, role });
|
||||
|
||||
await projectService.deleteUserFromProject(project.id, user.id);
|
||||
|
||||
const relations = await projectRelationRepository.findOne({
|
||||
where: { userId: user.id, projectId: project.id, role },
|
||||
});
|
||||
|
||||
expect(relations).toBeNull();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user