Files
probot/test/webhook-proxy.test.js
tcbyrd 30af8747c2 Refactor imports and exports and fix tests
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
2018-02-25 20:42:25 -05:00

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()
})
})
})