aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/config.rs3
-rw-r--r--tests/config.rs28
-rw-r--r--tests/serve_request.rs25
3 files changed, 26 insertions, 30 deletions
diff --git a/src/config.rs b/src/config.rs
index d3aa845..ec7ec66 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -151,6 +151,9 @@ impl MiniserveConfig {
// Generate some random routes for the favicon and css so that they are very unlikely to conflict with
// real files.
+ // If --random-route is enabled , in order to not leak the random generated route, we must not use it
+ // as static files prefix.
+ // Otherwise, we should apply route_prefix to static files.
let (favicon_route, css_route) = if args.random_route {
(
format!("/{}", nanoid::nanoid!(10, &ROUTE_ALPHABET)),
diff --git a/tests/config.rs b/tests/config.rs
deleted file mode 100644
index 136b3b1..0000000
--- a/tests/config.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-mod fixtures;
-
-use fixtures::{server_no_stderr, Error, TestServer};
-use regex::Regex;
-use rstest::rstest;
-use select::{document::Document, predicate::Attr};
-
-#[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", "foo"]), "/foo/[a-f0-9]+")]
-fn check_static_file_route_pattern(
- #[case] server: TestServer,
- #[case] route_pattern: String,
-) -> Result<(), Error> {
- let body = reqwest::blocking::get(server.url())?;
- let parsed = Document::from_read(body)?;
- let re = Regex::new(&route_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())));
-
- Ok(())
-}
diff --git a/tests/serve_request.rs b/tests/serve_request.rs
index 450a8f5..3f5eeff 100644
--- a/tests/serve_request.rs
+++ b/tests/serve_request.rs
@@ -9,8 +9,7 @@ use fixtures::{
use http::StatusCode;
use regex::Regex;
use rstest::rstest;
-use select::document::Document;
-use select::node::Node;
+use select::{document::Document, node::Node, predicate::Attr};
use std::process::{Command, Stdio};
use std::thread::sleep;
use std::time::Duration;
@@ -281,3 +280,25 @@ fn serves_requests_with_route_prefix(#[case] server: TestServer) -> Result<(), E
Ok(())
}
+
+#[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]+")]
+fn serves_requests_static_file_check(
+ #[case] server: TestServer,
+ #[case] static_file_pattern: String,
+) -> Result<(), Error> {
+ let body = reqwest::blocking::get(server.url())?;
+ 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())));
+
+ Ok(())
+}