agate

Simple gemini server for static files
git clone https://github.com/mbrubeck/agate.git
Log | Files | Refs | README

commit a13e8da9e787e7253826e6cfb8c158e894958823
parent 5f9761d907d82fa886b826c3d57e2f3a85f0e7d2
Author: Michael Nordmeyer <michaelnordmeyer@users.noreply.github.com>
Date:   Wed,  5 Jul 2023 12:03:05 +0200

Adds tests for secrets serving

Diffstat:
Mtests/data/content/.meta | 2++
Atests/data/content/.servable-secret | 0
Atests/data/content/.well-known/servable-secret | 0
Mtests/tests.rs | 18+++++++++++++++++-
4 files changed, 19 insertions(+), 1 deletion(-)

diff --git 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 diff --git a/tests/data/content/.well-known/servable-secret b/tests/data/content/.well-known/servable-secret diff --git 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); } @@ -473,6 +473,22 @@ fn serve_secret() { } #[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) fn directory_traversal_regression() {