提交 112ce0df 编写于 作者: B Bartek Iwańczuk 提交者: Ryan Dahl

test: add HTTP_PROXY tests (#2977)

上级 a497f87b
......@@ -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
......
// 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();
// 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();
Proxy server listening on [WILDCARD]
Proxy request to: http://deno.land/welcome.ts
Proxy request to: http://deno.land/welcome.ts
......@@ -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",
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册