mirror of
https://github.com/denoland/deno.git
synced 2024-12-28 01:59:06 -05:00
4d07ed0efa
Since "Deno.spawn()", "Deno.spawnSync()" and "Deno.spawnChild" are getting deprecated, this commits rewrites all tests and utilities to use "Deno.Command" API instead.
121 lines
2.9 KiB
TypeScript
121 lines
2.9 KiB
TypeScript
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
|
|
import { Server } from "../../../../test_util/std/http/server.ts";
|
|
import { assertEquals } from "../../../../test_util/std/testing/asserts.ts";
|
|
|
|
const addr = Deno.args[1] || "localhost:4555";
|
|
|
|
async function proxyServer() {
|
|
const [hostname, p] = addr.split(":");
|
|
const port = parseInt(p ?? 4555);
|
|
const server = new Server({ hostname, port, handler });
|
|
console.log(`Proxy server listening on http://${addr}/`);
|
|
await server.listenAndServe();
|
|
}
|
|
|
|
async function handler(req: Request): Promise<Response> {
|
|
console.log(`Proxy request to: ${req.url}`);
|
|
const headers = new Headers(req.headers);
|
|
const proxyAuthorization = headers.get("proxy-authorization");
|
|
if (proxyAuthorization) {
|
|
console.log(`proxy-authorization: ${proxyAuthorization}`);
|
|
headers.delete("proxy-authorization");
|
|
}
|
|
const resp = await fetch(req.url, {
|
|
method: req.method,
|
|
headers: headers,
|
|
});
|
|
return new Response(new Uint8Array(await resp.arrayBuffer()), {
|
|
status: resp.status,
|
|
headers: resp.headers,
|
|
});
|
|
}
|
|
|
|
async function testFetch() {
|
|
const { code } = await new Deno.Command(Deno.execPath(), {
|
|
args: [
|
|
"run",
|
|
"--quiet",
|
|
"--reload",
|
|
"--allow-net",
|
|
"run/045_proxy_client.ts",
|
|
],
|
|
env: {
|
|
HTTP_PROXY: `http://${addr}`,
|
|
},
|
|
}).output();
|
|
|
|
assertEquals(code, 0);
|
|
}
|
|
|
|
async function testModuleDownload() {
|
|
const { code } = await new Deno.Command(Deno.execPath(), {
|
|
args: [
|
|
"cache",
|
|
"--reload",
|
|
"--quiet",
|
|
"http://localhost:4545/run/045_mod.ts",
|
|
],
|
|
env: {
|
|
HTTP_PROXY: `http://${addr}`,
|
|
},
|
|
}).output();
|
|
|
|
assertEquals(code, 0);
|
|
}
|
|
|
|
async function testFetchNoProxy() {
|
|
const { code } = await new Deno.Command(Deno.execPath(), {
|
|
args: [
|
|
"run",
|
|
"--quiet",
|
|
"--reload",
|
|
"--allow-net",
|
|
"run/045_proxy_client.ts",
|
|
],
|
|
env: {
|
|
HTTP_PROXY: "http://not.exising.proxy.server",
|
|
NO_PROXY: "localhost",
|
|
},
|
|
}).output();
|
|
|
|
assertEquals(code, 0);
|
|
}
|
|
|
|
async function testModuleDownloadNoProxy() {
|
|
const { code } = await new Deno.Command(Deno.execPath(), {
|
|
args: [
|
|
"cache",
|
|
"--reload",
|
|
"--quiet",
|
|
"http://localhost:4545/run/045_mod.ts",
|
|
],
|
|
env: {
|
|
HTTP_PROXY: "http://not.exising.proxy.server",
|
|
NO_PROXY: "localhost",
|
|
},
|
|
}).output();
|
|
|
|
assertEquals(code, 0);
|
|
}
|
|
|
|
async function testFetchProgrammaticProxy() {
|
|
const { code } = await new Deno.Command(Deno.execPath(), {
|
|
args: [
|
|
"run",
|
|
"--quiet",
|
|
"--reload",
|
|
"--allow-net=localhost:4545,localhost:4555",
|
|
"--unstable",
|
|
"run/045_programmatic_proxy_client.ts",
|
|
],
|
|
}).output();
|
|
assertEquals(code, 0);
|
|
}
|
|
|
|
proxyServer();
|
|
await testFetch();
|
|
await testModuleDownload();
|
|
await testFetchNoProxy();
|
|
await testModuleDownloadNoProxy();
|
|
await testFetchProgrammaticProxy();
|
|
Deno.exit(0);
|