Add pipeline test

This commit is contained in:
Alex Gleason 2023-03-26 16:29:35 -05:00
parent c1852ddd56
commit 31fd761278
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7

42
src/pipeline.test.ts Normal file
View File

@ -0,0 +1,42 @@
import { assertEquals } from './deps.ts';
import pipeline from './pipeline.ts';
import noopPolicy from './policies/noop-policy.ts';
import readOnlyPolicy from './policies/read-only-policy.ts';
import { buildInputMessage } from './test.ts';
Deno.test('passes events through multiple policies', async () => {
const msg = buildInputMessage();
const result = await pipeline(msg, [
noopPolicy,
readOnlyPolicy,
]);
assertEquals(result.action, 'reject');
assertEquals(result.msg, 'The relay is read-only.');
});
Deno.test('short-circuits on the first reject', async () => {
const msg = buildInputMessage();
const result = await pipeline(msg, [
readOnlyPolicy,
noopPolicy,
]);
assertEquals(result.action, 'reject');
assertEquals(result.msg, 'The relay is read-only.');
});
Deno.test('accepts when all policies accept', async () => {
const msg = buildInputMessage();
const result = await pipeline(msg, [
noopPolicy,
noopPolicy,
noopPolicy,
]);
assertEquals(result.action, 'accept');
});