summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/045_proxy_client.ts7
-rw-r--r--cli/tests/045_proxy_test.ts75
-rw-r--r--cli/tests/045_proxy_test.ts.out3
-rw-r--r--cli/tests/integration_tests.rs5
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",