tests: Add basic test for net.http.parser
authorKim Alvefur <zash@zash.se>
Tue, 12 Jul 2016 11:59:02 +0000 (13:59 +0200)
committerKim Alvefur <zash@zash.se>
Tue, 12 Jul 2016 11:59:02 +0000 (13:59 +0200)
tests/test.lua
tests/test_net_http_parser.lua [new file with mode: 0644]

index 9ab2cad87d80c827025b0831c0d9e3c6efa36f97..78eb01343f57e13e12a9f28395400ac26395a5cc 100644 (file)
@@ -27,6 +27,7 @@ function run_all_tests()
        dotest "util.random"
        dotest "util.xml"
        dotest "util.xmppstream"
+       dotest "net.http.parser"
 
        dosingletest("test_sasl.lua", "latin1toutf8");
        dosingletest("test_utf8.lua", "valid");
diff --git a/tests/test_net_http_parser.lua b/tests/test_net_http_parser.lua
new file mode 100644 (file)
index 0000000..1157b5a
--- /dev/null
@@ -0,0 +1,47 @@
+local httpstreams = { [[
+GET / HTTP/1.1
+Host: example.com
+
+]], [[
+HTTP/1.1 200 OK
+Content-Length: 0
+
+]], [[
+HTTP/1.1 200 OK
+Content-Length: 7
+
+Hello
+HTTP/1.1 200 OK
+Transfer-Encoding: chunked
+
+1
+H
+1
+e
+2
+ll
+1
+o
+0
+
+
+]]
+}
+
+function new(new)
+
+       for _, stream in ipairs(httpstreams) do
+               local success;
+               local function success_cb(packet)
+                       success = true;
+               end
+               stream = stream:gsub("\n", "\r\n");
+               local parser = new(success_cb, error, stream:sub(1,4) == "HTTP" and "client" or "server")
+               for chunk in stream:gmatch("..?.?") do
+                       parser:feed(chunk);
+               end
+
+               assert_is(success);
+       end
+
+end