Skip to content

Commit ea06535

Browse files
authored
Merge pull request #6 from topcoder-platform/PM-2654
Consider a copilot to have "full access" to a challenge (PM-2654)
2 parents 3d6d671 + 41cfbfe commit ea06535

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

src/services/ResourceService.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ async function getRestrictedRoleIds () {
7777
* @param {Array} resources resources of current user for specified challenge id
7878
*/
7979
async function checkAccess (currentUserResources) {
80+
const copilotRoleIds = await getCopilotResourceRoleIds()
81+
const hasCopilotRole = _.some(currentUserResources, r => copilotRoleIds.includes(r.roleId))
82+
if (hasCopilotRole) {
83+
return
84+
}
85+
8086
const list = await prisma.resourceRole.findMany({})
8187
const fullAccessRoles = []
8288
_.each(list, e => {

test/unit/createResource.test.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const { v4: uuid } = require('uuid')
99
const service = require('../../src/services/ResourceService')
1010
const ResourceRolePhaseDependencyService = require('../../src/services/ResourceRolePhaseDependencyService')
1111
const prisma = require('../../src/common/prisma').getClient()
12+
const helper = require('../../src/common/helper')
1213
const ResourceRoleService = require('../../src/services/ResourceRoleService')
1314
const { requestBody, user } = require('../common/testData')
1415
const { assertValidationError, assertError, assertResource, getRoleIds, clearDependencies } = require('../common/testHelper')
@@ -264,6 +265,39 @@ module.exports = describe('Create resource', () => {
264265
await assertResource(ret.id, ret)
265266
})
266267

268+
it('copilot can manage resources without full access flags', async () => {
269+
const originalRole = await helper.getById('ResourceRole', copilotRoleId)
270+
await ResourceRoleService.updateResourceRole(user.admin, copilotRoleId, {
271+
name: originalRole.name,
272+
fullReadAccess: false,
273+
fullWriteAccess: false,
274+
isActive: originalRole.isActive,
275+
selfObtainable: originalRole.selfObtainable
276+
})
277+
278+
const entity = resources.createBody('diazz', reviewerRoleId, challengeId2)
279+
let createdResource
280+
try {
281+
createdResource = await service.createResource(user.phead, entity)
282+
should.equal(createdResource.roleId, entity.roleId)
283+
should.equal(createdResource.memberHandle.toLowerCase(), entity.memberHandle.toLowerCase())
284+
await assertResource(createdResource.id, createdResource)
285+
} finally {
286+
if (createdResource && createdResource.id) {
287+
await prisma.resource.deleteMany({
288+
where: { id: createdResource.id }
289+
})
290+
}
291+
await ResourceRoleService.updateResourceRole(user.admin, copilotRoleId, {
292+
name: originalRole.name,
293+
fullReadAccess: originalRole.fullReadAccess,
294+
fullWriteAccess: originalRole.fullWriteAccess,
295+
isActive: originalRole.isActive,
296+
selfObtainable: originalRole.selfObtainable
297+
})
298+
}
299+
})
300+
267301
it('create resource for user ghostar 1', async () => {
268302
const entity = resources.createBody('ghostar', reviewerRoleId, challengeId2)
269303
const ret = await service.createResource(user.m2m, entity)

0 commit comments

Comments
 (0)