aboutsummaryrefslogtreecommitdiffstats
path: root/tests/archive.rs
diff options
context:
space:
mode:
authorCarson McManus <carson.mcmanus1@gmail.com>2024-01-30 14:35:41 +0000
committerCarson McManus <carson.mcmanus1@gmail.com>2024-01-30 14:35:41 +0000
commita8704314bac7bffa1f7b460b09af9b5ffc97f63a (patch)
treebbc85bb4e2ffacba71aef164caaecba17068ff0d /tests/archive.rs
parentadd short version of `--disable-indexing` cli arg (diff)
downloadminiserve-a8704314bac7bffa1f7b460b09af9b5ffc97f63a.tar.gz
miniserve-a8704314bac7bffa1f7b460b09af9b5ffc97f63a.zip
add test for disabled archives
Diffstat (limited to '')
-rw-r--r--tests/archive.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/archive.rs b/tests/archive.rs
index b8def22..e6d0263 100644
--- a/tests/archive.rs
+++ b/tests/archive.rs
@@ -56,3 +56,31 @@ fn test_tar_archives(#[with(&["-g"])] server: TestServer) -> Result<(), Error> {
Ok(())
}
+
+#[rstest]
+#[case(server(&["--disable-indexing", "--enable-tar-gz", "--enable-tar", "--enable-zip"]))]
+fn archives_are_disabled_when_indexing_disabled(#[case] server: TestServer) -> Result<(), Error> {
+ // Ensure the links to the archives are not present
+ let body = reqwest::blocking::get(server.url())?;
+ 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
+ // We assert for not found to make sure we aren't leaking information about directories that do exist.
+ assert_eq!(
+ reqwest::blocking::get(server.url().join("?download=tar_gz")?)?.status(),
+ StatusCode::NOT_FOUND
+ );
+ assert_eq!(
+ reqwest::blocking::get(server.url().join("?download=tar")?)?.status(),
+ StatusCode::NOT_FOUND
+ );
+ assert_eq!(
+ reqwest::blocking::get(server.url().join("?download=zip")?)?.status(),
+ StatusCode::NOT_FOUND
+ );
+
+ Ok(())
+}