Skip to content

Commit

Permalink
fix: projects needs at least one owner
Browse files Browse the repository at this point in the history
  • Loading branch information
ivarconr committed May 25, 2021
1 parent 0ffd01f commit f9ef945
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/lib/services/project-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,10 +190,10 @@ export default class ProjectService {
);
}

if (role.name === RoleName.ADMIN) {
if (role.name === RoleName.OWNER) {
const users = await this.accessService.getUsersForRole(role.id);
if (users.length < 2) {
throw new Error('A project must have at least one admin');
throw new Error('A project must have at least one owner');
}
}

Expand Down
1 change: 1 addition & 0 deletions src/server-dev.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@ unleash.start(
versionCheck: {
enable: false,
},
secureHeaders: true,
}),
);
22 changes: 22 additions & 0 deletions src/test/e2e/services/project-service.e2e.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -377,3 +377,25 @@ test.serial('should remove user from the project', async t => {

t.is(memberUsers.length, 0);
});

test.serial('should not remove user from the project', async t => {
const project = {
id: 'remove-users-not-allowed',
name: 'New project',
description: 'Blah',
};
await projectService.createProject(project, user);

const roles = await stores.accessStore.getRolesForProject(project.id);
const ownerRole = roles.find(r => r.name === RoleName.OWNER);

await t.throwsAsync(
async () => {
await projectService.removeUser(project.id, ownerRole.id, user.id);
},
{
instanceOf: Error,
message: 'A project must have at least one owner',
},
);
});

0 comments on commit f9ef945

Please sign in to comment.