Spaces:
Running
Running
File size: 1,266 Bytes
5bab120 |
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 |
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({
host: parsed.host,
patternMatch: parsed.patternMatch,
params: 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 === 'tunnel') {
// TODO: stream testing
}
} |