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:
parent
a497f87b59
commit
112ce0df1f
6 changed files with 99 additions and 5 deletions
|
@ -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
|
||||
|
|
7
cli/tests/045_proxy_client.ts
Normal file
7
cli/tests/045_proxy_client.ts
Normal 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();
|
75
cli/tests/045_proxy_test.ts
Normal file
75
cli/tests/045_proxy_test.ts
Normal 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();
|
3
cli/tests/045_proxy_test.ts.out
Normal file
3
cli/tests/045_proxy_test.ts.out
Normal 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
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue