Fix Phoenix upstream migration regressions

This commit is contained in:
Lain Soykaf 2026-05-11 22:10:08 +04:00
commit ab9fd33762
No known key found for this signature in database
4 changed files with 52 additions and 8 deletions

View file

@ -39,6 +39,15 @@ defmodule Pleroma.Web do
alias Pleroma.Web.Router.Helpers, as: Routes
plug(:set_put_layout)
defp set_put_layout(conn, _) do
case Pleroma.Config.get(:app_layout, "app.html") do
false -> put_layout(conn, false)
layout -> put_layout(conn, {Pleroma.Web.LayoutView, layout})
end
end
# Marks plugs intentionally skipped and blocks their execution if present in plugs chain
defp skip_plug(conn, plug_modules) do
plug_modules

View file

@ -245,14 +245,20 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do
Plug.Conn.send_resp(conn, 404, "Not Found")
end
defp find_access_token(%{params: %{"access_token" => token}}), do: token
defp find_access_token(%{connect_info: %{sec_websocket_headers: sec_headers}} = transport_info) do
find_sec_websocket_protocol(sec_headers) || find_access_token_from_params(transport_info)
end
defp find_access_token(%{connect_info: %{sec_websocket_headers: sec_headers}}),
do:
Enum.find_value(sec_headers, fn
{"sec-websocket-protocol", v} -> v
_ -> nil
end)
defp find_access_token(transport_info), do: find_access_token_from_params(transport_info)
defp find_access_token(_), do: nil
defp find_sec_websocket_protocol(sec_headers) do
Enum.find_value(sec_headers, fn
{"sec-websocket-protocol", token} -> token
_ -> nil
end)
end
defp find_access_token_from_params(%{params: %{"access_token" => token}}), do: token
defp find_access_token_from_params(_), do: nil
end

View file

@ -279,6 +279,26 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do
end)
end
test "accepts Phoenix 1.8 sec-websocket headers connect info before query params", %{
token: token,
user: user
} do
assert {:ok, state} =
Pleroma.Web.MastodonAPI.WebsocketHandler.connect(%{
params: %{"stream" => "user", "access_token" => "invalid"},
connect_info: %{
sec_websocket_headers: [
{"sec-websocket-version", "13"},
{"sec-websocket-protocol", token.token}
]
}
})
assert state.user.id == user.id
assert state.oauth_token.id == token.id
assert state.topics != []
end
test "accepts valid token on client-sent event", %{token: token} do
assert {:ok, pid} = start_socket()

View file

@ -28,6 +28,15 @@ defmodule Pleroma.Web.StaticFE.StaticFEControllerTest do
assert html_response(conn, 200) =~ user.nickname
end
test "renders profile HTML inside the default app layout", %{conn: conn, user: user} do
conn = get(conn, "/users/#{user.nickname}")
html = html_response(conn, 200)
assert html =~ "<!DOCTYPE html>"
assert html =~ ~s(class="instance-header")
assert html =~ ~s(<link rel="stylesheet" href="/instance/static.css">)
end
test "404 when user not found", %{conn: conn} do
conn = get(conn, "/users/limpopo")