diff options
Diffstat (limited to 'cli/tests/045_proxy_test.ts')
-rw-r--r-- | cli/tests/045_proxy_test.ts | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/cli/tests/045_proxy_test.ts b/cli/tests/045_proxy_test.ts new file mode 100644 index 000000000..51a17f7a5 --- /dev/null +++ b/cli/tests/045_proxy_test.ts @@ -0,0 +1,75 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +import { + serve, + ServerRequest +} from "../../js/deps/https/deno.land/std/http/server.ts"; +import { assertEquals } from "../../js/deps/https/deno.land/std/testing/asserts.ts"; + +const addr = Deno.args[1] || "127.0.0.1:4555"; + +async function proxyServer(): Promise<void> { + const server = serve(addr); + + console.log(`Proxy server listening on http://${addr}/`); + for await (const req of server) { + proxyRequest(req); + } +} + +async function proxyRequest(req: ServerRequest): Promise<void> { + console.log(`Proxy request to: ${req.url}`); + const resp = await fetch(req.url, { + method: req.method, + headers: req.headers + }); + req.respond(resp); +} + +async function testFetch(): Promise<void> { + const c = Deno.run({ + args: [ + Deno.execPath(), + "--no-prompt", + "--reload", + "--allow-net", + "045_proxy_client.ts" + ], + stdout: "piped", + env: { + HTTP_PROXY: `http://${addr}` + } + }); + + const status = await c.status(); + assertEquals(status.code, 0); + c.close(); +} + +async function testModuleDownload(): Promise<void> { + const http = Deno.run({ + args: [ + Deno.execPath(), + "--no-prompt", + "--reload", + "fetch", + "http://deno.land/welcome.ts" + ], + stdout: "piped", + env: { + HTTP_PROXY: `http://${addr}` + } + }); + + const httpStatus = await http.status(); + assertEquals(httpStatus.code, 0); + http.close(); +} + +async function main(): Promise<void> { + proxyServer(); + await testFetch(); + await testModuleDownload(); + Deno.exit(0); +} + +main(); |