Fix Phoenix upstream migration regressions
This commit is contained in:
parent
216a00f73f
commit
ab9fd33762
4 changed files with 52 additions and 8 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue