diff --git a/test/api/v3/integration/webhook/GET-user-webhook.test.js b/test/api/v3/integration/webhook/GET-user-webhook.test.js new file mode 100644 index 0000000000..7dc8a82c03 --- /dev/null +++ b/test/api/v3/integration/webhook/GET-user-webhook.test.js @@ -0,0 +1,33 @@ +import { generateUser } from '../../../../helpers/api-integration/v3'; + +describe('GET /user/webhook', () => { + let user, webhooks; + + beforeEach(async () => { + user = await generateUser(); + + webhooks = []; + webhooks.push(await user.post('/user/webhook', { + url: 'http://some-url.com', + label: 'Label', + enabled: true, + type: 'taskActivity', + options: { created: true, scored: true }, + })); + webhooks.push(await user.post('/user/webhook', { + url: 'http://some-other-url.com', + enabled: false, + })); + + await user.sync(); + }); + + it('returns users webhooks', async () => { + let response = await user.get('/user/webhook'); + + // updatedAt times don't match for some reason, so need to omit those from comparison + let omitUpdatedAt = a => a.map(v => _.omit(v, 'updatedAt')); + + expect(omitUpdatedAt(response)).to.eql(omitUpdatedAt(webhooks)); + }); +}); diff --git a/website/server/controllers/api-v3/webhook.js b/website/server/controllers/api-v3/webhook.js index a39b05ce3d..141808ff9f 100644 --- a/website/server/controllers/api-v3/webhook.js +++ b/website/server/controllers/api-v3/webhook.js @@ -95,6 +95,24 @@ api.addWebhook = { }, }; +/** + * @api {get} /api/v3/user/webhook Get webhooks - BETA + * @apiName UserGetWebhook + * @apiGroup Webhook + * + * @apiSuccess {Array} data User's webhooks + */ +api.getWebhook = { + method: 'GET', + middlewares: [authWithHeaders()], + url: '/user/webhook', + async handler (req, res) { + let user = res.locals.user; + + res.respond(200, user.webhooks); + }, +}; + /** * @api {put} /api/v3/user/webhook/:id Edit a webhook - BETA * @apiName UserUpdateWebhook