mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
feat(core): Add endpoint PATCH /projects/:projectId/folders/:folderId (no-changelog) (#13454)
This commit is contained in:
@@ -279,3 +279,133 @@ describe('GET /projects/:projectId/folders/:folderId/tree', () => {
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('PATCH /projects/:projectId/folders/:folderId', () => {
|
||||
test('should not update folder when project does not exist', async () => {
|
||||
const payload = {
|
||||
name: 'Updated Folder Name',
|
||||
};
|
||||
|
||||
await authOwnerAgent
|
||||
.patch('/projects/non-existing-id/folders/some-folder-id')
|
||||
.send(payload)
|
||||
.expect(403);
|
||||
});
|
||||
|
||||
test('should not update folder when folder does not exist', async () => {
|
||||
const project = await createTeamProject('test project', owner);
|
||||
|
||||
const payload = {
|
||||
name: 'Updated Folder Name',
|
||||
};
|
||||
|
||||
await authOwnerAgent
|
||||
.patch(`/projects/${project.id}/folders/non-existing-folder`)
|
||||
.send(payload)
|
||||
.expect(404);
|
||||
});
|
||||
|
||||
test('should not update folder when name is empty', async () => {
|
||||
const project = await createTeamProject(undefined, owner);
|
||||
const folder = await createFolder(project, { name: 'Original Name' });
|
||||
|
||||
const payload = {
|
||||
name: '',
|
||||
};
|
||||
|
||||
await authOwnerAgent
|
||||
.patch(`/projects/${project.id}/folders/${folder.id}`)
|
||||
.send(payload)
|
||||
.expect(400);
|
||||
|
||||
const folderInDb = await folderRepository.findOneBy({ id: folder.id });
|
||||
expect(folderInDb?.name).toBe('Original Name');
|
||||
});
|
||||
|
||||
test('should not update folder if user has project:viewer role in team project', async () => {
|
||||
const project = await createTeamProject(undefined, owner);
|
||||
const folder = await createFolder(project, { name: 'Original Name' });
|
||||
await linkUserToProject(member, project, 'project:viewer');
|
||||
|
||||
const payload = {
|
||||
name: 'Updated Folder Name',
|
||||
};
|
||||
|
||||
await authMemberAgent
|
||||
.patch(`/projects/${project.id}/folders/${folder.id}`)
|
||||
.send(payload)
|
||||
.expect(403);
|
||||
|
||||
const folderInDb = await folderRepository.findOneBy({ id: folder.id });
|
||||
expect(folderInDb?.name).toBe('Original Name');
|
||||
});
|
||||
|
||||
test("should not allow updating folder in another user's personal project", async () => {
|
||||
const ownerPersonalProject = await projectRepository.getPersonalProjectForUserOrFail(owner.id);
|
||||
const folder = await createFolder(ownerPersonalProject, { name: 'Original Name' });
|
||||
|
||||
const payload = {
|
||||
name: 'Updated Folder Name',
|
||||
};
|
||||
|
||||
await authMemberAgent
|
||||
.patch(`/projects/${ownerPersonalProject.id}/folders/${folder.id}`)
|
||||
.send(payload)
|
||||
.expect(403);
|
||||
|
||||
const folderInDb = await folderRepository.findOneBy({ id: folder.id });
|
||||
expect(folderInDb?.name).toBe('Original Name');
|
||||
});
|
||||
|
||||
test('should update folder if user has project:editor role in team project', async () => {
|
||||
const project = await createTeamProject(undefined, owner);
|
||||
const folder = await createFolder(project, { name: 'Original Name' });
|
||||
await linkUserToProject(member, project, 'project:editor');
|
||||
|
||||
const payload = {
|
||||
name: 'Updated Folder Name',
|
||||
};
|
||||
|
||||
await authMemberAgent
|
||||
.patch(`/projects/${project.id}/folders/${folder.id}`)
|
||||
.send(payload)
|
||||
.expect(200);
|
||||
|
||||
const folderInDb = await folderRepository.findOneBy({ id: folder.id });
|
||||
expect(folderInDb?.name).toBe('Updated Folder Name');
|
||||
});
|
||||
|
||||
test('should update folder if user has project:admin role in team project', async () => {
|
||||
const project = await createTeamProject(undefined, owner);
|
||||
const folder = await createFolder(project, { name: 'Original Name' });
|
||||
|
||||
const payload = {
|
||||
name: 'Updated Folder Name',
|
||||
};
|
||||
|
||||
await authOwnerAgent
|
||||
.patch(`/projects/${project.id}/folders/${folder.id}`)
|
||||
.send(payload)
|
||||
.expect(200);
|
||||
|
||||
const folderInDb = await folderRepository.findOneBy({ id: folder.id });
|
||||
expect(folderInDb?.name).toBe('Updated Folder Name');
|
||||
});
|
||||
|
||||
test('should update folder in personal project', async () => {
|
||||
const personalProject = await projectRepository.getPersonalProjectForUserOrFail(owner.id);
|
||||
const folder = await createFolder(personalProject, { name: 'Original Name' });
|
||||
|
||||
const payload = {
|
||||
name: 'Updated Folder Name',
|
||||
};
|
||||
|
||||
await authOwnerAgent
|
||||
.patch(`/projects/${personalProject.id}/folders/${folder.id}`)
|
||||
.send(payload)
|
||||
.expect(200);
|
||||
|
||||
const folderInDb = await folderRepository.findOneBy({ id: folder.id });
|
||||
expect(folderInDb?.name).toBe('Updated Folder Name');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user