From f6539a9a68a6eb2c3a23906282e1b7582249f9be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sun, 19 Nov 2017 22:04:48 +0100 Subject: Move tests from old http suite to rfc7230 suite --- test/rfc7230_SUITE.erl | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'test/rfc7230_SUITE.erl') diff --git a/test/rfc7230_SUITE.erl b/test/rfc7230_SUITE.erl index 5199795..d14cc38 100644 --- a/test/rfc7230_SUITE.erl +++ b/test/rfc7230_SUITE.erl @@ -764,8 +764,19 @@ limit_header_value(Config) -> %@todo %The normal procedure for parsing headers is to read each header %field into a hash table by field name until the empty line. (RFC7230 3) -% -%reject_duplicate_content_length_header(Config) -> + +reject_duplicate_content_length_header(Config) -> + doc("Requests with duplicate content-length headers must be rejected " + "with a 400 status code and the closing of the connection. (RFC7230 3.3.2)"), + #{code := 400, client := Client} = do_raw(Config, [ + "POST / HTTP/1.1\r\n" + "Host: localhost\r\n" + "Content-length: 12\r\n" + "Content-length: 12\r\n" + "\r\n" + "Hello world!"]), + {error, closed} = raw_recv(Client, 0, 1000). + %reject_duplicate_host_header(Config) -> %Requests with duplicate content-length or host headers must be rejected %with a 400 status code and the closing of the connection. (RFC7230 3.3.2) @@ -854,11 +865,25 @@ limit_header_value(Config) -> %``` %Content-Length = 1*DIGIT %``` -% -%reject_invalid_content_length(Config) -> -%A request with an invalid content-length header must be rejected -%with a 400 status code and the closing of the connection. (RFC7230 3.3.3) -% + +reject_invalid_content_length(Config) -> + doc("A request with an invalid content-length header must be rejected " + "with a 400 status code and the closing of the connection. (RFC7230 3.3.3)"), + #{code := 400, client := Client1} = do_raw(Config, [ + "POST / HTTP/1.1\r\n" + "Host: localhost\r\n" + "Content-length: 12,12\r\n" + "\r\n" + "Hello world!"]), + {error, closed} = raw_recv(Client1, 0, 1000), + #{code := 400, client := Client2} = do_raw(Config, [ + "POST / HTTP/1.1\r\n" + "Host: localhost\r\n" + "Content-length: NaN\r\n" + "\r\n" + "Hello world!"]), + {error, closed} = raw_recv(Client2, 0, 1000). + %@todo %The content-length header ranges from 0 to infinity. Requests %with a message body too large must be rejected with a 413 status -- cgit v1.2.3