Luigit
repositories / pi-ext

pi-ext

bugabingas pi extensions

owned by admin

extensions/web/__fuzz__/extract.fuzz.ts

Raw
import { fuzz, fuzzRegressions, isMain } from "../../../test/fuzz.ts";
import { extractMainContent, sanitizeInjectionVectors } from "../extract.ts";

export const NAME = "web extract parsers tolerate hostile HTML";

/** Documented acceptable rejections (none: these parsers must never throw). */
export const allow: ReadonlyArray<abstract new (...args: never[]) => Error> =
	[];

export function exercise(input: string): void {
	const sanitized = sanitizeInjectionVectors(input);
	if (sanitizeInjectionVectors(sanitized) !== sanitized)
		throw new Error("sanitizeInjectionVectors is not idempotent");
	extractMainContent(input);
}

export function regressions(): string[] {
	return fuzzRegressions(import.meta.url);
}

if (isMain(import.meta.url)) {
	fuzz(import.meta.url, NAME, exercise, {
		numRuns: Number(process.env["FUZZ_RUNS"] ?? 2000),
	});
	console.log(`fuzz ok: ${NAME}`);
}