Files
ECC/docker/context-profiles/complex-eval/cases/webhook-relay/files/test/relay.test.js
T

42 lines
1.4 KiB
JavaScript

'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const { createRelay } = require('../src/app');
function listen(server) {
return new Promise((resolve, reject) => {
server.once('error', reject);
server.listen(0, '127.0.0.1', () => resolve(server.address().port));
});
}
test('accepts a delivery and reports it as pending', async () => {
const server = createRelay();
const port = await listen(server);
try {
const created = await fetch(`http://127.0.0.1:${port}/deliveries`, {
method: 'POST', headers: { 'content-type': 'application/json' },
body: JSON.stringify({ url: 'http://127.0.0.1:1/hook', payload: { a: 1 } }) });
assert.equal(created.status, 202);
const { id } = await created.json();
const status = await fetch(`http://127.0.0.1:${port}/deliveries/${id}`);
assert.equal(status.status, 200);
const record = await status.json();
assert.equal(record.status, 'pending');
assert.equal(record.attempts, 0);
} finally {
server.close();
}
});
test('unknown delivery id returns 404', async () => {
const server = createRelay();
const port = await listen(server);
try {
const response = await fetch(`http://127.0.0.1:${port}/deliveries/00000000-0000-0000-0000-000000000000`);
assert.equal(response.status, 404);
} finally {
server.close();
}
});