aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2025-02-06 04:18:20 +0000
committerSven-Hendrik Haase <svenstaro@gmail.com>2025-02-06 04:18:20 +0000
commit57f02a1587555176f1b43b001e7846ac9eb2e949 (patch)
tree6585f2d404ae55506f4e25985ce663cea7092788
parentGet rid of server_no_stderr (diff)
downloadminiserve-57f02a1587555176f1b43b001e7846ac9eb2e949.tar.gz
miniserve-57f02a1587555176f1b43b001e7846ac9eb2e949.zip
Clean up and modernize rstest usage
We still had some old-style syntax in there.
-rw-r--r--tests/archive.rs6
-rw-r--r--tests/auth.rs126
-rw-r--r--tests/auth_file.rs40
-rw-r--r--tests/header.rs9
-rw-r--r--tests/navigation.rs19
-rw-r--r--tests/raw.rs35
-rw-r--r--tests/readme.rs40
7 files changed, 127 insertions, 148 deletions
diff --git a/tests/archive.rs b/tests/archive.rs
index 5f34ade..a8b5ed2 100644
--- a/tests/archive.rs
+++ b/tests/archive.rs
@@ -58,8 +58,10 @@ fn test_tar_archives(#[with(&["-g"])] server: TestServer) -> Result<(), Error> {
}
#[rstest]
-#[case(server(&["--disable-indexing", "--enable-tar-gz", "--enable-tar", "--enable-zip"]))]
-fn archives_are_disabled_when_indexing_disabled(#[case] server: TestServer) -> Result<(), Error> {
+fn archives_are_disabled_when_indexing_disabled(
+ #[with(&["--disable-indexing", "--enable-tar-gz", "--enable-tar", "--enable-zip"])]
+ 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)?;
diff --git a/tests/auth.rs b/tests/auth.rs
index 545bcbf..efa7827 100644
--- a/tests/auth.rs
+++ b/tests/auth.rs
@@ -7,24 +7,22 @@ mod fixtures;
use crate::fixtures::{server, Error, FILES};
-#[rstest(
- cli_auth_arg, client_username, client_password,
- case("testuser:testpassword", "testuser", "testpassword"),
- case(
- "testuser:sha256:9f735e0df9a1ddc702bf0a1a7b83033f9f7153a00c29de82cedadc9957289b05",
- "testuser",
- "testpassword"
- ),
- case(
- "testuser:sha512:e9e633097ab9ceb3e48ec3f70ee2beba41d05d5420efee5da85f97d97005727587fda33ef4ff2322088f4c79e8133cc9cd9f3512f4d3a303cbdb5bc585415a00",
- "testuser",
- "testpassword"
- ),
+#[rstest]
+#[case("testuser:testpassword", "testuser", "testpassword")]
+#[case(
+ "testuser:sha256:9f735e0df9a1ddc702bf0a1a7b83033f9f7153a00c29de82cedadc9957289b05",
+ "testuser",
+ "testpassword"
+)]
+#[case(
+ "testuser:sha512:e9e633097ab9ceb3e48ec3f70ee2beba41d05d5420efee5da85f97d97005727587fda33ef4ff2322088f4c79e8133cc9cd9f3512f4d3a303cbdb5bc585415a00",
+ "testuser",
+ "testpassword"
)]
fn auth_accepts(
- cli_auth_arg: &str,
- client_username: &str,
- client_password: &str,
+ #[case] cli_auth_arg: &str,
+ #[case] client_username: &str,
+ #[case] client_password: &str,
) -> Result<(), Error> {
let server = server(&["-a", cli_auth_arg]);
let client = Client::new();
@@ -45,35 +43,33 @@ fn auth_accepts(
Ok(())
}
-#[rstest(
- cli_auth_arg, client_username, client_password,
- case("rightuser:rightpassword", "wronguser", "rightpassword"),
- case(
- "rightuser:sha256:314eee236177a721d0e58d3ca4ff01795cdcad1e8478ba8183a2e58d69c648c0",
- "wronguser",
- "rightpassword"
- ),
- case(
- "rightuser:sha512:84ec4056571afeec9f5b59453305877e9a66c3f9a1d91733fde759b370c1d540b9dc58bfc88c5980ad2d020c3a8ee84f21314a180856f5a82ba29ecba29e2cab",
- "wronguser",
- "rightpassword"
- ),
- case("rightuser:rightpassword", "rightuser", "wrongpassword"),
- case(
- "rightuser:sha256:314eee236177a721d0e58d3ca4ff01795cdcad1e8478ba8183a2e58d69c648c0",
- "rightuser",
- "wrongpassword"
- ),
- case(
- "rightuser:sha512:84ec4056571afeec9f5b59453305877e9a66c3f9a1d91733fde759b370c1d540b9dc58bfc88c5980ad2d020c3a8ee84f21314a180856f5a82ba29ecba29e2cab",
- "rightuser",
- "wrongpassword"
- ),
+#[rstest]
+#[case("rightuser:rightpassword", "wronguser", "rightpassword")]
+#[case(
+ "rightuser:sha256:314eee236177a721d0e58d3ca4ff01795cdcad1e8478ba8183a2e58d69c648c0",
+ "wronguser",
+ "rightpassword"
+)]
+#[case(
+ "rightuser:sha512:84ec4056571afeec9f5b59453305877e9a66c3f9a1d91733fde759b370c1d540b9dc58bfc88c5980ad2d020c3a8ee84f21314a180856f5a82ba29ecba29e2cab",
+ "wronguser",
+ "rightpassword"
+)]
+#[case("rightuser:rightpassword", "rightuser", "wrongpassword")]
+#[case(
+ "rightuser:sha256:314eee236177a721d0e58d3ca4ff01795cdcad1e8478ba8183a2e58d69c648c0",
+ "rightuser",
+ "wrongpassword"
+)]
+#[case(
+ "rightuser:sha512:84ec4056571afeec9f5b59453305877e9a66c3f9a1d91733fde759b370c1d540b9dc58bfc88c5980ad2d020c3a8ee84f21314a180856f5a82ba29ecba29e2cab",
+ "rightuser",
+ "wrongpassword"
)]
fn auth_rejects(
- cli_auth_arg: &str,
- client_username: &str,
- client_password: &str,
+ #[case] cli_auth_arg: &str,
+ #[case] client_username: &str,
+ #[case] client_password: &str,
) -> Result<(), Error> {
let server = server(&["-a", cli_auth_arg]);
let client = Client::new();
@@ -105,17 +101,17 @@ static ACCOUNTS: &[&str] = &[
// pwd5
];
-#[rstest(
- username,
- password,
- case("usr0", "pwd0"),
- case("usr1", "pwd1"),
- case("usr2", "pwd2"),
- case("usr3", "pwd3"),
- case("usr4", "pwd4"),
- case("usr5", "pwd5")
-)]
-fn auth_multiple_accounts_pass(username: &str, password: &str) -> Result<(), Error> {
+#[rstest]
+#[case("usr0", "pwd0")]
+#[case("usr1", "pwd1")]
+#[case("usr2", "pwd2")]
+#[case("usr3", "pwd3")]
+#[case("usr4", "pwd4")]
+#[case("usr5", "pwd5")]
+fn auth_multiple_accounts_pass(
+ #[case] username: &str,
+ #[case] password: &str,
+) -> Result<(), Error> {
let server = server(ACCOUNTS);
let client = Client::new();
@@ -152,17 +148,17 @@ fn auth_multiple_accounts_wrong_username() -> Result<(), Error> {
Ok(())
}
-#[rstest(
- username,
- password,
- case("usr0", "pwd5"),
- case("usr1", "pwd4"),
- case("usr2", "pwd3"),
- case("usr3", "pwd2"),
- case("usr4", "pwd1"),
- case("usr5", "pwd0")
-)]
-fn auth_multiple_accounts_wrong_password(username: &str, password: &str) -> Result<(), Error> {
+#[rstest]
+#[case("usr0", "pwd5")]
+#[case("usr1", "pwd4")]
+#[case("usr2", "pwd3")]
+#[case("usr3", "pwd2")]
+#[case("usr4", "pwd1")]
+#[case("usr5", "pwd0")]
+fn auth_multiple_accounts_wrong_password(
+ #[case] username: &str,
+ #[case] password: &str,
+) -> Result<(), Error> {
let server = server(ACCOUNTS);
let client = Client::new();
diff --git a/tests/auth_file.rs b/tests/auth_file.rs
index eb40d2c..5632d46 100644
--- a/tests/auth_file.rs
+++ b/tests/auth_file.rs
@@ -4,22 +4,17 @@ use select::{document::Document, predicate::Text};
mod fixtures;
-use crate::fixtures::{server, Error, FILES};
+use crate::fixtures::{server, Error, TestServer, FILES};
-#[rstest(
- cli_auth_file_arg,
- client_username,
- client_password,
- case("tests/data/auth1.txt", "joe", "123"),
- case("tests/data/auth1.txt", "bob", "123"),
- case("tests/data/auth1.txt", "bill", "")
-)]
+#[rstest]
+#[case("joe", "123")]
+#[case("bob", "123")]
+#[case("bill", "")]
fn auth_file_accepts(
- cli_auth_file_arg: &str,
- client_username: &str,
- client_password: &str,
+ #[with(&["--auth-file", "tests/data/auth1.txt"])] server: TestServer,
+ #[case] client_username: &str,
+ #[case] client_password: &str,
) -> Result<(), Error> {
- let server = server(&["--auth-file", cli_auth_file_arg]);
let client = Client::new();
let response = client
.get(server.url())
@@ -38,20 +33,15 @@ fn auth_file_accepts(
Ok(())
}
-#[rstest(
- cli_auth_file_arg,
- client_username,
- client_password,
- case("tests/data/auth1.txt", "joe", "wrongpassword"),
- case("tests/data/auth1.txt", "bob", ""),
- case("tests/data/auth1.txt", "nonexistentuser", "wrongpassword")
-)]
+#[rstest]
+#[case("joe", "wrongpassword")]
+#[case("bob", "")]
+#[case("nonexistentuser", "wrongpassword")]
fn auth_file_rejects(
- cli_auth_file_arg: &str,
- client_username: &str,
- client_password: &str,
+ #[with(&["--auth-file", "tests/data/auth1.txt"])] server: TestServer,
+ #[case] client_username: &str,
+ #[case] client_password: &str,
) -> Result<(), Error> {
- let server = server(&["--auth-file", cli_auth_file_arg]);
let client = Client::new();
let status = client
.get(server.url())
diff --git a/tests/header.rs b/tests/header.rs
index ea4c462..443f2ba 100644
--- a/tests/header.rs
+++ b/tests/header.rs
@@ -4,11 +4,10 @@ mod fixtures;
use crate::fixtures::{server, Error};
-#[rstest(headers,
- case(vec!["x-info: 123".to_string()]),
- case(vec!["x-info1: 123".to_string(), "x-info2: 345".to_string()])
-)]
-fn custom_header_set(headers: Vec<String>) -> Result<(), Error> {
+#[rstest]
+#[case(vec!["x-info: 123".to_string()])]
+#[case(vec!["x-info1: 123".to_string(), "x-info2: 345".to_string()])]
+fn custom_header_set(#[case] headers: Vec<String>) -> Result<(), Error> {
let server = server(headers.iter().flat_map(|h| vec!["--header", h]));
let resp = reqwest::blocking::get(server.url())?;
diff --git a/tests/navigation.rs b/tests/navigation.rs
index f061d30..1bd8e81 100644
--- a/tests/navigation.rs
+++ b/tests/navigation.rs
@@ -10,16 +10,17 @@ mod utils;
use crate::fixtures::{server, Error, TestServer, DEEPLY_NESTED_FILE, DIRECTORIES};
use crate::utils::{get_link_from_text, get_link_hrefs_with_prefix};
-#[rstest(
- input,
- expected,
- case("", "/"),
- case("/dira", "/dira/"),
- case("/dirb/", "/dirb/"),
- case("/very/deeply/nested", "/very/deeply/nested/")
-)]
+#[rstest]
+#[case("", "/")]
+#[case("/dira", "/dira/")]
+#[case("/dirb/", "/dirb/")]
+#[case("/very/deeply/nested", "/very/deeply/nested/")]
/// Directories get a trailing slash.
-fn index_gets_trailing_slash(server: TestServer, input: &str, expected: &str) -> Result<(), Error> {
+fn index_gets_trailing_slash(
+ server: TestServer,
+ #[case] input: &str,
+ #[case] expected: &str,
+) -> Result<(), Error> {
let resp = reqwest::blocking::get(server.url().join(input)?)?;
assert!(resp.url().as_str().ends_with(expected));
diff --git a/tests/raw.rs b/tests/raw.rs
index 0017bae..051c3e3 100644
--- a/tests/raw.rs
+++ b/tests/raw.rs
@@ -13,18 +13,15 @@ use crate::fixtures::{server, Error, TestServer};
/// The footer displays the correct wget command to download the folder recursively
// This test can't test all aspects of the wget footer,
// a more detailed unit test is available
-#[rstest(
- depth,
- dir,
- case(0, ""),
- case(1, "dira/"),
- case(2, "very/deeply/"),
- case(3, "very/deeply/nested/")
-)]
+#[rstest]
+#[case(0, "")]
+#[case(1, "dira/")]
+#[case(2, "very/deeply/")]
+#[case(3, "very/deeply/nested/")]
fn ui_displays_wget_element(
- depth: u8,
- dir: &str,
- #[with(&["-W"])] server: TestServer,
+ #[case] depth: u8,
+ #[case] dir: &str,
+ #[with(&["--show-wget-footer"])] server: TestServer,
) -> Result<(), Error> {
let client = Client::new();
@@ -62,16 +59,14 @@ fn ui_displays_wget_element(
}
/// All hrefs in raw mode are links to directories or files & directories end with ?raw=true
-#[rstest(
- dir,
- case(""),
- case("very/"),
- case("very/deeply/"),
- case("very/deeply/nested/")
-)]
+#[rstest]
+#[case("")]
+#[case("very/")]
+#[case("very/deeply/")]
+#[case("very/deeply/nested/")]
fn raw_mode_links_to_directories_end_with_raw_true(
- dir: &str,
- #[with(&["-W"])] server: TestServer,
+ #[case] dir: &str,
+ #[with(&["--show-wget-footer"])] server: TestServer,
) -> Result<(), Error> {
fn verify_a_tags(parsed: Document) {
// Ensure all links end with ?raw=true or are files
diff --git a/tests/readme.rs b/tests/readme.rs
index 122f6ec..cafff3d 100644
--- a/tests/readme.rs
+++ b/tests/readme.rs
@@ -69,17 +69,15 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> {
}
/// Show readme contents when told to if there is a readme file in the root
-#[rstest(
- readme_name,
- case("Readme.md"),
- case("readme.md"),
- case("README.md"),
- case("README.MD"),
- case("ReAdMe.Md")
-)]
+#[rstest]
+#[case("Readme.md")]
+#[case("readme.md")]
+#[case("README.md")]
+#[case("README.MD")]
+#[case("ReAdMe.Md")]
fn show_root_readme_contents(
#[with(&["--readme"])] server: TestServer,
- readme_name: &str,
+ #[case] readme_name: &str,
) -> Result<(), Error> {
let readme_path = write_readme_contents(server.path().to_path_buf(), readme_name);
let body = reqwest::blocking::get(server.url())?.error_for_status()?;
@@ -96,21 +94,19 @@ fn show_root_readme_contents(
}
/// Show readme contents when told to if there is a readme file in any of the directories
-#[rstest(
- readme_name,
- case("Readme.md"),
- case("readme.md"),
- case("README.md"),
- case("README.MD"),
- case("ReAdMe.Md"),
- case("Readme.txt"),
- case("README.txt"),
- case("README"),
- case("ReAdMe")
-)]
+#[rstest]
+#[case("Readme.md")]
+#[case("readme.md")]
+#[case("README.md")]
+#[case("README.MD")]
+#[case("ReAdMe.Md")]
+#[case("Readme.txt")]
+#[case("README.txt")]
+#[case("README")]
+#[case("ReAdMe")]
fn show_nested_readme_contents(
#[with(&["--readme"])] server: TestServer,
- readme_name: &str,
+ #[case] readme_name: &str,
) -> Result<(), Error> {
for dir in DIRECTORIES {
let readme_path = write_readme_contents(server.path().join(dir), readme_name);