diff options
author | Damian <damian@autistici.org> | 2019-12-17 20:00:04 +0000 |
---|---|---|
committer | Damian <damian@autistici.org> | 2020-03-02 06:07:20 +0000 |
commit | d0be1f2ea97342ef577ebe879971776422b08038 (patch) | |
tree | 8af7ecae6095619957e719b763407b9bd8bd3501 /tests | |
parent | Merge pull request #254 from svenstaro/dependabot/cargo/rstest-0.5.3 (diff) | |
download | miniserve-d0be1f2ea97342ef577ebe879971776422b08038.tar.gz miniserve-d0be1f2ea97342ef577ebe879971776422b08038.zip |
Added option to disable archives
Diffstat (limited to 'tests')
-rw-r--r-- | tests/archive.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/archive.rs b/tests/archive.rs new file mode 100644 index 0000000..c692d90 --- /dev/null +++ b/tests/archive.rs @@ -0,0 +1,46 @@ +mod fixtures; + +use assert_cmd::prelude::*; +use assert_fs::fixture::TempDir; +use fixtures::{port, tmpdir, Error}; +use rstest::rstest; +use select::document::Document; +use select::predicate::Text; +use std::process::{Command, Stdio}; +use std::thread::sleep; +use std::time::Duration; +use reqwest::StatusCode; + +#[rstest] +fn archives_are_disabled(tmpdir: TempDir, port: u16) -> Result<(), Error> { + let mut child = Command::cargo_bin("miniserve")? + .arg(tmpdir.path()) + .arg("-p") + .arg(port.to_string()) + .arg("-r") + .stdout(Stdio::null()) + .spawn()?; + + sleep(Duration::from_secs(1)); + + // Ensure the links to the archives are not present + let body = reqwest::get(format!("http://localhost:{}", port).as_str())?.error_for_status()?; + let parsed = Document::from_read(body)?; + assert!(parsed.find(Text).all(|x| x.text() != "Download .tar.gz" && x.text() != "Download .tar")); + + // Try to download anyway, ensure it's forbidden + assert_eq!( + reqwest::get( + format!("http://localhost:{}/?download=tar_gz", port).as_str())? + .status(), + StatusCode::FORBIDDEN); + assert_eq!( + reqwest::get( + format!("http://localhost:{}/?download=tar", port).as_str())? + .status(), + StatusCode::FORBIDDEN); + + child.kill()?; + + Ok(()) +}
\ No newline at end of file |