aboutsummaryrefslogtreecommitdiffstats
path: root/tests/archive.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/archive.rs')
-rw-r--r--tests/archive.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/archive.rs b/tests/archive.rs
index c170bc3..6a7f8bf 100644
--- a/tests/archive.rs
+++ b/tests/archive.rs
@@ -51,3 +51,44 @@ fn archives_are_disabled(tmpdir: TempDir, port: u16) -> Result<(), Error> {
Ok(())
}
+
+#[rstest]
+fn test_tar_archives(tmpdir: TempDir, port: u16) -> Result<(), Error> {
+ let mut child = Command::cargo_bin("miniserve")?
+ .arg(tmpdir.path())
+ .arg("-p")
+ .arg(port.to_string())
+ .arg("-g")
+ .stdout(Stdio::null())
+ .spawn()?;
+
+ sleep(Duration::from_secs(1));
+
+ // Ensure the links to the tar archive exists and tar not exists
+ let body = reqwest::blocking::get(format!("http://localhost:{}", port).as_str())?
+ .error_for_status()?;
+ let parsed = Document::from_read(body)?;
+ assert!(parsed.find(Text).any(|x| x.text() == "Download .tar.gz"));
+ assert!(parsed.find(Text).all(|x| x.text() != "Download .tar"));
+
+ // Try to download, only tar_gz should works
+ assert_eq!(
+ reqwest::blocking::get(format!("http://localhost:{}/?download=tar_gz", port).as_str())?
+ .status(),
+ StatusCode::OK
+ );
+ assert_eq!(
+ reqwest::blocking::get(format!("http://localhost:{}/?download=tar", port).as_str())?
+ .status(),
+ StatusCode::FORBIDDEN
+ );
+ assert_eq!(
+ reqwest::blocking::get(format!("http://localhost:{}/?download=zip", port).as_str())?
+ .status(),
+ StatusCode::FORBIDDEN
+ );
+
+ child.kill()?;
+
+ Ok(())
+}