Просмотр исходного кода

Rewrite the tests for header name/value limits

Putting them in the correct test suite, with the proper
documentation etc.
Loïc Hoguin 8 лет назад
Родитель
Сommit
42c95b1584
2 измененных файлов с 27 добавлено и 28 удалено
  1. 0 14
      test/http_SUITE.erl
  2. 27 14
      test/rfc7230_SUITE.erl

+ 0 - 14
test/http_SUITE.erl

@@ -307,20 +307,6 @@ echo_body(Config) ->
 	end || Size <- lists:seq(MTU - 500, MTU)],
 	ok.
 
-%% Check if sending request whose header name is bigger than 64 bytes causes 431
-echo_body_max_header_name_length(Config) ->
-	ConnPid = gun_open(Config),
-	Ref = gun:post(ConnPid, "/echo/body", [{binary:copy(<<$a>>, 32768), <<"bad">>}], << "echo=name" >>),
-	{response, fin, 431, _} = gun:await(ConnPid, Ref),
-	ok.
-
-%% Check if sending request whose header name is bigger than 64 bytes causes 431
-echo_body_max_header_value_length(Config) ->
-	ConnPid = gun_open(Config),
-	Ref = gun:post(ConnPid, "/echo/body", [{<<"bad">>, binary:copy(<<$a>>, 32768)}], << "echo=name" >>),
-	{response, fin, 431, _} = gun:await(ConnPid, Ref),
-	ok.
-
 %% Check if sending request whose size is bigger than 1000000 bytes causes 413
 echo_body_max_length(Config) ->
 	ConnPid = gun_open(Config),

+ 27 - 14
test/rfc7230_SUITE.erl

@@ -726,20 +726,33 @@ reject_invalid_whitespace_after_version(Config) ->
 %Messages that contain whitespace between the header name and
 %colon must be rejected with a 400 status code and the closing
 %of the connection. (RFC7230 3.2.4)
-%
-%limit_header_name(Config) ->
-%The header name must be subject to a configurable limit. A
-%good default is 50 characters, well above the longest registered
-%header. Such a request must be rejected with a 431 status code
-%and the closing of the connection. (RFC7230 3.2.5, RFC6585 5, IANA Message Headers registry)
-%
-%limit_header_value(Config) ->
-%The header value and the optional whitespace around it must be
-%subject to a configurable limit. There is no recommendations
-%for the default. 4096 characters is known to work well. Such
-%a request must be rejected with a 431 status code and the closing
-%of the connection. (RFC7230 3.2.5, RFC6585 5)
-%
+
+limit_header_name(Config) ->
+	doc("The header name must be subject to a configurable limit. A "
+		"good default is 50 characters, well above the longest registered "
+		"header. Such a request must be rejected with a 431 status code "
+		"and the closing of the connection. "
+		"(RFC7230 3.2.5, RFC6585 5, IANA Message Headers registry)"),
+	#{code := 431, client := Client} = do_raw(Config, [
+		"GET / HTTP/1.1\r\n"
+		"Host: localhost\r\n",
+		binary:copy(<<$a>>, 32768), ": bad\r\n"
+		"\r\n"]),
+	{error, closed} = raw_recv(Client, 0, 1000).
+
+limit_header_value(Config) ->
+	doc("The header value and the optional whitespace around it must be "
+		"subject to a configurable limit. There is no recommendations "
+		"for the default. 4096 characters is known to work well. Such "
+		"a request must be rejected with a 431 status code and the closing "
+		"of the connection. (RFC7230 3.2.5, RFC6585 5)"),
+	#{code := 431, client := Client} = do_raw(Config, [
+		"GET / HTTP/1.1\r\n"
+		"Host: localhost\r\n"
+		"bad: ", binary:copy(<<$a>>, 32768), "\r\n"
+		"\r\n"]),
+	{error, closed} = raw_recv(Client, 0, 1000).
+
 %drop_whitespace_before_header_value(Config) ->
 %drop_whitespace_after_header_value(Config) ->
 %Optional whitespace before and after the header value is not