diff options
author | Sven-Hendrik Haase <svenstaro@gmail.com> | 2024-02-01 03:45:13 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-01 03:45:13 +0000 |
commit | 85bbe590aa331b3157462798544afab65fa888fc (patch) | |
tree | 20e9031117381c967cb8e8db31553c607699aed4 /tests/archive.rs | |
parent | Merge pull request #1331 from cyqsimon/error-refactor (diff) | |
parent | tweak doc comment (diff) | |
download | miniserve-85bbe590aa331b3157462798544afab65fa888fc.tar.gz miniserve-85bbe590aa331b3157462798544afab65fa888fc.zip |
Merge pull request #1329 from dyc3/disable-indexing
add `--disable-indexing` cli flag to completely disable directory indexing
Diffstat (limited to 'tests/archive.rs')
-rw-r--r-- | tests/archive.rs | 28 |
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(()) +} |