diff --git a/tests/data/dirlist-preamble/#yeah b/tests/data/dirlist-preamble/#yeah new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/dirlist-preamble/.directory-listing-ok b/tests/data/dirlist-preamble/.directory-listing-ok new file mode 100644 index 0000000..2f67267 --- /dev/null +++ b/tests/data/dirlist-preamble/.directory-listing-ok @@ -0,0 +1 @@ +This is a directory listing diff --git a/tests/data/dirlist-preamble/a b/tests/data/dirlist-preamble/a new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/dirlist-preamble/b b/tests/data/dirlist-preamble/b new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/dirlist-preamble/huh? b/tests/data/dirlist-preamble/huh? new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/dirlist-preamble/wao spaces b/tests/data/dirlist-preamble/wao spaces new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/dirlist/.directory-listing-ok b/tests/data/dirlist/.directory-listing-ok new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/dirlist/a b/tests/data/dirlist/a new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/dirlist/b b/tests/data/dirlist/b new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests.rs b/tests/tests.rs index 2ea4433..5cba88a 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -669,3 +669,53 @@ mod multicert { server.stop().unwrap(); } } + +mod directory_listing { + use super::*; + + #[test] + /// - shows directory listing when enabled + /// - shows directory listing preamble correctly + /// - encodes link URLs correctly + fn with_preamble() { + let page = get( + &["--addr", "[::]:1990", "--content", "dirlist-preamble"], + addr(1990), + "gemini://localhost/", + ) + .expect("could not get page"); + + assert_eq!( + page.header, + Header { + status: Status::Success, + meta: "text/gemini".into(), + } + ); + + assert_eq!( + page.body, + Some("This is a directory listing\n=> %23yeah #yeah\n=> a\n=> b\n=> huh%3F huh?\n=> wao%20spaces wao spaces\n".into()) + ); + } + + #[test] + fn empty_preamble() { + let page = get( + &["--addr", "[::]:1991", "--content", "dirlist"], + addr(1991), + "gemini://localhost/", + ) + .expect("could not get page"); + + assert_eq!( + page.header, + Header { + status: Status::Success, + meta: "text/gemini".into(), + } + ); + + assert_eq!(page.body, Some("=> a\n=> b\n".into()),); + } +}