mirror of
https://github.com/zhigang1992/probot.git
synced 2026-06-14 18:08:58 +08:00
Convert the rest of the files in `/src` and disable allowJs Move everything to named exports Update bin to use named exports Make all tests js and use named exports
65 lines
1.6 KiB
JavaScript
65 lines
1.6 KiB
JavaScript
const express = require('express')
|
|
const sse = require('connect-sse')()
|
|
const nock = require('nock')
|
|
const {createWebhookProxy} = require('../src/webhook-proxy')
|
|
const {logger} = require('../src/logger')
|
|
|
|
const targetPort = 999999
|
|
|
|
describe('webhook-proxy', () => {
|
|
let app, server, proxy, url, emit
|
|
|
|
afterEach(() => {
|
|
server && server.close()
|
|
proxy && proxy.close()
|
|
})
|
|
|
|
describe('with a valid proxy server', () => {
|
|
beforeEach((done) => {
|
|
app = express()
|
|
|
|
app.get('/events', sse, function (req, res) {
|
|
res.json({}, 'ready')
|
|
emit = res.json
|
|
})
|
|
|
|
server = app.listen(0, () => {
|
|
url = `http://127.0.0.1:${server.address().port}/events`
|
|
proxy = createWebhookProxy({url, port: targetPort, path: '/test', logger})
|
|
|
|
// Wait for proxy to be ready
|
|
proxy.addEventListener('ready', () => done())
|
|
})
|
|
})
|
|
|
|
test('forwards events to server', (done) => {
|
|
nock(`http://localhost:${targetPort}`).post('/test').reply(200, () => {
|
|
done()
|
|
})
|
|
|
|
const body = {action: 'foo'}
|
|
|
|
emit({
|
|
'x-github-event': 'test',
|
|
body
|
|
})
|
|
})
|
|
})
|
|
|
|
test('logs an error when the proxy server is not found', (done) => {
|
|
const url = 'http://bad.proxy/events'
|
|
nock('http://bad.proxy').get('/events').reply(404)
|
|
|
|
const log = logger.child()
|
|
log.error = jest.fn()
|
|
|
|
proxy = createWebhookProxy({url, logger: log})
|
|
|
|
proxy.on('error', err => {
|
|
expect(err.status).toBe(404)
|
|
expect(log.error).toHaveBeenCalledWith(err)
|
|
done()
|
|
})
|
|
})
|
|
})
|