80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Rust
		
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Rust
		
	
	
mod fixtures;
 | 
						|
mod utils;
 | 
						|
 | 
						|
use fixtures::{server, Error, TestServer, DIR_NO_FOUND, DIR_NO_INDEX, FILES};
 | 
						|
use rstest::rstest;
 | 
						|
 | 
						|
#[rstest]
 | 
						|
fn render_index(#[with(&["--render-index"])] server: TestServer) -> Result<(), Error> {
 | 
						|
    let resp = reqwest::blocking::get(server.url())?;
 | 
						|
    let text = resp.text()?;
 | 
						|
    assert_eq!(text, "This is index.html");
 | 
						|
    Ok(())
 | 
						|
}
 | 
						|
 | 
						|
#[rstest]
 | 
						|
fn render_index2(#[with(&["--render-index"])] server: TestServer) -> Result<(), Error> {
 | 
						|
    let resp = reqwest::blocking::get(format!("{}{}", server.url(), DIR_NO_INDEX))?;
 | 
						|
    assert_eq!(resp.status(), 404);
 | 
						|
    Ok(())
 | 
						|
}
 | 
						|
 | 
						|
#[rstest]
 | 
						|
fn render_try_index(#[with(&["--render-try-index"])] server: TestServer) -> Result<(), Error> {
 | 
						|
    let resp = reqwest::blocking::get(server.url())?;
 | 
						|
    let text = resp.text()?;
 | 
						|
    assert_eq!(text, "This is index.html");
 | 
						|
    Ok(())
 | 
						|
}
 | 
						|
 | 
						|
#[rstest]
 | 
						|
fn render_try_index2(#[with(&["--render-try-index"])] server: TestServer) -> Result<(), Error> {
 | 
						|
    let resp = reqwest::blocking::get(format!("{}{}", server.url(), DIR_NO_INDEX))?;
 | 
						|
    let files: Vec<&str> = FILES
 | 
						|
        .iter()
 | 
						|
        .filter(|v| **v != "index.html")
 | 
						|
        .cloned()
 | 
						|
        .collect();
 | 
						|
    assert_resp_paths!(resp, files);
 | 
						|
    Ok(())
 | 
						|
}
 | 
						|
 | 
						|
#[rstest]
 | 
						|
fn render_try_index3(#[with(&["--render-try-index"])] server: TestServer) -> Result<(), Error> {
 | 
						|
    let resp = reqwest::blocking::get(format!("{}{}?zip", server.url(), DIR_NO_INDEX))?;
 | 
						|
    assert_eq!(resp.status(), 200);
 | 
						|
    assert_eq!(
 | 
						|
        resp.headers().get("content-type").unwrap(),
 | 
						|
        "application/zip"
 | 
						|
    );
 | 
						|
    Ok(())
 | 
						|
}
 | 
						|
 | 
						|
#[rstest]
 | 
						|
#[case(server(&["--render-try-index"] as &[&str]), false)]
 | 
						|
#[case(server(&["--render-try-index", "--allow-search"] as &[&str]), true)]
 | 
						|
fn render_try_index4(#[case] server: TestServer, #[case] searched: bool) -> Result<(), Error> {
 | 
						|
    let resp = reqwest::blocking::get(format!("{}{}?q={}", server.url(), DIR_NO_INDEX, "😀.bin"))?;
 | 
						|
    assert_eq!(resp.status(), 200);
 | 
						|
    let paths = utils::retrieve_index_paths(&resp.text()?);
 | 
						|
    assert!(!paths.is_empty());
 | 
						|
    assert_eq!(paths.iter().all(|v| v.contains("😀.bin")), searched);
 | 
						|
    Ok(())
 | 
						|
}
 | 
						|
 | 
						|
#[rstest]
 | 
						|
fn render_spa(#[with(&["--render-spa"])] server: TestServer) -> Result<(), Error> {
 | 
						|
    let resp = reqwest::blocking::get(server.url())?;
 | 
						|
    let text = resp.text()?;
 | 
						|
    assert_eq!(text, "This is index.html");
 | 
						|
    Ok(())
 | 
						|
}
 | 
						|
 | 
						|
#[rstest]
 | 
						|
fn render_spa2(#[with(&["--render-spa"])] server: TestServer) -> Result<(), Error> {
 | 
						|
    let resp = reqwest::blocking::get(format!("{}{}", server.url(), DIR_NO_FOUND))?;
 | 
						|
    let text = resp.text()?;
 | 
						|
    assert_eq!(text, "This is index.html");
 | 
						|
    Ok(())
 | 
						|
}
 |