Add tests for trigger endpoint

This commit is contained in:
Hongbo Wu 2022-05-26 10:51:30 +08:00
parent 7b0ebb9dbf
commit c9c6f83e65
2 changed files with 54 additions and 3 deletions

View file

@ -10,7 +10,7 @@ import axios, { Method } from 'axios'
export function webhooksServiceRouter() {
const router = express.Router()
router.post('/:action', async (req, res) => {
router.post('/trigger/:action', async (req, res) => {
console.log('trigger webhook of action', req.params.action)
const { message: msgStr, expired } = readPushSubscription(req)
@ -38,8 +38,8 @@ export function webhooksServiceRouter() {
const eventType = `${type as string}_${req.params.action}`.toUpperCase()
const webhooks = await getRepository(Webhook)
.createQueryBuilder()
.where('userId = :userId', { userId })
.andWhere(':eventType = ANY(eventTypes)', { eventType })
.where('user_id = :userId', { userId })
.andWhere(':eventType = ANY(event_types)', { eventType })
.andWhere('enabled = true')
.getMany()

View file

@ -0,0 +1,51 @@
import { createTestUser, deleteTestUser } from '../db'
import { request } from '../util'
import { User } from '../../src/entity/user'
import 'mocha'
import { getRepository } from '../../src/entity/utils'
import { Webhook } from '../../src/entity/webhook'
describe('Webhooks Router', () => {
const username = 'fakeUser'
const token = process.env.PUBSUB_VERIFICATION_TOKEN || ''
let user: User
let webhook: Webhook
before(async () => {
// create test user and login
user = await createTestUser(username)
await request
.post('/local/debug/fake-user-login')
.send({ fakeEmail: user.email })
webhook = await getRepository(Webhook).save({
url: 'https://example.com',
user: { id: user.id },
eventTypes: ['PAGE_CREATED'],
})
})
after(async () => {
// clean up
await deleteTestUser(username)
})
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(),
},
}
await request
.post('/svc/pubsub/webhooks/trigger/created?token=' + token)
.send(data)
.expect(200)
})
})
})