summaryrefslogtreecommitdiff
path: root/cli/tests/unit
diff options
context:
space:
mode:
authorDayan C. Galiazzi <galiazzi.dayan@gmail.com>2021-08-24 19:55:32 -0300
committerGitHub <noreply@github.com>2021-08-25 00:55:32 +0200
commit873cce27b8f1b7900ea08c85b2d563ddd478a38a (patch)
tree017b3aa793d22d1c71a9a655baff1ea998eed224 /cli/tests/unit
parenta3fd4bb998d875e130ad0db40d9392192468bba1 (diff)
fix(ext/http): websocket upgrade header check (#11830)
Diffstat (limited to 'cli/tests/unit')
-rw-r--r--cli/tests/unit/http_test.ts46
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 });