aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/config.rs10
-rw-r--r--tests/config.rs28
2 files changed, 36 insertions, 2 deletions
diff --git a/src/config.rs b/src/config.rs
index 0a5c945..d3aa845 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -152,9 +152,15 @@ impl MiniserveConfig {
// Generate some random routes for the favicon and css so that they are very unlikely to conflict with
// real files.
let (favicon_route, css_route) = if args.random_route {
- (format!("/{}", nanoid::nanoid!(10, &ROUTE_ALPHABET)), format!("/{}", nanoid::nanoid!(10, &ROUTE_ALPHABET)))
+ (
+ format!("/{}", nanoid::nanoid!(10, &ROUTE_ALPHABET)),
+ format!("/{}", nanoid::nanoid!(10, &ROUTE_ALPHABET)),
+ )
} else {
- (format!("{}/{}", route_prefix, nanoid::nanoid!(10, &ROUTE_ALPHABET)), format!("{}/{}", route_prefix, nanoid::nanoid!(10, &ROUTE_ALPHABET)))
+ (
+ format!("{}/{}", route_prefix, nanoid::nanoid!(10, &ROUTE_ALPHABET)),
+ format!("{}/{}", route_prefix, nanoid::nanoid!(10, &ROUTE_ALPHABET)),
+ )
};
let default_color_scheme = args.color_scheme;
diff --git a/tests/config.rs b/tests/config.rs
new file mode 100644
index 0000000..136b3b1
--- /dev/null
+++ b/tests/config.rs
@@ -0,0 +1,28 @@
+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(())
+}