From da97e91f2eb02ace7f3e6cb3522d4bd55aa45caf Mon Sep 17 00:00:00 2001 From: Dean Li Date: Mon, 22 Feb 2021 13:13:53 +0800 Subject: Add test for custom header --- tests/header.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/header.rs (limited to 'tests/header.rs') diff --git a/tests/header.rs b/tests/header.rs new file mode 100644 index 0000000..a0734e5 --- /dev/null +++ b/tests/header.rs @@ -0,0 +1,33 @@ +mod fixtures; + +use assert_cmd::prelude::*; +use assert_fs::fixture::TempDir; +use fixtures::{port, tmpdir, Error}; +use rstest::rstest; +use std::process::{Command, Stdio}; +use std::thread::sleep; +use std::time::Duration; + +#[rstest] +fn custom_header_set(tmpdir: TempDir, port: u16) -> Result<(), Error> { + let header_name = "x-info"; + let header_value = "123"; + let header_str = format!("{}: {}", header_name, header_value); + + let _ = Command::cargo_bin("miniserve")? + .arg(tmpdir.path()) + .arg("-p") + .arg(port.to_string()) + .arg("--header") + .arg(header_str) + .stdout(Stdio::null()) + .spawn()?; + + sleep(Duration::from_secs(1)); + + let resp = reqwest::blocking::get(format!("http://localhost:{}", port).as_str())?; + + assert_eq!(resp.headers().get(header_name).unwrap(), header_value); + + Ok(()) +} -- cgit v1.2.3 From 956ce204b4bda191c441fe5c4d385baa92c82b3e Mon Sep 17 00:00:00 2001 From: Dean Li Date: Mon, 22 Feb 2021 14:11:18 +0800 Subject: Multiple headers support for custom headers --- tests/header.rs | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'tests/header.rs') diff --git a/tests/header.rs b/tests/header.rs index a0734e5..187730f 100644 --- a/tests/header.rs +++ b/tests/header.rs @@ -8,18 +8,17 @@ use std::process::{Command, Stdio}; use std::thread::sleep; use std::time::Duration; -#[rstest] -fn custom_header_set(tmpdir: TempDir, port: u16) -> Result<(), Error> { - let header_name = "x-info"; - let header_value = "123"; - let header_str = format!("{}: {}", header_name, header_value); - - let _ = Command::cargo_bin("miniserve")? +#[rstest(header, + case("x-info: 123".to_string()), + case("x-info1: 123\r\nx-info2: 345".to_string()) +)] +fn custom_header_set(tmpdir: TempDir, port: u16, header: String) -> Result<(), Error> { + let mut child = Command::cargo_bin("miniserve")? .arg(tmpdir.path()) .arg("-p") .arg(port.to_string()) .arg("--header") - .arg(header_str) + .arg(header.clone()) .stdout(Stdio::null()) .spawn()?; @@ -27,7 +26,18 @@ fn custom_header_set(tmpdir: TempDir, port: u16) -> Result<(), Error> { let resp = reqwest::blocking::get(format!("http://localhost:{}", port).as_str())?; - assert_eq!(resp.headers().get(header_name).unwrap(), header_value); + let mut headers = [httparse::EMPTY_HEADER; 4]; + let mut header = header.clone(); + header.push('\n'); + httparse::parse_headers(header.as_bytes(), &mut headers)?; + + for h in headers.iter() { + if h.name != httparse::EMPTY_HEADER.name { + assert_eq!(resp.headers().get(h.name).unwrap(), h.value); + } + } + + child.kill()?; Ok(()) } -- cgit v1.2.3