From e586d0c8b813c276cd5a1ba30582022b3c2be2eb Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Tue, 7 Apr 2020 11:34:18 +0100 Subject: feat(std/http/server): Respond with 400 on request parse failure (#4614) --- std/http/server_test.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'std/http/server_test.ts') diff --git a/std/http/server_test.ts b/std/http/server_test.ts index e70c241c7..12849d6e7 100644 --- a/std/http/server_test.ts +++ b/std/http/server_test.ts @@ -9,6 +9,7 @@ import { TextProtoReader } from "../textproto/mod.ts"; import { assert, assertEquals, + assertMatch, assertNotEOF, assertStrContains, assertThrowsAsync, @@ -519,3 +520,27 @@ test({ await p; }, }); + +test({ + name: "[http] request error gets 400 response", + async fn(): Promise { + const server = serve(":8124"); + const entry = server[Symbol.asyncIterator]().next(); + const conn = await Deno.connect({ + hostname: "127.0.0.1", + port: 8124, + }); + await Deno.writeAll( + conn, + encode("GET / HTTP/1.1\r\nmalformedHeader\r\n\r\n\r\n\r\n") + ); + const responseString = decode(await Deno.readAll(conn)); + assertMatch( + responseString, + /^HTTP\/1\.1 400 Bad Request\r\ncontent-length: \d+\r\n\r\n.*\r\n\r\n$/ms + ); + conn.close(); + server.close(); + assert((await entry).done); + }, +}); -- cgit v1.2.3