You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
mod fixtures; |
|
mod utils; |
|
|
|
use assert_cmd::prelude::*; |
|
use assert_fs::fixture::TempDir; |
|
use fixtures::{port, server, tmpdir, wait_for_port, Error, TestServer}; |
|
use rstest::rstest; |
|
use std::process::{Command, Stdio}; |
|
|
|
#[rstest] |
|
fn path_prefix_index(#[with(&["--path-prefix", "xyz"])] server: TestServer) -> Result<(), Error> { |
|
let resp = reqwest::blocking::get(format!("{}{}", server.url(), "xyz"))?; |
|
assert_resp_paths!(resp); |
|
Ok(()) |
|
} |
|
|
|
#[rstest] |
|
fn path_prefix_file(#[with(&["--path-prefix", "xyz"])] server: TestServer) -> Result<(), Error> { |
|
let resp = reqwest::blocking::get(format!("{}{}/index.html", server.url(), "xyz"))?; |
|
assert_eq!(resp.status(), 200); |
|
assert_eq!(resp.text()?, "This is index.html"); |
|
Ok(()) |
|
} |
|
|
|
#[rstest] |
|
fn path_prefix_propfind( |
|
#[with(&["--path-prefix", "xyz"])] server: TestServer, |
|
) -> Result<(), Error> { |
|
let resp = fetch!(b"PROPFIND", format!("{}{}", server.url(), "xyz")).send()?; |
|
let text = resp.text()?; |
|
assert!(text.contains("<D:href>/xyz/</D:href>")); |
|
Ok(()) |
|
} |
|
|
|
#[rstest] |
|
#[case("index.html")] |
|
fn serve_single_file(tmpdir: TempDir, port: u16, #[case] file: &str) -> Result<(), Error> { |
|
let mut child = Command::cargo_bin("dufs")? |
|
.arg(tmpdir.path().join(file)) |
|
.arg("-p") |
|
.arg(port.to_string()) |
|
.stdout(Stdio::piped()) |
|
.spawn()?; |
|
|
|
wait_for_port(port); |
|
|
|
let resp = reqwest::blocking::get(format!("http://localhost:{}/index.html", port))?; |
|
assert_eq!(resp.text()?, "This is index.html"); |
|
|
|
child.kill()?; |
|
Ok(()) |
|
}
|
|
|