diff options
author | Dayan C. Galiazzi <galiazzi.dayan@gmail.com> | 2021-08-24 19:55:32 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-25 00:55:32 +0200 |
commit | 873cce27b8f1b7900ea08c85b2d563ddd478a38a (patch) | |
tree | 017b3aa793d22d1c71a9a655baff1ea998eed224 /cli/tests/unit | |
parent | a3fd4bb998d875e130ad0db40d9392192468bba1 (diff) |
fix(ext/http): websocket upgrade header check (#11830)
Diffstat (limited to 'cli/tests/unit')
-rw-r--r-- | cli/tests/unit/http_test.ts | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/cli/tests/unit/http_test.ts b/cli/tests/unit/http_test.ts index 0642a6d67..201ca1269 100644 --- a/cli/tests/unit/http_test.ts +++ b/cli/tests/unit/http_test.ts @@ -6,6 +6,7 @@ import { TextProtoReader } from "../../../test_util/std/textproto/mod.ts"; import { assert, assertEquals, + assertThrows, assertThrowsAsync, deferred, delay, @@ -705,6 +706,51 @@ unitTest(function httpUpgradeWebSocketMultipleConnectionOptions() { assertEquals(response.status, 101); }); +unitTest(function httpUpgradeWebSocketCaseInsensitiveUpgradeHeader() { + const request = new Request("https://deno.land/", { + headers: { + connection: "upgrade", + upgrade: "WebSocket", + "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", + }, + }); + const { response } = Deno.upgradeWebSocket(request); + assertEquals(response.status, 101); +}); + +unitTest(function httpUpgradeWebSocketInvalidUpgradeHeader() { + assertThrows( + () => { + const request = new Request("https://deno.land/", { + headers: { + connection: "upgrade", + upgrade: "invalid", + "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", + }, + }); + Deno.upgradeWebSocket(request); + }, + TypeError, + "Invalid Header: 'upgrade' header must be 'websocket'", + ); +}); + +unitTest(function httpUpgradeWebSocketWithoutUpgradeHeader() { + assertThrows( + () => { + const request = new Request("https://deno.land/", { + headers: { + connection: "upgrade", + "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", + }, + }); + Deno.upgradeWebSocket(request); + }, + TypeError, + "Invalid Header: 'upgrade' header must be 'websocket'", + ); +}); + unitTest({ perms: { net: true } }, async function httpCookieConcatenation() { const promise = (async () => { const listener = Deno.listen({ port: 4501 }); |