agate

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

commit 9925d927a45b31f6a6d2e7ff7f118ad8f83cc145
parent 3c6684d54c3b065467f393d8d252ecbb1e915dfa
Author: Johann150 <johann.galle@protonmail.com>
Date:   Sat, 20 Feb 2021 11:14:14 +0100

add more tests

Diffstat:
MCargo.lock | 5++---
MCargo.toml | 2+-
Mtests/data/content/.meta | 2+-
Atests/data/content/test | 0
Mtests/tests.rs | 150++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
5 files changed, 153 insertions(+), 6 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -147,9 +147,8 @@ dependencies = [ [[package]] name = "gemini-fetch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9dc5c196fd09461b039356a198fb59d55a8edcefdc5dd81ca763c0e8a04625" +version = "0.2.1" +source = "git+https://github.com/Johann150/gemini-fetch.git#5b5d986a857bfb1c444892d56c1946b353987f1c" dependencies = [ "anyhow", "ring", diff --git a/Cargo.toml b/Cargo.toml @@ -27,7 +27,7 @@ configparser = "2.0" [dev-dependencies] assert_cmd = "1.0" -gemini-fetch = "0.2.0" +gemini-fetch = { version = "0.2.1", git = "https://github.com/Johann150/gemini-fetch.git" } anyhow = "1.0" [profile.release] diff --git a/tests/data/content/.meta b/tests/data/content/.meta @@ -1,5 +1,5 @@ # test setting a mime type -index.gmi: text/gemini +test: text/html # test globs and setting parameters *.de.gmi: ;lang=de # test double star globs diff --git a/tests/data/content/test b/tests/data/content/test diff --git a/tests/tests.rs b/tests/tests.rs @@ -83,6 +83,154 @@ fn index_page() { .unwrap() ) ); +} + +#[test] +fn meta() { + let page = get( + &["--addr", "[::]:1966"], + addr(1966), + "gemini://localhost/test", + ) + .expect("could not get page"); + + assert_eq!( + page.header, + Header { + status: Status::Success, + meta: "text/html".to_string(), + } + ); +} + +#[test] +fn meta_param() { + let page = get( + &["--addr", "[::]:1967"], + addr(1967), + "gemini://localhost/test.gmi", + ) + .expect("could not get page"); + + assert_eq!( + page.header, + Header { + status: Status::Success, + meta: "text/gemini;lang=en ;charset=us-ascii".to_string(), + } + ); +} + +#[test] +fn glob() { + let page = get( + &["--addr", "[::]:1968"], + addr(1968), + "gemini://localhost/test.de.gmi", + ) + .expect("could not get page"); + + assert_eq!( + page.header, + Header { + status: Status::Success, + meta: "text/gemini;lang=de".to_string(), + } + ); +} + +#[test] +fn doubleglob() { + let page = get( + &["--addr", "[::]:1969", "-C"], + addr(1969), + "gemini://localhost/testdir/a.nl.gmi", + ) + .expect("could not get page"); + + assert_eq!( + page.header, + Header { + status: Status::Success, + meta: "text/gemini;lang=nl".to_string(), + } + ); +} + +#[test] +fn full_header_preset() { + let page = get( + &["--addr", "[::]:1970"], + addr(1970), + "gemini://localhost/gone.txt", + ) + .expect("could not get page"); + + assert_eq!( + page.header, + Header { + status: Status::Gone, + meta: "This file is no longer available.".to_string(), + } + ); +} + +#[test] +fn hostname_check() { + let page = get( + &["--addr", "[::]:1971", "--hostname", "example.org"], + addr(1971), + "gemini://example.com/", + ) + .expect("could not get page"); + + assert_eq!(page.header.status, Status::ProxyRequestRefused); +} + +#[test] +fn port_check() { + let page = get( + &["--addr", "[::]:1972", "--hostname", "example.org"], + addr(1972), + "gemini://example.org:1971/", + ) + .expect("could not get page"); + + assert_eq!(page.header.status, Status::ProxyRequestRefused); +} + +#[test] +fn secret_nonexistent() { + let page = get( + &["--addr", "[::]:1973"], + addr(1973), + "gemini://localhost/.secret", + ) + .expect("could not get page"); + + assert_eq!(page.header.status, Status::Gone); +} + +#[test] +fn secret_exists() { + let page = get( + &["--addr", "[::]:1974"], + addr(1974), + "gemini://localhost/.meta", + ) + .expect("could not get page"); + + assert_eq!(page.header.status, Status::Gone); +} + +#[test] +fn serve_secret() { + let page = get( + &["--addr", "[::]:1975", "--serve-secret"], + addr(1975), + "gemini://localhost/.meta", + ) + .expect("could not get page"); - println!("{:?}", page); + assert_eq!(page.header.status, Status::Success); }