aboutsummaryrefslogtreecommitdiffstats
path: root/tests/serve_request.rs
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2025-02-07 12:48:50 +0000
committerGitHub <noreply@github.com>2025-02-07 12:48:50 +0000
commit77b1c1cd0bfab5d4dc5e0994050fabd4a19cdd0f (patch)
tree0b9e157598d2361397ee09e7f196938d284c48f9 /tests/serve_request.rs
parentchore: clean up (diff)
parentAdd CHANGELOG entry for #1473 (diff)
downloadminiserve-77b1c1cd0bfab5d4dc5e0994050fabd4a19cdd0f.tar.gz
miniserve-77b1c1cd0bfab5d4dc5e0994050fabd4a19cdd0f.zip
Merge branch 'master' into upload-progress-bar
Diffstat (limited to 'tests/serve_request.rs')
-rw-r--r--tests/serve_request.rs67
1 files changed, 28 insertions, 39 deletions
diff --git a/tests/serve_request.rs b/tests/serve_request.rs
index b7359c3..f840efd 100644
--- a/tests/serve_request.rs
+++ b/tests/serve_request.rs
@@ -1,23 +1,21 @@
-mod fixtures;
+use std::process::{Command, Stdio};
+use std::thread::sleep;
+use std::time::Duration;
use assert_cmd::prelude::*;
use assert_fs::fixture::TempDir;
-use fixtures::{
- port, server, server_no_stderr, tmpdir, Error, TestServer, DIRECTORIES, FILES,
- HIDDEN_DIRECTORIES, HIDDEN_FILES,
-};
-use http::StatusCode;
+use fixtures::BROKEN_SYMLINK;
use regex::Regex;
+use reqwest::StatusCode;
use rstest::rstest;
use select::{document::Document, node::Node, predicate::Attr};
-use std::process::{Command, Stdio};
-use std::thread::sleep;
-use std::time::Duration;
-#[cfg(unix)]
-use std::os::unix::fs::{symlink as symlink_dir, symlink as symlink_file};
-#[cfg(windows)]
-use std::os::windows::fs::{symlink_dir, symlink_file};
+mod fixtures;
+
+use crate::fixtures::{
+ port, server, tmpdir, Error, TestServer, DIRECTORIES, DIRECTORY_SYMLINK, FILES, FILE_SYMLINK,
+ HIDDEN_DIRECTORIES, HIDDEN_FILES,
+};
#[rstest]
fn serves_requests_with_no_options(tmpdir: TempDir) -> Result<(), Error> {
@@ -131,23 +129,10 @@ fn serves_requests_symlinks(
#[case] show_symlink_info: bool,
#[case] server: TestServer,
) -> Result<(), Error> {
- let file = "symlink-file.html";
- let dir = "symlink-dir/";
- let broken = "symlink broken";
-
- // Set up some basic symlinks:
- // to dir, to file, to non-existent location
- let orig = DIRECTORIES[0].strip_suffix('/').unwrap();
- let link = server.path().join(dir.strip_suffix('/').unwrap());
- symlink_dir(orig, link).expect("Couldn't create symlink");
- symlink_file(FILES[0], server.path().join(file)).expect("Couldn't create symlink");
- symlink_file("should-not-exist.xxx", server.path().join(broken))
- .expect("Couldn't create symlink");
-
let body = reqwest::blocking::get(server.url())?.error_for_status()?;
let parsed = Document::from_read(body)?;
- for &entry in &[file, dir] {
+ for &entry in &[FILE_SYMLINK, DIRECTORY_SYMLINK] {
let status = reqwest::blocking::get(server.url().join(entry)?)?.status();
// We expect a 404 here for when `no_symlinks` is `true`.
if no_symlinks {
@@ -161,6 +146,7 @@ fn serves_requests_symlinks(
.next();
// If symlinks are deactivated, none should be shown in the listing.
+ dbg!(&node);
assert_eq!(node.is_none(), no_symlinks);
if node.is_some() && show_symlink_info {
assert_eq!(node.unwrap().attr("class").unwrap(), "symlink");
@@ -186,7 +172,10 @@ fn serves_requests_symlinks(
assert_eq!(node.unwrap().attr("class").unwrap(), "file");
}
}
- assert!(parsed.find(|x: &Node| x.text() == broken).next().is_none());
+ assert!(parsed
+ .find(|x: &Node| x.text() == BROKEN_SYMLINK)
+ .next()
+ .is_none());
Ok(())
}
@@ -240,8 +229,8 @@ fn serves_requests_custom_index_notice(tmpdir: TempDir, port: u16) -> Result<(),
}
#[rstest]
-#[case(server_no_stderr(&["--index", FILES[0]]))]
-#[case(server_no_stderr(&["--index", "does-not-exist.html"]))]
+#[case(server(&["--index", FILES[0]]))]
+#[case(server(&["--index", "does-not-exist.html"]))]
fn index_fallback_to_listing(#[case] server: TestServer) -> Result<(), Error> {
// If index file is not found, show directory listing instead both cases should return `Ok`
reqwest::blocking::get(server.url())?.error_for_status()?;
@@ -250,9 +239,9 @@ fn index_fallback_to_listing(#[case] server: TestServer) -> Result<(), Error> {
}
#[rstest]
-#[case(server_no_stderr(&["--spa", "--index", FILES[0]]), "/")]
-#[case(server_no_stderr(&["--spa", "--index", FILES[0]]), "/spa-route")]
-#[case(server_no_stderr(&["--index", FILES[0]]), "/")]
+#[case(server(&["--spa", "--index", FILES[0]]), "/")]
+#[case(server(&["--spa", "--index", FILES[0]]), "/spa-route")]
+#[case(server(&["--index", FILES[0]]), "/")]
fn serve_index_instead_of_404_in_spa_mode(
#[case] server: TestServer,
#[case] url: &str,
@@ -268,9 +257,9 @@ fn serve_index_instead_of_404_in_spa_mode(
}
#[rstest]
-#[case(server_no_stderr(&["--pretty-urls", "--index", FILES[1]]), "/")]
-#[case(server_no_stderr(&["--pretty-urls", "--index", FILES[1]]), "test.html")]
-#[case(server_no_stderr(&["--pretty-urls", "--index", FILES[1]]), "test")]
+#[case(server(&["--pretty-urls", "--index", FILES[1]]), "/")]
+#[case(server(&["--pretty-urls", "--index", FILES[1]]), "test.html")]
+#[case(server(&["--pretty-urls", "--index", FILES[1]]), "test")]
fn serve_file_instead_of_404_in_pretty_urls_mode(
#[case] server: TestServer,
#[case] url: &str,
@@ -301,9 +290,9 @@ fn serves_requests_with_route_prefix(#[case] server: TestServer) -> Result<(), E
}
#[rstest]
-#[case(server_no_stderr(&[] as &[&str]), "/[a-f0-9]+")]
-#[case(server_no_stderr(&["--random-route"]), "/[a-f0-9]+")]
-#[case(server_no_stderr(&["--route-prefix", "foobar"]), "/foobar/[a-f0-9]+")]
+#[case(server(&[] as &[&str]), "/__miniserve_internal/[a-z.]+")]
+#[case(server(&["--random-route"]), "/__miniserve_internal/[a-z.]+")]
+#[case(server(&["--route-prefix", "foobar"]), "/foobar/__miniserve_internal/[a-z.]+")]
fn serves_requests_static_file_check(
#[case] server: TestServer,
#[case] static_file_pattern: String,