aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2025-03-07 02:44:55 +0000
committerSven-Hendrik Haase <svenstaro@gmail.com>2025-03-07 02:44:55 +0000
commit9f455e53a4a9311e0beadac6ab808c7e2ab0feca (patch)
treebbd03aaa845509eea9d9610a0660d5cf641749e5 /tests
parentModernize actix-web middleware usage (diff)
downloadminiserve-9f455e53a4a9311e0beadac6ab808c7e2ab0feca.tar.gz
miniserve-9f455e53a4a9311e0beadac6ab808c7e2ab0feca.zip
Reformat everything with Rust 2024 edition
Diffstat (limited to 'tests')
-rw-r--r--tests/archive.rs20
-rw-r--r--tests/auth.rs4
-rw-r--r--tests/auth_file.rs4
-rw-r--r--tests/bind.rs2
-rw-r--r--tests/cli.rs2
-rw-r--r--tests/create_directories.rs70
-rw-r--r--tests/header.rs2
-rw-r--r--tests/navigation.rs2
-rw-r--r--tests/qrcode.rs2
-rw-r--r--tests/raw.rs2
-rw-r--r--tests/readme.rs40
-rw-r--r--tests/serve_request.rs140
-rw-r--r--tests/tls.rs2
-rw-r--r--tests/upload_files.rs40
-rw-r--r--tests/webdav.rs8
15 files changed, 198 insertions, 142 deletions
diff --git a/tests/archive.rs b/tests/archive.rs
index a8b5ed2..2e96797 100644
--- a/tests/archive.rs
+++ b/tests/archive.rs
@@ -1,19 +1,21 @@
-use reqwest::StatusCode;
+use reqwest::StatusCode;
use rstest::rstest;
use select::{document::Document, predicate::Text};
mod fixtures;
-use crate::fixtures::{server, Error, TestServer};
+use crate::fixtures::{Error, TestServer, server};
#[rstest]
fn archives_are_disabled(server: TestServer) -> Result<(), Error> {
// Ensure the links to the archives are not present
let body = reqwest::blocking::get(server.url())?.error_for_status()?;
let parsed = Document::from_read(body)?;
- assert!(parsed
- .find(Text)
- .all(|x| x.text() != "Download .tar.gz" && x.text() != "Download .tar"));
+ 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!(
@@ -65,9 +67,11 @@ fn archives_are_disabled_when_indexing_disabled(
// 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"));
+ 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.
diff --git a/tests/auth.rs b/tests/auth.rs
index efa7827..5227b49 100644
--- a/tests/auth.rs
+++ b/tests/auth.rs
@@ -1,11 +1,11 @@
use pretty_assertions::assert_eq;
-use reqwest::{blocking::Client, StatusCode};
+use reqwest::{StatusCode, blocking::Client};
use rstest::rstest;
use select::{document::Document, predicate::Text};
mod fixtures;
-use crate::fixtures::{server, Error, FILES};
+use crate::fixtures::{Error, FILES, server};
#[rstest]
#[case("testuser:testpassword", "testuser", "testpassword")]
diff --git a/tests/auth_file.rs b/tests/auth_file.rs
index 5632d46..89f0dbe 100644
--- a/tests/auth_file.rs
+++ b/tests/auth_file.rs
@@ -1,10 +1,10 @@
-use reqwest::{blocking::Client, StatusCode};
+use reqwest::{StatusCode, blocking::Client};
use rstest::rstest;
use select::{document::Document, predicate::Text};
mod fixtures;
-use crate::fixtures::{server, Error, TestServer, FILES};
+use crate::fixtures::{Error, FILES, TestServer, server};
#[rstest]
#[case("joe", "123")]
diff --git a/tests/bind.rs b/tests/bind.rs
index e6c448a..e051308 100644
--- a/tests/bind.rs
+++ b/tests/bind.rs
@@ -8,7 +8,7 @@ use rstest::rstest;
mod fixtures;
-use crate::fixtures::{port, server, tmpdir, Error, TestServer};
+use crate::fixtures::{Error, TestServer, port, server, tmpdir};
#[rstest]
#[case(&["-i", "12.123.234.12"])]
diff --git a/tests/cli.rs b/tests/cli.rs
index 7c53698..1ed4398 100644
--- a/tests/cli.rs
+++ b/tests/cli.rs
@@ -1,7 +1,7 @@
use std::process::Command;
use assert_cmd::prelude::*;
-use clap::{crate_name, crate_version, ValueEnum};
+use clap::{ValueEnum, crate_name, crate_version};
use clap_complete::Shell;
mod fixtures;
diff --git a/tests/create_directories.rs b/tests/create_directories.rs
index bd9259f..d118fc6 100644
--- a/tests/create_directories.rs
+++ b/tests/create_directories.rs
@@ -1,4 +1,4 @@
-use reqwest::blocking::{multipart, Client};
+use reqwest::blocking::{Client, multipart};
use rstest::rstest;
use select::{
document::Document,
@@ -7,7 +7,7 @@ use select::{
mod fixtures;
-use crate::fixtures::{server, Error, TestServer, DIRECTORY_SYMLINK};
+use crate::fixtures::{DIRECTORY_SYMLINK, Error, TestServer, server};
/// This should work because the flags for uploading files and creating directories
/// are set, and the directory name and path are valid.
@@ -43,9 +43,11 @@ fn creating_directories_works(
// After creating, check whether the directory is now getting listed.
let body = reqwest::blocking::get(server.url())?;
let parsed = Document::from_read(body)?;
- assert!(parsed
- .find(Text)
- .any(|x| x.text() == test_directory_name.to_owned() + "/"));
+ assert!(
+ parsed
+ .find(Text)
+ .any(|x| x.text() == test_directory_name.to_owned() + "/")
+ );
Ok(())
}
@@ -72,19 +74,23 @@ fn creating_directories_is_prevented(server: TestServer) -> Result<(), Error> {
let client = Client::new();
// This should fail
- assert!(client
- .post(server.url().join("/upload?path=/")?)
- .multipart(form)
- .send()?
- .error_for_status()
- .is_err());
+ assert!(
+ client
+ .post(server.url().join("/upload?path=/")?)
+ .multipart(form)
+ .send()?
+ .error_for_status()
+ .is_err()
+ );
// After creating, check whether the directory is now getting listed (shouldn't).
let body = reqwest::blocking::get(server.url())?;
let parsed = Document::from_read(body)?;
- assert!(parsed
- .find(Text)
- .all(|x| x.text() != test_directory_name.to_owned() + "/"));
+ assert!(
+ parsed
+ .find(Text)
+ .all(|x| x.text() != test_directory_name.to_owned() + "/")
+ );
Ok(())
}
@@ -106,16 +112,18 @@ fn creating_directories_through_symlinks_is_prevented(
let form = form.part("mkdir", part);
// This should fail
- assert!(Client::new()
- .post(
- server
- .url()
- .join(format!("/upload?path=/{DIRECTORY_SYMLINK}").as_str())?
- )
- .multipart(form)
- .send()?
- .error_for_status()
- .is_err());
+ assert!(
+ Client::new()
+ .post(
+ server
+ .url()
+ .join(format!("/upload?path=/{DIRECTORY_SYMLINK}").as_str())?
+ )
+ .multipart(form)
+ .send()?
+ .error_for_status()
+ .is_err()
+ );
Ok(())
}
@@ -145,12 +153,14 @@ fn prevent_path_transversal_attacks(
let form = form.part("mkdir", part);
// This should fail
- assert!(Client::new()
- .post(server.url().join(&format!("/upload/path={path}"))?)
- .multipart(form)
- .send()?
- .error_for_status()
- .is_err());
+ assert!(
+ Client::new()
+ .post(server.url().join(&format!("/upload/path={path}"))?)
+ .multipart(form)
+ .send()?
+ .error_for_status()
+ .is_err()
+ );
Ok(())
}
diff --git a/tests/header.rs b/tests/header.rs
index 443f2ba..2f2c6e6 100644
--- a/tests/header.rs
+++ b/tests/header.rs
@@ -2,7 +2,7 @@ use rstest::rstest;
mod fixtures;
-use crate::fixtures::{server, Error};
+use crate::fixtures::{Error, server};
#[rstest]
#[case(vec!["x-info: 123".to_string()])]
diff --git a/tests/navigation.rs b/tests/navigation.rs
index 1bd8e81..a391468 100644
--- a/tests/navigation.rs
+++ b/tests/navigation.rs
@@ -7,7 +7,7 @@ use select::document::Document;
mod fixtures;
mod utils;
-use crate::fixtures::{server, Error, TestServer, DEEPLY_NESTED_FILE, DIRECTORIES};
+use crate::fixtures::{DEEPLY_NESTED_FILE, DIRECTORIES, Error, TestServer, server};
use crate::utils::{get_link_from_text, get_link_hrefs_with_prefix};
#[rstest]
diff --git a/tests/qrcode.rs b/tests/qrcode.rs
index 6951d7a..050948d 100644
--- a/tests/qrcode.rs
+++ b/tests/qrcode.rs
@@ -9,7 +9,7 @@ use select::{document::Document, predicate::Attr};
mod fixtures;
-use crate::fixtures::{port, server, tmpdir, Error, TestServer};
+use crate::fixtures::{Error, TestServer, port, server, tmpdir};
#[rstest]
fn webpage_hides_qrcode_when_disabled(server: TestServer) -> Result<(), Error> {
diff --git a/tests/raw.rs b/tests/raw.rs
index 051c3e3..be32fdf 100644
--- a/tests/raw.rs
+++ b/tests/raw.rs
@@ -8,7 +8,7 @@ use select::{
mod fixtures;
-use crate::fixtures::{server, Error, TestServer};
+use crate::fixtures::{Error, TestServer, server};
/// The footer displays the correct wget command to download the folder recursively
// This test can't test all aspects of the wget footer,
diff --git a/tests/readme.rs b/tests/readme.rs
index cafff3d..a30d00e 100644
--- a/tests/readme.rs
+++ b/tests/readme.rs
@@ -1,4 +1,4 @@
-use std::fs::{remove_file, File};
+use std::fs::{File, remove_file};
use std::io::Write;
use std::path::PathBuf;
@@ -8,7 +8,7 @@ use select::{document::Document, node::Node};
mod fixtures;
-use fixtures::{server, Error, TestServer, DIRECTORIES, FILES};
+use fixtures::{DIRECTORIES, Error, FILES, TestServer, server};
fn write_readme_contents(path: PathBuf, filename: &str) -> PathBuf {
let readme_path = path.join(filename);
@@ -21,10 +21,12 @@ fn write_readme_contents(path: PathBuf, filename: &str) -> PathBuf {
fn assert_readme_contents(parsed_dom: &Document, filename: &str) {
assert!(parsed_dom.find(Attr("id", "readme")).next().is_some());
- assert!(parsed_dom
- .find(Attr("id", "readme-filename"))
- .next()
- .is_some());
+ assert!(
+ parsed_dom
+ .find(Attr("id", "readme-filename"))
+ .next()
+ .is_some()
+ );
assert!(
parsed_dom
.find(Attr("id", "readme-filename"))
@@ -33,17 +35,21 @@ fn assert_readme_contents(parsed_dom: &Document, filename: &str) {
.text()
== filename
);
- assert!(parsed_dom
- .find(Attr("id", "readme-contents"))
- .next()
- .is_some());
- assert!(parsed_dom
- .find(Attr("id", "readme-contents"))
- .next()
- .unwrap()
- .text()
- .trim()
- .contains(&format!("Contents of {filename}")));
+ assert!(
+ parsed_dom
+ .find(Attr("id", "readme-contents"))
+ .next()
+ .is_some()
+ );
+ assert!(
+ parsed_dom
+ .find(Attr("id", "readme-contents"))
+ .next()
+ .unwrap()
+ .text()
+ .trim()
+ .contains(&format!("Contents of {filename}"))
+ );
}
/// Do not show readme contents by default
diff --git a/tests/serve_request.rs b/tests/serve_request.rs
index 6ee6473..d9d4880 100644
--- a/tests/serve_request.rs
+++ b/tests/serve_request.rs
@@ -13,8 +13,8 @@ use select::{document::Document, node::Node, predicate::Attr};
mod fixtures;
use crate::fixtures::{
- port, server, tmpdir, Error, TestServer, DIRECTORIES, DIRECTORY_SYMLINK, FILES, FILE_SYMLINK,
- HIDDEN_DIRECTORIES, HIDDEN_FILES,
+ DIRECTORIES, DIRECTORY_SYMLINK, Error, FILE_SYMLINK, FILES, HIDDEN_DIRECTORIES, HIDDEN_FILES,
+ TestServer, port, server, tmpdir,
};
#[rstest]
@@ -55,17 +55,21 @@ fn serves_requests_with_non_default_port(server: TestServer) -> Result<(), Error
}
for &directory in DIRECTORIES {
- assert!(parsed
- .find(|x: &Node| x.text() == directory)
- .next()
- .is_some());
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == directory)
+ .next()
+ .is_some()
+ );
let dir_body = reqwest::blocking::get(server.url().join(directory)?)?.error_for_status()?;
let dir_body_parsed = Document::from_read(dir_body)?;
for &file in FILES {
- assert!(dir_body_parsed
- .find(|x: &Node| x.text() == file)
- .next()
- .is_some());
+ assert!(
+ dir_body_parsed
+ .find(|x: &Node| x.text() == file)
+ .next()
+ .is_some()
+ );
}
}
@@ -105,17 +109,21 @@ fn serves_requests_hidden_files(#[with(&["--hidden"])] server: TestServer) -> Re
}
for &directory in DIRECTORIES.iter().chain(HIDDEN_DIRECTORIES) {
- assert!(parsed
- .find(|x: &Node| x.text() == directory)
- .next()
- .is_some());
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == directory)
+ .next()
+ .is_some()
+ );
let dir_body = reqwest::blocking::get(server.url().join(directory)?)?.error_for_status()?;
let dir_body_parsed = Document::from_read(dir_body)?;
for &file in FILES.iter().chain(HIDDEN_FILES) {
- assert!(dir_body_parsed
- .find(|x: &Node| x.text() == file)
- .next()
- .is_some());
+ assert!(
+ dir_body_parsed
+ .find(|x: &Node| x.text() == file)
+ .next()
+ .is_some()
+ );
}
}
@@ -128,10 +136,12 @@ fn serves_requests_no_hidden_files_without_flag(server: TestServer) -> Result<()
let parsed = Document::from_read(body)?;
for &hidden_item in HIDDEN_FILES.iter().chain(HIDDEN_DIRECTORIES) {
- assert!(parsed
- .find(|x: &Node| x.text() == hidden_item)
- .next()
- .is_none());
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == hidden_item)
+ .next()
+ .is_none()
+ );
let resp = reqwest::blocking::get(server.url().join(hidden_item)?)?;
assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
}
@@ -191,10 +201,12 @@ fn serves_requests_symlinks(
assert_eq!(node.unwrap().attr("class").unwrap(), "file");
}
}
- assert!(parsed
- .find(|x: &Node| x.text() == BROKEN_SYMLINK)
- .next()
- .is_none());
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == BROKEN_SYMLINK)
+ .next()
+ .is_none()
+ );
Ok(())
}
@@ -267,10 +279,12 @@ fn serve_index_instead_of_404_in_spa_mode(
) -> Result<(), Error> {
let body = reqwest::blocking::get(format!("{}{}", server.url(), url))?.error_for_status()?;
let parsed = Document::from_read(body)?;
- assert!(parsed
- .find(|x: &Node| x.text() == "Test Hello Yes")
- .next()
- .is_some());
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == "Test Hello Yes")
+ .next()
+ .is_some()
+ );
Ok(())
}
@@ -285,10 +299,12 @@ fn serve_file_instead_of_404_in_pretty_urls_mode(
) -> Result<(), Error> {
let body = reqwest::blocking::get(format!("{}{}", server.url(), url))?.error_for_status()?;
let parsed = Document::from_read(body)?;
- assert!(parsed
- .find(|x: &Node| x.text() == "Test Hello Yes")
- .next()
- .is_some());
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == "Test Hello Yes")
+ .next()
+ .is_some()
+ );
Ok(())
}
@@ -320,12 +336,16 @@ fn serves_requests_static_file_check(
let parsed = Document::from_read(body)?;
let re = Regex::new(&static_file_pattern).unwrap();
- assert!(parsed
- .find(Attr("rel", "stylesheet"))
- .all(|x| re.is_match(x.attr("href").unwrap())));
- assert!(parsed
- .find(Attr("rel", "icon"))
- .all(|x| re.is_match(x.attr("href").unwrap())));
+ assert!(
+ parsed
+ .find(Attr("rel", "stylesheet"))
+ .all(|x| re.is_match(x.attr("href").unwrap()))
+ );
+ assert!(
+ parsed
+ .find(Attr("rel", "icon"))
+ .all(|x| re.is_match(x.attr("href").unwrap()))
+ );
Ok(())
}
@@ -337,22 +357,30 @@ fn serves_no_directory_if_indexing_disabled(#[case] server: TestServer) -> Resul
assert_eq!(body.status(), StatusCode::NOT_FOUND);
let parsed = Document::from_read(body)?;
- assert!(parsed
- .find(|x: &Node| x.text() == FILES[0])
- .next()
- .is_none());
- assert!(parsed
- .find(|x: &Node| x.text() == DIRECTORIES[0])
- .next()
- .is_none());
- assert!(parsed
- .find(|x: &Node| x.text() == "404 Not Found")
- .next()
- .is_some());
- assert!(parsed
- .find(|x: &Node| x.text() == "File not found.")
- .next()
- .is_some());
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == FILES[0])
+ .next()
+ .is_none()
+ );
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == DIRECTORIES[0])
+ .next()
+ .is_none()
+ );
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == "404 Not Found")
+ .next()
+ .is_some()
+ );
+ assert!(
+ parsed
+ .find(|x: &Node| x.text() == "File not found.")
+ .next()
+ .is_some()
+ );
Ok(())
}
diff --git a/tests/tls.rs b/tests/tls.rs
index 9cc441c..9f2d9b5 100644
--- a/tests/tls.rs
+++ b/tests/tls.rs
@@ -6,7 +6,7 @@ use select::{document::Document, node::Node};
mod fixtures;
-use crate::fixtures::{server, Error, TestServer, FILES};
+use crate::fixtures::{Error, FILES, TestServer, server};
/// Can start the server with TLS and receive encrypted responses.
#[rstest]
diff --git a/tests/upload_files.rs b/tests/upload_files.rs
index 15730bb..42ec9e6 100644
--- a/tests/upload_files.rs
+++ b/tests/upload_files.rs
@@ -2,7 +2,7 @@ use std::fs::create_dir_all;
use std::path::Path;
use assert_fs::fixture::TempDir;
-use reqwest::blocking::{multipart, Client};
+use reqwest::blocking::{Client, multipart};
use reqwest::header::HeaderMap;
use rstest::rstest;
use select::document::Document;
@@ -10,7 +10,7 @@ use select::predicate::{Attr, Text};
mod fixtures;
-use crate::fixtures::{server, tmpdir, Error, TestServer};
+use crate::fixtures::{Error, TestServer, server, tmpdir};
// Generate the hashes using the following
// ```bash
@@ -28,7 +28,9 @@ use crate::fixtures::{server, tmpdir, Error, TestServer};
)]
#[case::sha512_hash(
Some("SHA512"),
- Some("03bcfc52c53904e34e06b95e8c3ee1275c66960c441417892e977d52687e28afae85b6039509060ee07da739e4e7fc3137acd142162c1456f723604f8365e154")
+ Some(
+ "03bcfc52c53904e34e06b95e8c3ee1275c66960c441417892e977d52687e28afae85b6039509060ee07da739e4e7fc3137acd142162c1456f723604f8365e154"
+ )
)]
fn uploading_files_works(
#[with(&["-u"])] server: TestServer,
@@ -100,12 +102,14 @@ fn uploading_files_is_prevented(server: TestServer) -> Result<(), Error> {
let client = Client::new();
// Ensure uploading fails and returns an error
- assert!(client
- .post(server.url().join("/upload?path=/")?)
- .multipart(form)
- .send()?
- .error_for_status()
- .is_err());
+ assert!(
+ client
+ .post(server.url().join("/upload?path=/")?)
+ .multipart(form)
+ .send()?
+ .error_for_status()
+ .is_err()
+ );
// After uploading, check whether the uploaded file is NOT getting listed.
let body = reqwest::blocking::get(server.url())?;
@@ -127,7 +131,9 @@ fn uploading_files_is_prevented(server: TestServer) -> Result<(), Error> {
)]
#[case::sha512_hash(
Some("SHA512"),
- Some("d3fe39ab560dd7ba91e6e2f8c948066d696f2afcfc90bf9df32946512f6934079807f301235b88b72bf746b6a88bf111bc5abe5c711514ed0731d286985297ba")
+ Some(
+ "d3fe39ab560dd7ba91e6e2f8c948066d696f2afcfc90bf9df32946512f6934079807f301235b88b72bf746b6a88bf111bc5abe5c711514ed0731d286985297ba"
+ )
)]
#[case::sha128_hash(Some("SHA128"), Some("invalid"))]
fn uploading_files_with_invalid_sha_func_is_prevented(
@@ -159,12 +165,14 @@ fn uploading_files_with_invalid_sha_func_is_prevented(
let client = Client::builder().default_headers(headers).build()?;
- assert!(client
- .post(server.url().join("/upload?path=/")?)
- .multipart(form)
- .send()?
- .error_for_status()
- .is_err());
+ assert!(
+ client
+ .post(server.url().join("/upload?path=/")?)
+ .multipart(form)
+ .send()?
+ .error_for_status()
+ .is_err()
+ );
// After uploading, check whether the uploaded file is NOT getting listed.
let body = reqwest::blocking::get(server.url())?;
diff --git a/tests/webdav.rs b/tests/webdav.rs
index 09d04e9..58ce9e8 100644
--- a/tests/webdav.rs
+++ b/tests/webdav.rs
@@ -3,18 +3,18 @@ use std::process::Command;
use assert_cmd::prelude::*;
use assert_fs::TempDir;
use predicates::str::contains;
-use reqwest::{blocking::Client, Method};
+use reqwest::{Method, blocking::Client};
use reqwest_dav::{
- list_cmd::{ListEntity, ListFile, ListFolder},
ClientBuilder as DavClientBuilder,
+ list_cmd::{ListEntity, ListFile, ListFolder},
};
use rstest::rstest;
mod fixtures;
use crate::fixtures::{
- server, tmpdir, Error, TestServer, DIRECTORIES, DIRECTORY_SYMLINK, FILES, FILE_SYMLINK,
- HIDDEN_DIRECTORIES, HIDDEN_FILES,
+ DIRECTORIES, DIRECTORY_SYMLINK, Error, FILE_SYMLINK, FILES, HIDDEN_DIRECTORIES, HIDDEN_FILES,
+ TestServer, server, tmpdir,
};
#[rstest]