From 967c236fa5fb1e87e1b5ee788fe77d3a07361da1 Mon Sep 17 00:00:00 2001 From: Rory Malcolm Date: Mon, 28 Oct 2019 16:23:39 +0000 Subject: Add CustomInspect for Headers (#3130) Worth noting due to implementation of the Headers class the contents of headersMap have lowercase keys, although this matches the specification as header keys are case agnostic it does seem to not match behaviour of other implementations in other languages I have seen, would require some rewriting of Headers.ts --- cli/js/headers_test.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'cli/js/headers_test.ts') diff --git a/cli/js/headers_test.ts b/cli/js/headers_test.ts index f08283c51..a01abb6a6 100644 --- a/cli/js/headers_test.ts +++ b/cli/js/headers_test.ts @@ -1,5 +1,9 @@ // Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. import { test, assert, assertEquals } from "./test_util.ts"; +const { + stringifyArgs + // eslint-disable-next-line @typescript-eslint/no-explicit-any +} = Deno as any; // Logic heavily copied from web-platform-tests, make // sure pass mostly header basic test @@ -329,3 +333,25 @@ test(function toStringShouldBeWebCompatibility(): void { const headers = new Headers(); assertEquals(headers.toString(), "[object Headers]"); }); + +function stringify(...args: unknown[]): string { + return stringifyArgs(args).replace(/\n$/, ""); +} + +test(function customInspectReturnsCorrectHeadersFormat(): void { + const blankHeaders = new Headers(); + assertEquals(stringify(blankHeaders), "Headers {}"); + const singleHeader = new Headers([["Content-Type", "application/json"]]); + assertEquals( + stringify(singleHeader), + "Headers { content-type: application/json }" + ); + const multiParamHeader = new Headers([ + ["Content-Type", "application/json"], + ["Content-Length", "1337"] + ]); + assertEquals( + stringify(multiParamHeader), + "Headers { content-type: application/json, content-length: 1337 }" + ); +}); -- cgit v1.2.3