commit: ab4edf7933f245c9e955d4942471fb938a2f7c0e
parent 49ba6c88655669fe83b8c58d4070bd7ca5f215f1
Author: Mark Felder <feld@feld.me>
Date: Wed, 30 Jul 2025 17:20:42 -0700
Add proper ReverseProxy test cases
Diffstat:
1 file changed, 36 insertions(+), 0 deletions(-)
diff --git a/test/pleroma/reverse_proxy_test.exs b/test/pleroma/reverse_proxy_test.exs
@@ -395,4 +395,40 @@ defmodule Pleroma.ReverseProxyTest do
assert Conn.get_resp_header(conn, "content-type") == ["application/octet-stream"]
end
end
+
+ # Hackey is used for Reverse Proxy when Hackney or Finch is the Tesla Adapter
+ # Gun is able to proxy through Tesla, so it does not need testing as the
+ # test cases in the Pleroma.HTTPTest module are sufficient
+ describe "Hackney URL encoding:" do
+ setup do
+ ClientMock
+ |> expect(:request, fn :get,
+ "https://example.com/emoji/Pack%201/koronebless.png?foo=bar+baz",
+ _headers,
+ _body,
+ _opts ->
+ {:ok, 200, [{"content-type", "image/png"}], "It works!"}
+ end)
+ |> stub(:stream_body, fn _ -> :done end)
+ |> stub(:close, fn _ -> :ok end)
+
+ :ok
+ end
+
+ test "properly encodes URLs with spaces", %{conn: conn} do
+ url_with_space = "https://example.com/emoji/Pack 1/koronebless.png?foo=bar baz"
+
+ result = ReverseProxy.call(conn, url_with_space)
+
+ assert result.status == 200
+ end
+
+ test "properly encoded URL should not be altered", %{conn: conn} do
+ properly_encoded_url = "https://example.com/emoji/Pack%201/koronebless.png?foo=bar+baz"
+
+ result = ReverseProxy.call(conn, properly_encoded_url)
+
+ assert result.status == 200
+ end
+ end
end