diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-10-10 05:31:23 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-10 05:31:23 -0400 |
commit | e7562eed8c816cd0d97aab6b818d7c8453dbaa2b (patch) | |
tree | c5a9f536e79d2c8d2d02897511a9138acaf35394 /std/http/file_server_test.ts | |
parent | 3882c9d19a641e0c919f1350d87c6d7ee280cf78 (diff) | |
parent | 93f7f00c956c14620ef031626f124b57397ca867 (diff) |
Merge deno_std in main repo (#3091)
The history of deno_std is persevered but rewritten to update links to issues and PRs
Fixes denoland/deno_std#603
Diffstat (limited to 'std/http/file_server_test.ts')
m--------- | std | 0 | ||||
-rw-r--r-- | std/http/file_server_test.ts | 88 |
2 files changed, 88 insertions, 0 deletions
diff --git a/std b/std deleted file mode 160000 -Subproject 43aafbf33285753e7b42230f0eb7969b300f71c diff --git a/std/http/file_server_test.ts b/std/http/file_server_test.ts new file mode 100644 index 000000000..958c66529 --- /dev/null +++ b/std/http/file_server_test.ts @@ -0,0 +1,88 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +import { test } from "../testing/mod.ts"; +import { assert, assertEquals } from "../testing/asserts.ts"; +import { BufReader } from "../io/bufio.ts"; +import { TextProtoReader } from "../textproto/mod.ts"; + +let fileServer: Deno.Process; + +async function startFileServer(): Promise<void> { + fileServer = Deno.run({ + args: [ + Deno.execPath(), + "run", + "--allow-read", + "--allow-net", + "http/file_server.ts", + ".", + "--cors" + ], + stdout: "piped" + }); + // Once fileServer is ready it will write to its stdout. + const r = new TextProtoReader(new BufReader(fileServer.stdout!)); + const s = await r.readLine(); + assert(s !== Deno.EOF && s.includes("server listening")); +} + +function killFileServer(): void { + fileServer.close(); + fileServer.stdout!.close(); +} + +/* TODO(ry) re-enable tests +test(async function serveFile(): Promise<void> { + await startFileServer(); + try { + const res = await fetch("http://localhost:4500/azure-pipelines.yml"); + assert(res.headers.has("access-control-allow-origin")); + assert(res.headers.has("access-control-allow-headers")); + assertEquals(res.headers.get("content-type"), "text/yaml; charset=utf-8"); + const downloadedFile = await res.text(); + const localFile = new TextDecoder().decode( + await Deno.readFile("./azure-pipelines.yml") + ); + assertEquals(downloadedFile, localFile); + } finally { + killFileServer(); + } +}); + +test(async function serveDirectory(): Promise<void> { + await startFileServer(); + try { + const res = await fetch("http://localhost:4500/"); + assert(res.headers.has("access-control-allow-origin")); + assert(res.headers.has("access-control-allow-headers")); + const page = await res.text(); + assert(page.includes("azure-pipelines.yml")); + + // `Deno.FileInfo` is not completely compatible with Windows yet + // TODO: `mode` should work correctly in the future. + // Correct this test case accordingly. + Deno.build.os !== "win" && + assert(/<td class="mode">\([a-zA-Z-]{10}\)<\/td>/.test(page)); + Deno.build.os === "win" && + assert(/<td class="mode">\(unknown mode\)<\/td>/.test(page)); + assert( + page.includes( + `<td><a href="/azure-pipelines.yml">azure-pipelines.yml</a></td>` + ) + ); + } finally { + killFileServer(); + } +}); +*/ + +test(async function serveFallback(): Promise<void> { + await startFileServer(); + try { + const res = await fetch("http://localhost:4500/badfile.txt"); + assert(res.headers.has("access-control-allow-origin")); + assert(res.headers.has("access-control-allow-headers")); + assertEquals(res.status, 404); + } finally { + killFileServer(); + } +}); |