f8ea41638f
The access level path control used by dufs has two disadvantages: 1. One path cannot support multiple users 2. It is very troublesome to set multiple paths for one user So it needs to be refactored. The new auth is account based, it closes #207, closes #208. BREAKING CHANGE: new auth
60 lines
1.9 KiB
Rust
60 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:{port}/index.html"))?;
|
|
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:{port}/xyz"))?;
|
|
assert_eq!(resp.text()?, "This is index.html");
|
|
let resp = reqwest::blocking::get(format!("http://localhost:{port}/xyz/"))?;
|
|
assert_eq!(resp.text()?, "This is index.html");
|
|
let resp = reqwest::blocking::get(format!("http://localhost:{port}/xyz/index.html"))?;
|
|
assert_eq!(resp.text()?, "This is index.html");
|
|
let resp = reqwest::blocking::get(format!("http://localhost:{port}"))?;
|
|
assert_eq!(resp.status(), 403);
|
|
|
|
child.kill()?;
|
|
Ok(())
|
|
}
|