-
Notifications
You must be signed in to change notification settings - Fork 28
/
sources.test.js
46 lines (40 loc) · 1.5 KB
/
sources.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var fs = require('fs')
const process = require('process')
const { processSourcePayload } = require('./buildpack/boreal')
const { EventNotSupported, InvalidEventPayload, ValidationError } = require('./buildpack/boreal/window')
const sources = fs.readdirSync(`${__dirname}/sources`)
const skips = ["leanplum"]
describe.each(sources)("%s", (source) => {
let dir = `${__dirname}/sources/${source}`
let payloads = []
let examples
try {
examples = fs.readdirSync(`${dir}/webhook-examples`)}
catch(e) {
console.log(`no tests for ${source}, skipping`)
return
}
for (var i = 0; i < examples.length; i++) {
const example = examples[i]
const payload = JSON.parse(fs.readFileSync(`${dir}/webhook-examples/${example}`, 'utf8'))
payloads.push([example, payload])
}
let tester = test
if (skips.indexOf(source) > -1) {
tester = xtest
}
tester.each(payloads)("%s payload", async (example, payload) => {
expect(payload.payload.body).toBeDefined()
})
tester.each(payloads)("%s handler", async (example, payload) => {
process.chdir(dir)
try {
const messages = await processSourcePayload(payload)
expect(messages.events.length + messages.objects.length).toBeGreaterThanOrEqual(0)
} catch(err) {
if (!(err instanceof EventNotSupported || err instanceof ValidationError || err instanceof InvalidEventPayload)) {
fail(err)
}
}
})
})