From a312408b24cb4d51f0c4f1f5bf14ed56c608d8c4 Mon Sep 17 00:00:00 2001 From: Ayush7614 Date: Wed, 2 Sep 2026 14:13:39 +0530 Subject: [PATCH] fix(helpers): make X-AIMock-Strict header parsing case-insensitive and whitespace-tolerant Clients and proxies often normalize or user-configure header values with varying case (True/TRUE) or surrounding whitespace. The previous strict check compared literally against "true"/"false"/"1"/"0", so "True" or " true " silently fell through to the server default, causing surprising 404s/503s and reasoning suppression mismatches. Trim and lower-case the value before comparison so "True", "TRUE", " true " etc. are accepted. Unrecognised values still fall back to the server default. --- src/helpers.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/helpers.ts b/src/helpers.ts index 748c475d..d9e36991 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -33,7 +33,8 @@ import type { * Header values override the server default — same precedence pattern as chaos * config headers (see resolveChaosConfig in chaos.ts). * - * Header: `X-AIMock-Strict` — "true"/"1" → strict on, "false"/"0" → strict off. + * Header: `X-AIMock-Strict` — "true"/"1" → strict on, "false"/"0" → strict off + * (case-insensitive, surrounding whitespace trimmed). * When absent or unrecognised, falls back to the server-level default. */ export function resolveStrictMode( @@ -42,9 +43,13 @@ export function resolveStrictMode( ): boolean { if (rawHeaders) { const header = rawHeaders["x-aimock-strict"]; - const val = typeof header === "string" ? header : Array.isArray(header) ? header[0] : undefined; - if (val === "true" || val === "1") return true; - if (val === "false" || val === "0") return false; + const rawVal = + typeof header === "string" ? header : Array.isArray(header) ? header[0] : undefined; + if (typeof rawVal === "string") { + const val = rawVal.trim().toLowerCase(); + if (val === "true" || val === "1") return true; + if (val === "false" || val === "0") return false; + } } return serverDefault ?? false; }