aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGaurav <allmanpride@gmail.com>2022-08-26 21:43:26 +0000
committerGaurav <allmanpride@gmail.com>2022-08-26 21:54:59 +0000
commit7831056a0fdd2319778f1368601394e09aada27a (patch)
tree5d4cc6e34ca5e1c1c6f947560ea2ab15f1bcc3cb
parentAppease `cargo fmt` (diff)
downloadminiserve-7831056a0fdd2319778f1368601394e09aada27a.tar.gz
miniserve-7831056a0fdd2319778f1368601394e09aada27a.zip
Make cases for `--readme` test functions
* remove extra functions for directory check * add directory listing check for with and without readme
-rw-r--r--tests/readme.rs75
1 files changed, 27 insertions, 48 deletions
diff --git a/tests/readme.rs b/tests/readme.rs
index 59f3d65..ea4e301 100644
--- a/tests/readme.rs
+++ b/tests/readme.rs
@@ -1,15 +1,21 @@
mod fixtures;
-use fixtures::{server, Error, TestServer, DIRECTORIES};
+use fixtures::{server, Error, TestServer, DIRECTORIES, FILES};
use rstest::rstest;
-use select::document::Document;
use select::predicate::Attr;
+use select::{document::Document, node::Node};
#[rstest]
/// Do not show readme contents by default
fn no_readme_contents(server: TestServer) -> Result<(), Error> {
let body = reqwest::blocking::get(server.url())?.error_for_status()?;
let parsed = Document::from_read(body)?;
+ for &file in FILES {
+ assert!(parsed.find(|x: &Node| x.text() == file).next().is_some());
+ }
+ for &dir in DIRECTORIES {
+ assert!(parsed.find(|x: &Node| x.text() == dir).next().is_some());
+ }
assert!(parsed.find(Attr("id", "readme")).next().is_none());
assert!(parsed.find(Attr("id", "readme-filename")).next().is_none());
assert!(parsed.find(Attr("id", "readme-contents")).next().is_none());
@@ -17,11 +23,26 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> {
Ok(())
}
-#[rstest]
+#[rstest(
+ dir,
+ content,
+ case("", "Test Hello Yes"),
+ case("/dira/", "This is dira/readme.md"),
+ case("/dirb/", "This is dirb/readme.md")
+)]
/// Show readme contents when told to if there is readme.md file
-fn show_readme_contents(#[with(&["--readme"])] server: TestServer) -> Result<(), Error> {
- let body = reqwest::blocking::get(server.url())?.error_for_status()?;
+fn show_readme_contents(
+ #[with(&["--readme"])] server: TestServer,
+ dir: &str,
+ content: &str,
+) -> Result<(), Error> {
+ let body = reqwest::blocking::get(server.url().join(dir)?)?.error_for_status()?;
let parsed = Document::from_read(body)?;
+
+ for &file in FILES {
+ assert!(parsed.find(|x: &Node| x.text() == file).next().is_some());
+ }
+
assert!(parsed.find(Attr("id", "readme")).next().is_some());
assert!(parsed.find(Attr("id", "readme-filename")).next().is_some());
assert!(
@@ -40,50 +61,8 @@ fn show_readme_contents(#[with(&["--readme"])] server: TestServer) -> Result<(),
.unwrap()
.text()
.trim()
- == "Test Hello Yes"
+ == content
);
Ok(())
}
-
-#[rstest]
-/// Show readme contents when told to if there is readme.md file on directories.
-fn show_readme_contents_directories(
- #[with(&["--readme"])] server: TestServer,
-) -> Result<(), Error> {
- let directories = DIRECTORIES.to_vec();
-
- for directory in directories {
- let dir_body =
- reqwest::blocking::get(server.url().join(&directory)?)?.error_for_status()?;
- let dir_body_parsed = Document::from_read(dir_body)?;
- assert!(dir_body_parsed.find(Attr("id", "readme")).next().is_some());
- assert!(dir_body_parsed
- .find(Attr("id", "readme-filename"))
- .next()
- .is_some());
- assert!(
- dir_body_parsed
- .find(Attr("id", "readme-filename"))
- .next()
- .unwrap()
- .text()
- == "readme.md"
- );
- assert!(dir_body_parsed
- .find(Attr("id", "readme-contents"))
- .next()
- .is_some());
- assert!(
- dir_body_parsed
- .find(Attr("id", "readme-contents"))
- .next()
- .unwrap()
- .text()
- .trim()
- == &format!("This is {}readme.md", directory)
- );
- }
-
- Ok(())
-}