File

spec/net_http_parser_spec.lua @ 10699:fd77b6cec38d 0.11

mod_admin_telnet: Handle unavailable cipher info (fixes #1510) The LuaSec :info() method gathers info using the OpenSSL function SSL_get_current_cipher(). Documentation for this function states that it may return NULL if no session has been established (yet). If so, the LuaSec functions wrapping this return nil, triggering a nil-indexing error in mod_admin_telnet.
author Kim Alvefur <zash@zash.se>
date Sun, 22 Mar 2020 17:35:26 +0100
parent 8236:4878e4159e12
child 10497:a9fb553b6dbb
line wrap: on
line source

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


]]
}


local http_parser = require "net.http.parser";

describe("net.http.parser", function()
	describe("#new()", function()
		it("should work", function()
			for _, stream in ipairs(httpstreams) do
				local success;
				local function success_cb(packet)
					success = true;
				end
				stream = stream:gsub("\n", "\r\n");
				local parser = http_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_true(success);
			end
		end);
	end);
end);