aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorCalvin Rose <calsrose@gmail.com>2021-09-19 14:11:46 -0500
committerCalvin Rose <calsrose@gmail.com>2021-09-19 14:11:46 -0500
commit3e72c69de9df465aacab7bed59f627327e140c0f (patch)
treed5e87085d1f1ea6b9ef662fc4d3a06c65186265f /test
parentMerge pull request #44 from subsetpark/streams (diff)
Add HTTP module.
Diffstat (limited to 'test')
-rw-r--r--test/suite0000.janet (renamed from test/suite0.janet)0
-rw-r--r--test/suite0001.janet (renamed from test/suite1.janet)0
-rw-r--r--test/suite0002.janet (renamed from test/suite2.janet)0
-rw-r--r--test/suite0003.janet (renamed from test/suite3.janet)0
-rw-r--r--test/suite0004.janet (renamed from test/suite4.janet)0
-rw-r--r--test/suite0005.janet (renamed from test/suite5.janet)0
-rw-r--r--test/suite0006.janet (renamed from test/suite6.janet)0
-rw-r--r--test/suite0007.janet (renamed from test/suite7.janet)0
-rw-r--r--test/suite0008.janet (renamed from test/suite8.janet)0
-rw-r--r--test/suite0009.janet (renamed from test/suite9.janet)0
-rw-r--r--test/suite0010.janet (renamed from test/suite10.janet)0
-rw-r--r--test/suite0011.janet (renamed from test/suite11.janet)0
-rw-r--r--test/suite0012.janet49
13 files changed, 49 insertions, 0 deletions
diff --git a/test/suite0.janet b/test/suite0000.janet
index b2461ee..b2461ee 100644
--- a/test/suite0.janet
+++ b/test/suite0000.janet
diff --git a/test/suite1.janet b/test/suite0001.janet
index c8f4a1f..c8f4a1f 100644
--- a/test/suite1.janet
+++ b/test/suite0001.janet
diff --git a/test/suite2.janet b/test/suite0002.janet
index d978a66..d978a66 100644
--- a/test/suite2.janet
+++ b/test/suite0002.janet
diff --git a/test/suite3.janet b/test/suite0003.janet
index f4a2dce..f4a2dce 100644
--- a/test/suite3.janet
+++ b/test/suite0003.janet
diff --git a/test/suite4.janet b/test/suite0004.janet
index f76fe3d..f76fe3d 100644
--- a/test/suite4.janet
+++ b/test/suite0004.janet
diff --git a/test/suite5.janet b/test/suite0005.janet
index d0d0b75..d0d0b75 100644
--- a/test/suite5.janet
+++ b/test/suite0005.janet
diff --git a/test/suite6.janet b/test/suite0006.janet
index 02a82c2..02a82c2 100644
--- a/test/suite6.janet
+++ b/test/suite0006.janet
diff --git a/test/suite7.janet b/test/suite0007.janet
index 86c8d9c..86c8d9c 100644
--- a/test/suite7.janet
+++ b/test/suite0007.janet
diff --git a/test/suite8.janet b/test/suite0008.janet
index 2cdb843..2cdb843 100644
--- a/test/suite8.janet
+++ b/test/suite0008.janet
diff --git a/test/suite9.janet b/test/suite0009.janet
index b04fbf7..b04fbf7 100644
--- a/test/suite9.janet
+++ b/test/suite0009.janet
diff --git a/test/suite10.janet b/test/suite0010.janet
index 05e58d9..05e58d9 100644
--- a/test/suite10.janet
+++ b/test/suite0010.janet
diff --git a/test/suite11.janet b/test/suite0011.janet
index 96a71a5..96a71a5 100644
--- a/test/suite11.janet
+++ b/test/suite0011.janet
diff --git a/test/suite0012.janet b/test/suite0012.janet
new file mode 100644
index 0000000..d028c66
--- /dev/null
+++ b/test/suite0012.janet
@@ -0,0 +1,49 @@
+(use ../spork/test)
+(import ../spork/http :as http)
+
+(start-suite 12)
+
+(defn- test-http-item
+ [x
+ expected-method
+ expected-path
+ expected-status
+ expected-headers]
+ (assert (not= :error x) "invalid http")
+ (when (not= :error x)
+ (assert (= expected-path (in x :path))
+ (string "bad path, expected " expected-path ", got " (in x :path)))
+ (assert (= expected-headers (freeze (in x :headers)))
+ (string/format "bad headers: %.99p" (freeze (in x :headers))))
+ (assert (= expected-method (in x :method))
+ (string "bad status, expected " expected-status ", got " (in x :status)))
+ (assert (= expected-method (in x :method))
+ (string "bad method, expected " expected-method ", got " (in x :method)))))
+
+(defn- test-http-parse
+ [parser
+ payload
+ expected-method
+ expected-path
+ expected-status
+ expected-headers]
+ (def x (parser nil payload))
+ (test-http-item x expected-method expected-path expected-status expected-headers))
+
+(test-http-parse http/read-request "GET / HTTP/1.0\r\n\r\n" "GET" "/" nil {})
+(test-http-parse http/read-request "GET /abc.janet HTTP/1.0\r\n\r\n" "GET" "/abc.janet" nil {})
+(test-http-parse http/read-request "GET /abc.janet HTTP/1.0\r\na:b\r\n\r\n" "GET" "/abc.janet" nil {"a" "b"})
+(test-http-parse http/read-request "POST /abc.janet HTTP/1.0\r\na:b\r\n\r\nextraextra" "POST" "/abc.janet" nil {"a" "b"})
+(test-http-parse http/read-response "HTTP/1.0 200 OK\r\na:b\r\n\r\nextraextra" nil nil 200 {"a" "b"})
+
+(defn simple-server
+ [req]
+ (case (in req :method)
+ "GET" {:status 200 :body (in req :path)}
+ "POST" {:status 200 :body (http/read-body req)}))
+
+(with [server (http/server simple-server "127.0.0.1" 9816)]
+ (test-http-item (http/request "GET" "http://127.0.0.1:9816") nil nil 200
+ {"content-length" "1"}))
+
+(end-suite)