summaryrefslogtreecommitdiff
path: root/std/http/server_test.ts
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2020-04-07 11:34:18 +0100
committerGitHub <noreply@github.com>2020-04-07 12:34:18 +0200
commite586d0c8b813c276cd5a1ba30582022b3c2be2eb (patch)
tree1a084ff284f3e46b7b5b14f1d5fad2e467617e9a /std/http/server_test.ts
parentdd3a94933a82975b0827e1c15d2c0d37d8c9c013 (diff)
feat(std/http/server): Respond with 400 on request parse failure (#4614)
Diffstat (limited to 'std/http/server_test.ts')
-rw-r--r--std/http/server_test.ts25
1 files changed, 25 insertions, 0 deletions
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<void> {
+ 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);
+ },
+});