aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2021-04-18 03:42:14 +0000
committerGitHub <noreply@github.com>2021-04-18 03:42:14 +0000
commitf645c2b7f74bbebf4051fd19e568c6092822c118 (patch)
tree46ff56811ce1af9914a3743e09c814432f3dffaf /tests
parentAdd CHANGELOG entry for wrapping breadcrumbs at any char (diff)
parentChange naming of uncompressed/compressed tarballs (diff)
downloadminiserve-f645c2b7f74bbebf4051fd19e568c6092822c118.tar.gz
miniserve-f645c2b7f74bbebf4051fd19e568c6092822c118.zip
Merge pull request #492 from deantvv/tar-and-tar-archive
Separate tar archive and tar flags
Diffstat (limited to 'tests')
-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(())
+}