diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auth.rs | 8 | ||||
-rw-r--r-- | tests/auth_file.rs | 4 | ||||
-rw-r--r-- | tests/fixtures/mod.rs | 30 | ||||
-rw-r--r-- | tests/serve_request.rs | 26 | ||||
-rw-r--r-- | tests/upload_files.rs | 8 | ||||
-rw-r--r-- | tests/webdav.rs | 6 |
6 files changed, 28 insertions, 54 deletions
diff --git a/tests/auth.rs b/tests/auth.rs index 6c5a6ad..545bcbf 100644 --- a/tests/auth.rs +++ b/tests/auth.rs @@ -5,7 +5,7 @@ use select::{document::Document, predicate::Text}; mod fixtures; -use crate::fixtures::{server, server_no_stderr, Error, FILES}; +use crate::fixtures::{server, Error, FILES}; #[rstest( cli_auth_arg, client_username, client_password, @@ -75,7 +75,7 @@ fn auth_rejects( client_username: &str, client_password: &str, ) -> Result<(), Error> { - let server = server_no_stderr(&["-a", cli_auth_arg]); + let server = server(&["-a", cli_auth_arg]); let client = Client::new(); let status = client .get(server.url()) @@ -138,7 +138,7 @@ fn auth_multiple_accounts_pass(username: &str, password: &str) -> Result<(), Err #[rstest] fn auth_multiple_accounts_wrong_username() -> Result<(), Error> { - let server = server_no_stderr(ACCOUNTS); + let server = server(ACCOUNTS); let client = Client::new(); let status = client @@ -163,7 +163,7 @@ fn auth_multiple_accounts_wrong_username() -> Result<(), Error> { case("usr5", "pwd0") )] fn auth_multiple_accounts_wrong_password(username: &str, password: &str) -> Result<(), Error> { - let server = server_no_stderr(ACCOUNTS); + let server = server(ACCOUNTS); let client = Client::new(); let status = client diff --git a/tests/auth_file.rs b/tests/auth_file.rs index 10a94ed..eb40d2c 100644 --- a/tests/auth_file.rs +++ b/tests/auth_file.rs @@ -4,7 +4,7 @@ use select::{document::Document, predicate::Text}; mod fixtures; -use crate::fixtures::{server, server_no_stderr, Error, FILES}; +use crate::fixtures::{server, Error, FILES}; #[rstest( cli_auth_file_arg, @@ -51,7 +51,7 @@ fn auth_file_rejects( client_username: &str, client_password: &str, ) -> Result<(), Error> { - let server = server_no_stderr(&["--auth-file", cli_auth_file_arg]); + let server = server(&["--auth-file", cli_auth_file_arg]); let client = Client::new(); let status = client .get(server.url()) diff --git a/tests/fixtures/mod.rs b/tests/fixtures/mod.rs index a96a5b7..f95d4f6 100644 --- a/tests/fixtures/mod.rs +++ b/tests/fixtures/mod.rs @@ -121,34 +121,8 @@ where .arg("-p") .arg(port.to_string()) .args(args.clone()) - .stdout(Stdio::null()) - .spawn() - .expect("Couldn't run test binary"); - let is_tls = args - .into_iter() - .any(|x| x.as_ref().to_str().unwrap().contains("tls")); - - wait_for_port(port); - TestServer::new(port, tmpdir, child, is_tls) -} - -/// Same as `server()` but ignore stderr -#[fixture] -pub fn server_no_stderr<I>(#[default(&[] as &[&str])] args: I) -> TestServer -where - I: IntoIterator + Clone, - I::Item: AsRef<std::ffi::OsStr>, -{ - let port = port(); - let tmpdir = tmpdir(); - let child = Command::cargo_bin("miniserve") - .expect("Couldn't find test binary") - .arg(tmpdir.path()) - .arg("-p") - .arg(port.to_string()) - .args(args.clone()) - .stdout(Stdio::null()) - .stderr(Stdio::null()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) .spawn() .expect("Couldn't run test binary"); let is_tls = args diff --git a/tests/serve_request.rs b/tests/serve_request.rs index 3f8e27a..a53abf9 100644 --- a/tests/serve_request.rs +++ b/tests/serve_request.rs @@ -13,8 +13,8 @@ use select::{document::Document, node::Node, predicate::Attr}; mod fixtures; use crate::fixtures::{ - port, server, server_no_stderr, tmpdir, Error, TestServer, DIRECTORIES, DIRECTORY_SYMLINK, - FILES, FILE_SYMLINK, HIDDEN_DIRECTORIES, HIDDEN_FILES, + port, server, tmpdir, Error, TestServer, DIRECTORIES, DIRECTORY_SYMLINK, FILES, FILE_SYMLINK, + HIDDEN_DIRECTORIES, HIDDEN_FILES, }; #[rstest] @@ -229,8 +229,8 @@ fn serves_requests_custom_index_notice(tmpdir: TempDir, port: u16) -> Result<(), } #[rstest] -#[case(server_no_stderr(&["--index", FILES[0]]))] -#[case(server_no_stderr(&["--index", "does-not-exist.html"]))] +#[case(server(&["--index", FILES[0]]))] +#[case(server(&["--index", "does-not-exist.html"]))] fn index_fallback_to_listing(#[case] server: TestServer) -> Result<(), Error> { // If index file is not found, show directory listing instead both cases should return `Ok` reqwest::blocking::get(server.url())?.error_for_status()?; @@ -239,9 +239,9 @@ fn index_fallback_to_listing(#[case] server: TestServer) -> Result<(), Error> { } #[rstest] -#[case(server_no_stderr(&["--spa", "--index", FILES[0]]), "/")] -#[case(server_no_stderr(&["--spa", "--index", FILES[0]]), "/spa-route")] -#[case(server_no_stderr(&["--index", FILES[0]]), "/")] +#[case(server(&["--spa", "--index", FILES[0]]), "/")] +#[case(server(&["--spa", "--index", FILES[0]]), "/spa-route")] +#[case(server(&["--index", FILES[0]]), "/")] fn serve_index_instead_of_404_in_spa_mode( #[case] server: TestServer, #[case] url: &str, @@ -257,9 +257,9 @@ fn serve_index_instead_of_404_in_spa_mode( } #[rstest] -#[case(server_no_stderr(&["--pretty-urls", "--index", FILES[1]]), "/")] -#[case(server_no_stderr(&["--pretty-urls", "--index", FILES[1]]), "test.html")] -#[case(server_no_stderr(&["--pretty-urls", "--index", FILES[1]]), "test")] +#[case(server(&["--pretty-urls", "--index", FILES[1]]), "/")] +#[case(server(&["--pretty-urls", "--index", FILES[1]]), "test.html")] +#[case(server(&["--pretty-urls", "--index", FILES[1]]), "test")] fn serve_file_instead_of_404_in_pretty_urls_mode( #[case] server: TestServer, #[case] url: &str, @@ -290,9 +290,9 @@ fn serves_requests_with_route_prefix(#[case] server: TestServer) -> Result<(), E } #[rstest] -#[case(server_no_stderr(&[] as &[&str]), "/[a-f0-9]+")] -#[case(server_no_stderr(&["--random-route"]), "/[a-f0-9]+")] -#[case(server_no_stderr(&["--route-prefix", "foobar"]), "/foobar/[a-f0-9]+")] +#[case(server(&[] as &[&str]), "/[a-f0-9]+")] +#[case(server(&["--random-route"]), "/[a-f0-9]+")] +#[case(server(&["--route-prefix", "foobar"]), "/foobar/[a-f0-9]+")] fn serves_requests_static_file_check( #[case] server: TestServer, #[case] static_file_pattern: String, diff --git a/tests/upload_files.rs b/tests/upload_files.rs index 72548e4..5fdf2cf 100644 --- a/tests/upload_files.rs +++ b/tests/upload_files.rs @@ -9,7 +9,7 @@ use select::predicate::{Attr, Text}; mod fixtures; -use crate::fixtures::{server, server_no_stderr, tmpdir, Error, TestServer}; +use crate::fixtures::{server, tmpdir, Error, TestServer}; #[rstest] fn uploading_files_works(#[with(&["-u"])] server: TestServer) -> Result<(), Error> { @@ -87,8 +87,8 @@ fn uploading_files_is_prevented(server: TestServer) -> Result<(), Error> { /// This test runs the server with --allowed-upload-dir argument and /// checks that file upload to a different directory is actually prevented. #[rstest] -#[case(server_no_stderr(&["-u", "someDir"]))] -#[case(server_no_stderr(&["-u", "someDir/some_sub_dir"]))] +#[case(server(&["-u", "someDir"]))] +#[case(server(&["-u", "someDir/some_sub_dir"]))] fn uploading_files_is_restricted(#[case] server: TestServer) -> Result<(), Error> { let test_file_name = "uploaded test file.txt"; @@ -221,7 +221,7 @@ fn prevent_path_traversal_attacks( /// See https://github.com/svenstaro/miniserve/issues/466 #[rstest] #[case(server(&["-u"]), true)] -#[case(server_no_stderr(&["-u", "--no-symlinks"]), false)] +#[case(server(&["-u", "--no-symlinks"]), false)] fn upload_to_symlink_directory( #[case] server: TestServer, #[case] ok: bool, diff --git a/tests/webdav.rs b/tests/webdav.rs index eb97e3c..09d04e9 100644 --- a/tests/webdav.rs +++ b/tests/webdav.rs @@ -13,8 +13,8 @@ use rstest::rstest; mod fixtures; use crate::fixtures::{ - server, server_no_stderr, tmpdir, Error, TestServer, DIRECTORIES, DIRECTORY_SYMLINK, FILES, - FILE_SYMLINK, HIDDEN_DIRECTORIES, HIDDEN_FILES, + server, tmpdir, Error, TestServer, DIRECTORIES, DIRECTORY_SYMLINK, FILES, FILE_SYMLINK, + HIDDEN_DIRECTORIES, HIDDEN_FILES, }; #[rstest] @@ -90,7 +90,7 @@ fn webdav_respects_hidden_flag( #[rstest] #[case(server(&["--enable-webdav"]), true)] #[should_panic] -#[case(server_no_stderr(&["--enable-webdav", "--no-symlinks"]), false)] +#[case(server(&["--enable-webdav", "--no-symlinks"]), false)] fn webdav_respects_no_symlink_flag(#[case] server: TestServer, #[case] symlinks_should_show: bool) { let list = list_webdav(server.url(), "/").unwrap(); |