omnivore/packages/api/test/routers/webhooks.test.ts

62 lines
1.6 KiB
TypeScript
Raw Permalink Normal View History

2022-05-26 03:05:12 +00:00
import { expect } from 'chai'
2023-08-23 04:15:50 +00:00
import 'mocha'
2022-05-26 07:12:11 +00:00
import nock from 'nock'
2023-08-23 04:15:50 +00:00
import { User } from '../../src/entity/user'
import { Webhook } from '../../src/entity/webhook'
2023-09-07 04:35:05 +00:00
import { deleteUser } from '../../src/services/user'
import { createWebhook } from '../../src/services/webhook'
import { createTestUser } from '../db'
2023-08-23 04:15:50 +00:00
import { request } from '../util'
2022-05-26 02:51:30 +00:00
describe('Webhooks Router', () => {
const token = process.env.PUBSUB_VERIFICATION_TOKEN || ''
2022-05-26 07:12:11 +00:00
const webhookBaseUrl = 'https://localhost:3000'
const webhookPath = `/webhooks`
2022-05-26 02:51:30 +00:00
let user: User
let webhook: Webhook
before(async () => {
// create test user and login
2022-08-10 08:36:31 +00:00
user = await createTestUser('fakeUser')
2022-05-26 02:51:30 +00:00
await request
.post('/local/debug/fake-user-login')
.send({ fakeEmail: user.email })
2023-09-07 04:35:05 +00:00
webhook = await createWebhook(
{
url: webhookBaseUrl + webhookPath,
user: { id: user.id },
eventTypes: ['PAGE_CREATED'],
},
2023-09-06 14:53:58 +00:00
user.id
)
2022-05-26 02:51:30 +00:00
})
after(async () => {
// clean up
2023-09-07 04:35:05 +00:00
await deleteUser(user.id)
2022-05-26 02:51:30 +00:00
})
describe('trigger webhooks', () => {
it('should trigger webhooks', async () => {
const data = {
message: {
data: Buffer.from(
JSON.stringify({ userId: user.id, type: 'page' })
).toString('base64'),
publishTime: new Date().toISOString(),
},
}
2022-05-26 07:12:11 +00:00
nock(webhookBaseUrl).post(webhookPath).reply(200)
2022-05-26 03:05:12 +00:00
const res = await request
2022-05-26 02:51:30 +00:00
.post('/svc/pubsub/webhooks/trigger/created?token=' + token)
.send(data)
.expect(200)
2022-05-26 05:33:45 +00:00
expect(res.text).to.eql('OK')
2022-05-26 02:51:30 +00:00
})
})
})