diff options
author | Sven-Hendrik Haase <svenstaro@gmail.com> | 2021-08-27 02:51:15 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-27 02:51:15 +0000 |
commit | 96f68cfb7156ad1fccdb8718706401443fe5d03a (patch) | |
tree | 1633c19d861995145adccebf89cbd14889a6e967 /tests/tls.rs | |
parent | Golf tests a bit more (diff) | |
parent | Fix accidental formatting (diff) | |
download | miniserve-96f68cfb7156ad1fccdb8718706401443fe5d03a.tar.gz miniserve-96f68cfb7156ad1fccdb8718706401443fe5d03a.zip |
Merge pull request #576 from svenstaro/add-rustls-support
Add TLS support via rustls (fixes #18)
Diffstat (limited to 'tests/tls.rs')
-rw-r--r-- | tests/tls.rs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/tls.rs b/tests/tls.rs new file mode 100644 index 0000000..2464e1f --- /dev/null +++ b/tests/tls.rs @@ -0,0 +1,53 @@ +mod fixtures; + +use assert_cmd::Command; +use fixtures::{server, Error, TestServer, FILES}; +use predicates::str::contains; +use reqwest::blocking::ClientBuilder; +use rstest::rstest; +use select::{document::Document, node::Node}; + +/// Can start the server with TLS and receive encrypted responses. +#[rstest] +fn tls_works( + #[with(&[ + "--tls-cert", "tests/data/cert.pem", + "--tls-key", "tests/data/key.pem" + ])] + server: TestServer, +) -> Result<(), Error> { + let client = ClientBuilder::new() + .danger_accept_invalid_certs(true) + .build()?; + let body = client.get(server.url()).send()?.error_for_status()?; + let parsed = Document::from_read(body)?; + for &file in FILES { + assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); + } + + Ok(()) +} + +/// Wrong path for cert throws error. +#[rstest] +fn wrong_path_cert() -> Result<(), Error> { + Command::cargo_bin("miniserve")? + .args(&["--tls-cert", "wrong", "--tls-key", "tests/data/key.pem"]) + .assert() + .failure() + .stderr(contains("Error: Couldn't access TLS certificate \"wrong\"")); + + Ok(()) +} + +/// Wrong paths for key throws errors. +#[rstest] +fn wrong_path_key() -> Result<(), Error> { + Command::cargo_bin("miniserve")? + .args(&["--tls-cert", "tests/data/cert.pem", "--tls-key", "wrong"]) + .assert() + .failure() + .stderr(contains("Error: Couldn't access TLS key \"wrong\"")); + + Ok(()) +} |