Spaces:
Running
Running
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 | |
} | |
} |