diff options
Diffstat (limited to 'tests/serve_request.rs')
-rw-r--r-- | tests/serve_request.rs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/serve_request.rs b/tests/serve_request.rs new file mode 100644 index 0000000..ef346b2 --- /dev/null +++ b/tests/serve_request.rs @@ -0,0 +1,53 @@ +mod fixtures; + +use assert_cmd::prelude::*; +use assert_fs::fixture::TempDir; +use fixtures::{port, tmpdir, Error, FILES}; +use rstest::rstest; +use select::document::Document; +use select::predicate::Text; +use std::process::{Command, Stdio}; +use std::thread::sleep; +use std::time::Duration; + +#[rstest] +fn serves_requests_with_no_options(tmpdir: TempDir) -> Result<(), Error> { + let mut child = Command::cargo_bin("miniserve")? + .arg(tmpdir.path()) + .stdout(Stdio::null()) + .spawn()?; + + sleep(Duration::from_secs(1)); + + let body = reqwest::get("http://localhost:8080")?.error_for_status()?; + let parsed = Document::from_read(body)?; + for &file in FILES { + assert!(parsed.find(Text).any(|x| x.text() == file)); + } + + child.kill()?; + + Ok(()) +} + +#[rstest] +fn serves_requests_with_non_default_port(tmpdir: TempDir, port: u16) -> Result<(), Error> { + let mut child = Command::cargo_bin("miniserve")? + .arg(tmpdir.path()) + .arg("-p") + .arg(port.to_string()) + .stdout(Stdio::null()) + .spawn()?; + + sleep(Duration::from_secs(1)); + + let body = reqwest::get(format!("http://localhost:{}", port).as_str())?.error_for_status()?; + let parsed = Document::from_read(body)?; + for &file in FILES { + assert!(parsed.find(Text).any(|x| x.text() == file)); + } + + child.kill()?; + + Ok(()) +} |