Browse Source

Add more rfc7231 tests

Loïc Hoguin 7 years ago
parent
commit
1f4c1e2c67
2 changed files with 30 additions and 5 deletions
  1. 2 1
      test/cowboy_test.erl
  2. 28 4
      test/rfc7231_SUITE.erl

+ 2 - 1
test/cowboy_test.erl

@@ -112,7 +112,8 @@ gun_open(Config, Opts) ->
 		retry => 0,
 		transport => config(type, Config),
 		transport_opts => proplists:get_value(transport_opts, Config, []),
-		protocols => [config(protocol, Config)]
+		protocols => [config(protocol, Config)],
+		http_opts => proplists:get_value(http_opts, Config, #{})
 	}),
 	ConnPid.
 

+ 28 - 4
test/rfc7231_SUITE.erl

@@ -186,6 +186,34 @@ method_trace(Config) ->
 
 %% Status codes.
 
+http10_status_code_100(Config) ->
+	case config(protocol, Config) of
+		http ->
+			doc("The 100 Continue status code must not "
+				"be sent to HTTP/1.0 endpoints. (RFC7231 6.2)"),
+			do_http10_status_code_1xx(100, Config);
+		http2 ->
+			status_code_100(Config)
+	end.
+
+http10_status_code_101(Config) ->
+	case config(protocol, Config) of
+		http ->
+			doc("The 101 Switching Protocols status code must not "
+				"be sent to HTTP/1.0 endpoints. (RFC7231 6.2)"),
+			do_http10_status_code_1xx(101, Config);
+		http2 ->
+			status_code_101(Config)
+	end.
+
+do_http10_status_code_1xx(StatusCode, Config) ->
+	ConnPid = gun_open([{http_opts, #{version => 'HTTP/1.0'}}|Config]),
+	Ref = gun:get(ConnPid, "/resp/inform2/" ++ integer_to_list(StatusCode), [
+		{<<"accept-encoding">>, <<"gzip">>}
+	]),
+	{response, _, 200, _} = gun:await(ConnPid, Ref),
+	ok.
+
 status_code_100(Config) ->
 	doc("The 100 Continue status code can be sent. (RFC7231 6.2.1)"),
 	ConnPid = gun_open(Config),
@@ -195,8 +223,6 @@ status_code_100(Config) ->
 	{inform, 100, []} = gun:await(ConnPid, Ref),
 	ok.
 
-%http10_status_code_100(Config) ->
-
 status_code_101(Config) ->
 	doc("The 101 Switching Protocols status code can be sent. (RFC7231 6.2.2)"),
 	ConnPid = gun_open(Config),
@@ -206,8 +232,6 @@ status_code_101(Config) ->
 	{inform, 101, []} = gun:await(ConnPid, Ref),
 	ok.
 
-%http10_status_code_100(Config) ->
-
 status_code_200(Config) ->
 	doc("The 200 OK status code can be sent. (RFC7231 6.3.1)"),
 	ConnPid = gun_open(Config),