0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-03 09:31:22 -05:00

test: add HTTP_PROXY tests (#2977)

This commit is contained in:
Bartek Iwańczuk 2019-09-25 00:52:01 +02:00 committed by Ryan Dahl
parent a497f87b59
commit 112ce0df1f
6 changed files with 99 additions and 5 deletions

View file

@ -62,7 +62,9 @@ pub struct DenoFlags {
static ENV_VARIABLES_HELP: &str = "ENVIRONMENT VARIABLES:
DENO_DIR Set deno's base directory
NO_COLOR Set to disable color";
NO_COLOR Set to disable color
HTTP_PROXY Set proxy address for HTTP requests (module downloads, fetch)
HTTPS_PROXY Set proxy address for HTTPS requests (module downloads, fetch)";
fn add_run_args<'a, 'b>(app: App<'a, 'b>) -> App<'a, 'b> {
app

View file

@ -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();

View file

@ -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();

View file

@ -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

View file

@ -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",

View file

@ -712,6 +712,8 @@ SUBCOMMANDS:
ENVIRONMENT VARIABLES:
DENO_DIR Set deno's base directory
NO_COLOR Set to disable color
HTTP_PROXY Set proxy address for HTTP requests (module downloads, fetch)
HTTPS_PROXY Set proxy address for HTTPS requests (module downloads, fetch)
```
### Environmental variables
@ -876,12 +878,12 @@ $ deno install awesome_cli https://example.com/awesome/cli.ts
## Proxies
Deno supports proxies.
Deno supports proxies for module downloads and `fetch` API.
`HTTP_PROXY` and `HTTPS_PROXY` environmental variables are used to configure
them.
Proxy configuration is read from environmental variables: `HTTP_PROXY` and
`HTTPS_PROXY`.
For Windows if environmental variables are not found Deno will fall back to
In case of Windows if environmental variables are not found Deno falls back to
reading proxies from registry.
## Import maps