0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00

Move tests from old http suite to rfc7230 suite

This commit is contained in:
Loïc Hoguin 2017-11-19 22:04:48 +01:00
parent 8be803cb07
commit f6539a9a68
No known key found for this signature in database
GPG key ID: 8A9DF795F6FED764
3 changed files with 32 additions and 19 deletions

View file

@ -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