mirror of
https://github.com/denoland/deno.git
synced 2024-12-12 10:37:52 -05:00
b2bacd969c
Originally landed in
f6fd6619e7
.
Reverted in https://github.com/denoland/deno/pull/24574.
This reland contains a fix that sends "Accept: */*" header for calls made
from "FileFetcher". Absence of this header made downloading source code
from JSR broken. This is tested by ensuring this header is present in the
test server that servers JSR packages.
---------
Co-authored-by: Sean McArthur <sean@seanmonstar.com>
93 lines
2.2 KiB
Rust
93 lines
2.2 KiB
Rust
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
|
|
use std::io::Read;
|
|
|
|
use pretty_assertions::assert_eq;
|
|
use regex::Regex;
|
|
use test_util as util;
|
|
|
|
#[tokio::test]
|
|
async fn deno_serve_port_0() {
|
|
let mut child = util::deno_cmd()
|
|
.current_dir(util::testdata_path())
|
|
.arg("serve")
|
|
.arg("--port")
|
|
.arg("0")
|
|
.arg("./serve/port_0.ts")
|
|
.stdout_piped()
|
|
.spawn()
|
|
.unwrap();
|
|
let stdout = child.stdout.as_mut().unwrap();
|
|
let mut buffer = [0; 52];
|
|
let _read = stdout.read(&mut buffer).unwrap();
|
|
let msg = std::str::from_utf8(&buffer).unwrap();
|
|
let port_regex = Regex::new(r"(\d+)").unwrap();
|
|
let port = port_regex.find(msg).unwrap().as_str();
|
|
|
|
let cert = reqwest::Certificate::from_pem(include_bytes!(
|
|
"../testdata/tls/RootCA.crt"
|
|
))
|
|
.unwrap();
|
|
|
|
let client = reqwest::Client::builder()
|
|
.add_root_certificate(cert)
|
|
.http2_prior_knowledge()
|
|
.build()
|
|
.unwrap();
|
|
|
|
let res = client
|
|
.get(&format!("http://127.0.0.1:{port}"))
|
|
.send()
|
|
.await
|
|
.unwrap();
|
|
assert_eq!(200, res.status());
|
|
|
|
let body = res.text().await.unwrap();
|
|
assert_eq!(body, "deno serve --port 0 works!");
|
|
|
|
child.kill().unwrap();
|
|
child.wait().unwrap();
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn deno_serve_no_args() {
|
|
let mut child = util::deno_cmd()
|
|
.current_dir(util::testdata_path())
|
|
.arg("serve")
|
|
.arg("--port")
|
|
.arg("0")
|
|
.arg("./serve/no_args.ts")
|
|
.stdout_piped()
|
|
.spawn()
|
|
.unwrap();
|
|
let stdout = child.stdout.as_mut().unwrap();
|
|
let mut buffer = [0; 52];
|
|
let _read = stdout.read(&mut buffer).unwrap();
|
|
let msg = std::str::from_utf8(&buffer).unwrap();
|
|
let port_regex = Regex::new(r"(\d+)").unwrap();
|
|
let port = port_regex.find(msg).unwrap().as_str();
|
|
|
|
let cert = reqwest::Certificate::from_pem(include_bytes!(
|
|
"../testdata/tls/RootCA.crt"
|
|
))
|
|
.unwrap();
|
|
|
|
let client = reqwest::Client::builder()
|
|
.add_root_certificate(cert)
|
|
.http2_prior_knowledge()
|
|
.build()
|
|
.unwrap();
|
|
|
|
let res = client
|
|
.get(&format!("http://127.0.0.1:{port}"))
|
|
.send()
|
|
.await
|
|
.unwrap();
|
|
assert_eq!(200, res.status());
|
|
|
|
let body = res.text().await.unwrap();
|
|
assert_eq!(body, "deno serve with no args in fetch() works!");
|
|
|
|
child.kill().unwrap();
|
|
child.wait().unwrap();
|
|
}
|