commit 9925d927a45b31f6a6d2e7ff7f118ad8f83cc145
parent 3c6684d54c3b065467f393d8d252ecbb1e915dfa
Author: Johann150 <johann.galle@protonmail.com>
Date: Sat, 20 Feb 2021 11:14:14 +0100
add more tests
Diffstat:
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);
}