import test from "node:test"; import assert from "node:assert/strict"; const { isCloudflareChallenge, looksLikeSse, TlsClientUnavailableError } = await import("../../open-sse/services/perplexityTlsClient.ts"); // Regression for #2459: a Cloudflare 403 challenge page must be distinguishable from a // genuine auth failure so the executor/validator can surface an actionable error. test("#2459 isCloudflareChallenge detects 'Just a moment' interstitial", () => { assert.equal(isCloudflareChallenge("Just a moment..."), true); }); test("#2459 isCloudflareChallenge detects window._cf_chl_opt", () => { assert.equal(isCloudflareChallenge(""), true); }); test("#2459 isCloudflareChallenge detects challenges.cloudflare.com", () => { assert.equal(isCloudflareChallenge('src="https://challenges.cloudflare.com/turnstile"'), true); }); test("#2459 isCloudflareChallenge returns false for normal JSON / SSE / empty", () => { assert.equal(isCloudflareChallenge('{"status":"ok"}'), false); assert.equal(isCloudflareChallenge('data: {"text":"hi"}\n\n'), false); assert.equal(isCloudflareChallenge(""), false); assert.equal(isCloudflareChallenge(null), false); assert.equal(isCloudflareChallenge(undefined), false); }); test("#2459 looksLikeSse positive for data/event markers, negative for HTML", () => { assert.equal(looksLikeSse("data: {}\n\n"), true); assert.equal(looksLikeSse("event: message\n"), true); assert.equal(looksLikeSse(": comment"), true); assert.equal(looksLikeSse("Just a moment"), false); assert.equal(looksLikeSse('{"json":true}'), false); }); test("#2459 TlsClientUnavailableError has the expected name", () => { const err = new TlsClientUnavailableError("native binary missing"); assert.equal(err.name, "TlsClientUnavailableError"); assert.ok(err instanceof Error); });