diff --git a/packages/component-invite/src/CollectionsInvitations.js b/packages/component-invite/src/CollectionsInvitations.js index 3dcd2cd585db246d444a949bae33c0c55dc793f1..b486ddbfa6e1a555e267e8837bd5f73f729a8efb 100644 --- a/packages/component-invite/src/CollectionsInvitations.js +++ b/packages/component-invite/src/CollectionsInvitations.js @@ -46,9 +46,11 @@ const CollectionsInvitations = app => { require(`${routePath}/post`)(app.locals.models), ) /** - * @api {get} /api/collections/:collectionId/invitations List collections invitations + * @api {get} /api/collections/:collectionId/invitations/{:invitationId}?role=:role List collections invitations * @apiGroup CollectionsInvitations - * @apiParam {collectionId} id Collection id + * @apiParam {id} collectionId Collection id + * @apiParam {id} [invitationId] Invitation id + * @apiParam {String} role The role to search for: handlingEditor, reviewer, author * @apiSuccessExample {json} Success * HTTP/1.1 200 OK * [{ @@ -56,6 +58,7 @@ const CollectionsInvitations = app => { * "timestamp": "123223121", * "email": "email@example.com", * "status": "pending", + * "invitationId": "1990881" * }] * @apiErrorExample {json} List errors * HTTP/1.1 403 Forbidden diff --git a/packages/component-invite/src/helpers/Invitation.js b/packages/component-invite/src/helpers/Invitation.js index db8de768bac2b351219962139928d406c2e1e870..5d6897ebf372f6ce8fa44cc97508b5bed3d4327d 100644 --- a/packages/component-invite/src/helpers/Invitation.js +++ b/packages/component-invite/src/helpers/Invitation.js @@ -11,8 +11,8 @@ const getInvitationData = (invitations, userId, role) => { status = 'refused' } - const { timestamp } = matchingInvitation - return { timestamp, status } + const { timestamp, id } = matchingInvitation + return { timestamp, status, id } } const setupInvitation = async (userId, role, collection) => { diff --git a/packages/component-invite/src/routes/collectionsInvitations/get.js b/packages/component-invite/src/routes/collectionsInvitations/get.js index 5650c6ef10817d2c74d30cff316396383478c2bd..4dd66e7d5eaa6afb9225e4f0abb346d34f47ab5f 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/get.js +++ b/packages/component-invite/src/routes/collectionsInvitations/get.js @@ -5,10 +5,10 @@ const inviteHelper = require('../../helpers/Invitation') const configRoles = config.get('roles') module.exports = models => async (req, res) => { - const { userId, role } = req.query + const { role } = req.query // TO DO: authsome - if (!helpers.checkForUndefinedParams(userId, role)) { - res.status(400).json({ error: 'User ID and Role are required' }) + if (!helpers.checkForUndefinedParams(role)) { + res.status(400).json({ error: 'Role is required' }) return } @@ -32,11 +32,12 @@ module.exports = models => async (req, res) => { return } + // TO DO: handle case for when the invitationID is provided const membersData = members.map(async member => { const user = await models.User.find(member) - const { timestamp, status } = inviteHelper.getInvitationData( + const { timestamp, status, id } = inviteHelper.getInvitationData( collection.invitations, - userId, + user.id, role, ) return { @@ -44,6 +45,7 @@ module.exports = models => async (req, res) => { timestamp, email: user.email, status, + invitationId: id, } }) diff --git a/packages/component-invite/src/tests/collectionsInvitations/delete.test.js b/packages/component-invite/src/tests/collectionsInvitations/delete.test.js index 03c1df0a9af26b896a8cc1ecc57c66d63962de3f..c5ef512e0f69c38be7ebccc5c228970c51e6c849 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/delete.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/delete.test.js @@ -42,21 +42,6 @@ describe('Delete Collections Invitations route handler', () => { const data = JSON.parse(res._getData()) expect(data.error).toEqual('Invitation invalid-id not found') }) - it('should return an error when the request user is not editorInChief or admin', async () => { - const { user } = testFixtures.users - const { collection } = testFixtures.collections - const req = httpMocks.createRequest() - req.params.collectionId = collection.id - req.params.invitationId = collection.invitations[0].id - req.user = user.id - const res = httpMocks.createResponse() - await require(deletePath)(models)(req, res) - expect(res.statusCode).toBe(403) - const data = JSON.parse(res._getData()) - expect(data.error).toEqual( - 'The request user must be Editor in Chief or Admin', - ) - }) it('should return success when the collection and invitation exist', async () => { const { editorInChief } = testFixtures.users const { collection } = testFixtures.collections diff --git a/packages/component-invite/src/tests/collectionsInvitations/get.test.js b/packages/component-invite/src/tests/collectionsInvitations/get.test.js index d465691b23f902f0f7428d2524dfc0ab34706d9c..b594ef52666a89e8e619b7e63862c2e6eb3ea49e 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/get.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/get.test.js @@ -40,7 +40,7 @@ describe('Get collection invitations route handler', () => { await require(getPath)(models)(req, res) expect(res.statusCode).toBe(400) const data = JSON.parse(res._getData()) - expect(data.error).toEqual('User ID and Role are required') + expect(data.error).toEqual('Role is required') }) it('should return an error when the collection does not exist', async () => { const { editorInChief, handlingEditor } = testFixtures.users @@ -96,23 +96,4 @@ describe('Get collection invitations route handler', () => { `The requested collection does not have a ${req.query.role} Team`, ) }) - it('should return an error when the request user is not EiC or Admin', async () => { - const { user, handlingEditor } = testFixtures.users - const { collection } = testFixtures.collections - const req = httpMocks.createRequest() - req.query = { - role: 'handlingEditor', - userId: handlingEditor.id, - } - req.params.collectionId = collection.id - req.user = user.id - const res = httpMocks.createResponse() - const models = Model.build() - await require(getPath)(models)(req, res) - expect(res.statusCode).toBe(403) - const data = JSON.parse(res._getData()) - expect(data.error).toEqual( - `The request user must be Editor in Chief or Admin`, - ) - }) })