aboutsummaryrefslogtreecommitdiffstats
path: root/test/rfc7231_SUITE.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-04-22 13:40:07 +0200
committerLoïc Hoguin <[email protected]>2019-04-22 13:40:07 +0200
commit5e3a5337a34dcb09418d4f412b11ede4510e3ddc (patch)
tree294fde46b7b0775ce62c854892ddcf1c4a73ead2 /test/rfc7231_SUITE.erl
parentb2aed85a2a8794f0cc23755d1a10c602ab289ff4 (diff)
downloadgun-5e3a5337a34dcb09418d4f412b11ede4510e3ddc.tar.gz
gun-5e3a5337a34dcb09418d4f412b11ede4510e3ddc.tar.bz2
gun-5e3a5337a34dcb09418d4f412b11ede4510e3ddc.zip
Make gun_tls_proxy work for HTTP/2 connections
Diffstat (limited to 'test/rfc7231_SUITE.erl')
-rw-r--r--test/rfc7231_SUITE.erl28
1 files changed, 19 insertions, 9 deletions
diff --git a/test/rfc7231_SUITE.erl b/test/rfc7231_SUITE.erl
index cbace9b..c9bd3b4 100644
--- a/test/rfc7231_SUITE.erl
+++ b/test/rfc7231_SUITE.erl
@@ -176,23 +176,33 @@ do_connect_http(OriginTransport, ProxyTransport) ->
connect_h2c(_) ->
doc("CONNECT can be used to establish a TCP connection "
"to an HTTP/2 server via an HTTP proxy. (RFC7231 4.3.6)"),
- do_connect_h2(tcp).
+ do_connect_h2(tcp, tcp).
connect_h2(_) ->
doc("CONNECT can be used to establish a TLS connection "
"to an HTTP/2 server via an HTTP proxy. (RFC7231 4.3.6)"),
- do_connect_h2(tls).
+ do_connect_h2(tls, tcp).
-do_connect_h2(Transport) ->
- {ok, OriginPid, OriginPort} = init_origin(Transport, http2),
- {ok, ProxyPid, ProxyPort} = do_proxy_start(tcp),
+connect_h2c_over_https_proxy(_) ->
+ doc("CONNECT can be used to establish a TCP connection "
+ "to an HTTP/2 server via an HTTPS proxy. (RFC7231 4.3.6)"),
+ do_connect_h2(tcp, tls).
+
+connect_h2_over_https_proxy(_) ->
+ doc("CONNECT can be used to establish a TLS connection "
+ "to an HTTP/2 server via an HTTPS proxy. (RFC7231 4.3.6)"),
+ do_connect_h2(tls, tls).
+
+do_connect_h2(OriginTransport, ProxyTransport) ->
+ {ok, OriginPid, OriginPort} = init_origin(OriginTransport, http2),
+ {ok, ProxyPid, ProxyPort} = do_proxy_start(ProxyTransport),
Authority = iolist_to_binary(["localhost:", integer_to_binary(OriginPort)]),
- {ok, ConnPid} = gun:open("localhost", ProxyPort),
+ {ok, ConnPid} = gun:open("localhost", ProxyPort, #{transport => ProxyTransport}),
{ok, http} = gun:await_up(ConnPid),
StreamRef = gun:connect(ConnPid, #{
host => "localhost",
port => OriginPort,
- transport => Transport,
+ transport => OriginTransport,
protocols => [http2]
}),
{request, <<"CONNECT">>, Authority, 'HTTP/1.1', _} = receive_from(ProxyPid),
@@ -201,7 +211,7 @@ do_connect_h2(Transport) ->
_ = gun:get(ConnPid, "/proxied"),
<<_:24, 1:8, _/bits>> = receive_from(OriginPid),
#{
- transport := Transport,
+ transport := OriginTransport,
protocol := http2,
origin_host := "localhost",
origin_port := OriginPort,
@@ -209,7 +219,7 @@ do_connect_h2(Transport) ->
type := connect,
host := "localhost",
port := ProxyPort,
- transport := tcp,
+ transport := ProxyTransport,
protocol := http
}]} = gun:info(ConnPid),
gun:close(ConnPid).