61 lines
1.9 KiB
Rust
61 lines
1.9 KiB
Rust
|
//! Run file server with different args
|
||
|
|
||
|
mod fixtures;
|
||
|
mod utils;
|
||
|
|
||
|
use assert_cmd::prelude::*;
|
||
|
use assert_fs::fixture::TempDir;
|
||
|
use fixtures::{port, tmpdir, wait_for_port, Error};
|
||
|
use rstest::rstest;
|
||
|
use std::process::{Command, Stdio};
|
||
|
|
||
|
#[rstest]
|
||
|
#[case("index.html")]
|
||
|
fn 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:{}", port))?;
|
||
|
assert_eq!(resp.text()?, "This is index.html");
|
||
|
let resp = reqwest::blocking::get(format!("http://localhost:{}/", port))?;
|
||
|
assert_eq!(resp.text()?, "This is index.html");
|
||
|
let resp = reqwest::blocking::get(format!("http://localhost:{}/index.html", port))?;
|
||
|
assert_eq!(resp.text()?, "This is index.html");
|
||
|
|
||
|
child.kill()?;
|
||
|
Ok(())
|
||
|
}
|
||
|
|
||
|
#[rstest]
|
||
|
#[case("index.html")]
|
||
|
fn path_prefix_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())
|
||
|
.arg("--path-prefix")
|
||
|
.arg("xyz")
|
||
|
.stdout(Stdio::piped())
|
||
|
.spawn()?;
|
||
|
|
||
|
wait_for_port(port);
|
||
|
|
||
|
let resp = reqwest::blocking::get(format!("http://localhost:{}/xyz", port))?;
|
||
|
assert_eq!(resp.text()?, "This is index.html");
|
||
|
let resp = reqwest::blocking::get(format!("http://localhost:{}/xyz/", port))?;
|
||
|
assert_eq!(resp.text()?, "This is index.html");
|
||
|
let resp = reqwest::blocking::get(format!("http://localhost:{}/xyz/index.html", port))?;
|
||
|
assert_eq!(resp.text()?, "This is index.html");
|
||
|
let resp = reqwest::blocking::get(format!("http://localhost:{}", port))?;
|
||
|
assert_eq!(resp.status(), 404);
|
||
|
|
||
|
child.kill()?;
|
||
|
Ok(())
|
||
|
}
|