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:
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() {