aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2020-03-28 11:54:06 +0100
committerLoïc Hoguin <[email protected]>2020-03-28 11:54:06 +0100
commit310f01593f7efcafdbb416748028f164e19ad1e0 (patch)
tree730f0bbf2211730d1e78064e5d90d61ca8077c4b /test
parente3ca88e6111d2837f21741f410ce58381079e78a (diff)
downloadgun-310f01593f7efcafdbb416748028f164e19ad1e0.tar.gz
gun-310f01593f7efcafdbb416748028f164e19ad1e0.tar.bz2
gun-310f01593f7efcafdbb416748028f164e19ad1e0.zip
Make intermediaries return tls not tls_proxy
Also add a test for CONNECT to TLS via 2 TLS proxies.
Diffstat (limited to 'test')
-rw-r--r--test/rfc7231_SUITE.erl35
-rw-r--r--test/socks_SUITE.erl12
2 files changed, 26 insertions, 21 deletions
diff --git a/test/rfc7231_SUITE.erl b/test/rfc7231_SUITE.erl
index ec63cbe..c2f3da6 100644
--- a/test/rfc7231_SUITE.erl
+++ b/test/rfc7231_SUITE.erl
@@ -240,26 +240,39 @@ do_connect_h2(OriginScheme, OriginTransport, ProxyTransport) ->
}]} = gun:info(ConnPid),
gun:close(ConnPid).
-connect_through_multiple_proxies(_) ->
+connect_tcp_through_multiple_tcp_proxies(_) ->
doc("CONNECT can be used to establish a TCP connection "
"to an HTTP/1.1 server via a tunnel going through "
"two separate HTTP proxies. (RFC7231 4.3.6)"),
- {ok, OriginPid, OriginPort} = init_origin(tcp),
- {ok, Proxy1Pid, Proxy1Port} = do_proxy_start(tcp),
- {ok, Proxy2Pid, Proxy2Port} = do_proxy_start(tcp),
- {ok, ConnPid} = gun:open("localhost", Proxy1Port),
+ do_connect_through_multiple_proxies(<<"http">>, tcp, tcp).
+
+connect_tls_through_multiple_tls_proxies(_) ->
+ doc("CONNECT can be used to establish a TLS connection "
+ "to an HTTP/1.1 server via a tunnel going through "
+ "two separate HTTPS proxies. (RFC7231 4.3.6)"),
+ do_connect_through_multiple_proxies(<<"https">>, tls, tls).
+
+do_connect_through_multiple_proxies(OriginScheme, OriginTransport, ProxiesTransport) ->
+ {ok, OriginPid, OriginPort} = init_origin(OriginTransport),
+ {ok, Proxy1Pid, Proxy1Port} = do_proxy_start(ProxiesTransport),
+ {ok, Proxy2Pid, Proxy2Port} = do_proxy_start(ProxiesTransport),
+ {ok, ConnPid} = gun:open("localhost", Proxy1Port, #{
+ transport => ProxiesTransport
+ }),
{ok, http} = gun:await_up(ConnPid),
Authority1 = iolist_to_binary(["localhost:", integer_to_binary(Proxy2Port)]),
StreamRef1 = gun:connect(ConnPid, #{
host => "localhost",
- port => Proxy2Port
+ port => Proxy2Port,
+ transport => ProxiesTransport
}),
{request, <<"CONNECT">>, Authority1, 'HTTP/1.1', _} = receive_from(Proxy1Pid),
{response, fin, 200, _} = gun:await(ConnPid, StreamRef1),
Authority2 = iolist_to_binary(["localhost:", integer_to_binary(OriginPort)]),
StreamRef2 = gun:connect(ConnPid, #{
host => "localhost",
- port => OriginPort
+ port => OriginPort,
+ transport => OriginTransport
}),
{request, <<"CONNECT">>, Authority2, 'HTTP/1.1', _} = receive_from(Proxy2Pid),
{response, fin, 200, _} = gun:await(ConnPid, StreamRef2),
@@ -269,22 +282,22 @@ connect_through_multiple_proxies(_) ->
Lines = binary:split(Data, <<"\r\n">>, [global]),
[<<"host: ", Authority2/bits>>] = [L || <<"host: ", _/bits>> = L <- Lines],
#{
- transport := tcp,
+ transport := OriginTransport,
protocol := http,
- origin_scheme := <<"http">>,
+ origin_scheme := OriginScheme,
origin_host := "localhost",
origin_port := OriginPort,
intermediaries := [#{
type := connect,
host := "localhost",
port := Proxy1Port,
- transport := tcp,
+ transport := ProxiesTransport,
protocol := http
}, #{
type := connect,
host := "localhost",
port := Proxy2Port,
- transport := tcp,
+ transport := ProxiesTransport,
protocol := http
}]} = gun:info(ConnPid),
gun:close(ConnPid).
diff --git a/test/socks_SUITE.erl b/test/socks_SUITE.erl
index ec184a6..e692a82 100644
--- a/test/socks_SUITE.erl
+++ b/test/socks_SUITE.erl
@@ -315,10 +315,6 @@ do_socks5_through_multiple_proxies(OriginScheme, OriginTransport, ProxyTransport
Data = receive_from(OriginPid),
Lines = binary:split(Data, <<"\r\n">>, [global]),
[<<"host: ", Authority/bits>>] = [L || <<"host: ", _/bits>> = L <- Lines],
- Proxy2Transport = case ProxyTransport of
- tcp -> tcp;
- tls -> tls_proxy
- end,
#{
transport := OriginTransport,
protocol := http,
@@ -335,7 +331,7 @@ do_socks5_through_multiple_proxies(OriginScheme, OriginTransport, ProxyTransport
type := socks5,
host := "localhost",
port := Proxy2Port,
- transport := Proxy2Transport,
+ transport := ProxyTransport,
protocol := socks
}]} = gun:info(ConnPid),
gun:close(ConnPid).
@@ -397,10 +393,6 @@ do_socks5_through_connect_proxy(OriginScheme, OriginTransport, ProxyTransport) -
Data = receive_from(OriginPid),
Lines = binary:split(Data, <<"\r\n">>, [global]),
[<<"host: ", Authority2/bits>>] = [L || <<"host: ", _/bits>> = L <- Lines],
- Proxy2Transport = case ProxyTransport of
- tcp -> tcp;
- tls -> tls_proxy
- end,
#{
transport := OriginTransport,
protocol := http,
@@ -417,7 +409,7 @@ do_socks5_through_connect_proxy(OriginScheme, OriginTransport, ProxyTransport) -
type := socks5,
host := "localhost",
port := Proxy2Port,
- transport := Proxy2Transport,
+ transport := ProxyTransport,
protocol := socks
}]} = gun:info(ConnPid),
gun:close(ConnPid).