From a13e8da9e787e7253826e6cfb8c158e894958823 Mon Sep 17 00:00:00 2001 From: Michael Nordmeyer Date: Wed, 5 Jul 2023 12:03:05 +0200 Subject: [PATCH] Adds tests for secrets serving --- tests/data/content/.meta | 2 ++ tests/data/content/.servable-secret | 0 tests/data/content/.well-known/servable-secret | 0 tests/tests.rs | 18 +++++++++++++++++- 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 tests/data/content/.servable-secret create mode 100644 tests/data/content/.well-known/servable-secret diff --git a/tests/data/content/.meta b/tests/data/content/.meta index d6e931a..409bbb8 100644 --- a/tests/data/content/.meta +++ b/tests/data/content/.meta @@ -8,3 +8,5 @@ test.gmi: ;lang=en ;charset=us-ascii gone.txt: 52 This file is no longer available. # test setting data for files in other directories example.com/index.gmi: ;lang=en-US +.servable-secret: text/plain +.well-known/servable-secret: text/plain diff --git a/tests/data/content/.servable-secret b/tests/data/content/.servable-secret new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/content/.well-known/servable-secret b/tests/data/content/.well-known/servable-secret new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests.rs b/tests/tests.rs index de3ca9e..7545341 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -451,7 +451,7 @@ fn port_check_skipped() { #[test] /// - status for paths with hidden segments is "gone" if file does not exist fn secret_nonexistent() { - let page = get(&[], "gemini://localhost/.secret").expect("could not get page"); + let page = get(&[], "gemini://localhost/.non-existing-secret").expect("could not get page"); assert_eq!(page.header.status, Status::Gone); } @@ -472,6 +472,22 @@ fn serve_secret() { assert_eq!(page.header.status, Status::Success); } +#[test] +/// - secret file served if path is in sidecar +fn serve_secret_meta_config() { + let page = get(&[], "gemini://localhost/.servable-secret").expect("could not get page"); + + assert_eq!(page.header.status, Status::Success); +} + +#[test] +/// - secret file served if path with subdir is in sidecar +fn serve_secret_meta_config_subdir() { + let page = get(&["-C"], "gemini://localhost/.well-known/servable-secret").expect("could not get page"); + + assert_eq!(page.header.status, Status::Success); +} + #[test] /// - directory traversal attacks using percent-encoded path separators /// fail (this addresses a previous vulnerability)