aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/config-example/domain.test/index.html1
-rw-r--r--tests/config-example/dynamic.test/hello-there.txt0
-rw-r--r--tests/config-example/main.rs50
-rw-r--r--tests/config-example/narchttpd.rhai17
-rw-r--r--tests/config-example/sub.domain.test/index.html1
5 files changed, 69 insertions, 0 deletions
diff --git a/tests/config-example/domain.test/index.html b/tests/config-example/domain.test/index.html
new file mode 100644
index 0000000..f583528
--- /dev/null
+++ b/tests/config-example/domain.test/index.html
@@ -0,0 +1 @@
+<p>Hello from domain.test</p>
diff --git a/tests/config-example/dynamic.test/hello-there.txt b/tests/config-example/dynamic.test/hello-there.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/config-example/dynamic.test/hello-there.txt
diff --git a/tests/config-example/main.rs b/tests/config-example/main.rs
new file mode 100644
index 0000000..ed0f863
--- /dev/null
+++ b/tests/config-example/main.rs
@@ -0,0 +1,50 @@
+use std::env;
+use std::io::Read;
+use std::process::Command;
+
+use hyper::{body::aggregate, body::Buf, Body, Client, Method, Request, Uri};
+
+#[tokio::test]
+async fn main() {
+ let narchttpd_path = env!("CARGO_BIN_EXE_narchttpd");
+ let mut narchttpd = Command::new(narchttpd_path).spawn().unwrap();
+
+ let client = Client::new();
+
+ let get = |uri: &'static str| async {
+ let uri: Uri = uri.parse().unwrap();
+ let mut uri_parts = uri.into_parts();
+ let original_host = uri_parts.authority.take().unwrap();
+ uri_parts.authority = "127.0.0.1:1337".parse().ok();
+ let real_uri = Uri::from_parts(uri_parts).unwrap();
+ let req = Request::builder()
+ .method(Method::GET)
+ .uri(real_uri)
+ .header(hyper::header::HOST, original_host.as_str())
+ .body(Body::empty())
+ .unwrap();
+ let res = client.request(req).await.unwrap();
+ assert!(res.status().is_success());
+ let body = aggregate(res.into_body()).await.unwrap();
+ let mut result = String::new();
+ body.reader().read_to_string(&mut result).unwrap();
+ result
+ };
+
+ assert_eq!(
+ get("http://domain.test").await,
+ "<p>Hello from domain.test</p>"
+ );
+ assert_eq!(
+ get("http://alternate-domain.test").await,
+ "<p>Hello from domain.test</p>"
+ );
+ assert_eq!(
+ get("http://sub.domain.test").await,
+ "<p>Hello from sub.domain.test</p>"
+ );
+ assert!(get("http://dynamic.test").await.contains("hello-there.txt"));
+ assert_eq!(get("http://function.test").await, "OK");
+
+ narchttpd.kill().unwrap();
+}
diff --git a/tests/config-example/narchttpd.rhai b/tests/config-example/narchttpd.rhai
new file mode 100644
index 0000000..c876bc1
--- /dev/null
+++ b/tests/config-example/narchttpd.rhai
@@ -0,0 +1,17 @@
+http_ports = [1337];
+https_ports = [];
+
+domain(["domain.test", "alternate-domain.test"], serve_static(#{
+ root: "./domain.test",
+}));
+domain("sub.domain.test", serve_static(#{
+ root: "./sub.domain.test",
+}));
+domain("dynamic.test", proxy_child(#{
+ command: |port| "python -m http.server " + port,
+ in_dir: "./dynamic.test",
+}));
+domain("function.test", |request| #{
+ status: 200,
+ body: "OK",
+});
diff --git a/tests/config-example/sub.domain.test/index.html b/tests/config-example/sub.domain.test/index.html
new file mode 100644
index 0000000..9031401
--- /dev/null
+++ b/tests/config-example/sub.domain.test/index.html
@@ -0,0 +1 @@
+<p>Hello from sub.domain.test</p>