diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/045_proxy_client.ts | 7 | ||||
-rw-r--r-- | cli/tests/045_proxy_test.ts | 75 | ||||
-rw-r--r-- | cli/tests/045_proxy_test.ts.out | 3 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 5 |
4 files changed, 90 insertions, 0 deletions
diff --git a/cli/tests/045_proxy_client.ts b/cli/tests/045_proxy_client.ts new file mode 100644 index 000000000..4fb3db83b --- /dev/null +++ b/cli/tests/045_proxy_client.ts @@ -0,0 +1,7 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +async function main(): Promise<void> { + const res = await fetch("http://deno.land/welcome.ts"); + console.log(`Response http: ${await res.text()}`); +} + +main(); 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(); diff --git a/cli/tests/045_proxy_test.ts.out b/cli/tests/045_proxy_test.ts.out new file mode 100644 index 000000000..7b898bcf1 --- /dev/null +++ b/cli/tests/045_proxy_test.ts.out @@ -0,0 +1,3 @@ +Proxy server listening on [WILDCARD] +Proxy request to: http://deno.land/welcome.ts +Proxy request to: http://deno.land/welcome.ts diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index fd5efca18..4bb7fbe6e 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -317,6 +317,11 @@ itest!(_044_bad_resource { exit_code: 1, }); +itest!(_045_proxy { + args: "run --allow-net --allow-env --allow-run --reload 045_proxy_test.ts", + output: "045_proxy_test.ts.out", +}); + itest!(async_error { exit_code: 1, args: "run --reload async_error.ts", |