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
|
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
|
# Marks plugs intentionally skipped and blocks their execution if present in plugs chain
|
||||||
defp skip_plug(conn, plug_modules) do
|
defp skip_plug(conn, plug_modules) do
|
||||||
plug_modules
|
plug_modules
|
||||||
|
|
|
||||||
|
|
@ -245,14 +245,20 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do
|
||||||
Plug.Conn.send_resp(conn, 404, "Not Found")
|
Plug.Conn.send_resp(conn, 404, "Not Found")
|
||||||
end
|
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}}),
|
defp find_access_token(transport_info), do: find_access_token_from_params(transport_info)
|
||||||
do:
|
|
||||||
Enum.find_value(sec_headers, fn
|
|
||||||
{"sec-websocket-protocol", v} -> v
|
|
||||||
_ -> nil
|
|
||||||
end)
|
|
||||||
|
|
||||||
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
|
end
|
||||||
|
|
|
||||||
|
|
@ -279,6 +279,26 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do
|
||||||
end)
|
end)
|
||||||
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
|
test "accepts valid token on client-sent event", %{token: token} do
|
||||||
assert {:ok, pid} = start_socket()
|
assert {:ok, pid} = start_socket()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,15 @@ defmodule Pleroma.Web.StaticFE.StaticFEControllerTest do
|
||||||
assert html_response(conn, 200) =~ user.nickname
|
assert html_response(conn, 200) =~ user.nickname
|
||||||
end
|
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
|
test "404 when user not found", %{conn: conn} do
|
||||||
conn = get(conn, "/users/limpopo")
|
conn = get(conn, "/users/limpopo")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue