mirror of
https://github.com/wukko/cobalt.git
synced 2024-11-15 12:50:01 +00:00
42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
import { normalizeRequest } from "../processing/request.js";
|
|
import match from "../processing/match.js";
|
|
import { extract } from "../processing/url.js";
|
|
|
|
export async function runTest(url, params, expect) {
|
|
const { success, data: normalized } = await normalizeRequest({ url, ...params });
|
|
if (!success) {
|
|
throw "invalid request";
|
|
}
|
|
|
|
const parsed = extract(normalized.url);
|
|
if (parsed === null) {
|
|
throw `invalid url: ${normalized.url}`;
|
|
}
|
|
|
|
const result = await match(
|
|
parsed.host, parsed.patternMatch, normalized
|
|
);
|
|
|
|
let error = [];
|
|
if (expect.status !== result.body.status) {
|
|
const detail = `${expect.status} (expected) != ${result.body.status} (actual)`;
|
|
error.push(`status mismatch: ${detail}`);
|
|
}
|
|
|
|
if (expect.code !== result.status) {
|
|
const detail = `${expect.code} (expected) != ${result.status} (actual)`;
|
|
error.push(`status code mismatch: ${detail}`);
|
|
}
|
|
|
|
if (error.length) {
|
|
if (result.body.text) {
|
|
error.push(`error message: ${result.body.text}`);
|
|
}
|
|
|
|
throw error.join('\n');
|
|
}
|
|
|
|
if (result.body.status === 'stream') {
|
|
// TODO: stream testing
|
|
}
|
|
} |