UserController: fall back to frontend when user isn't found
authorAlex Gleason <alex@alexgleason.me>
Tue, 17 Aug 2021 23:32:32 +0000 (18:32 -0500)
committerAlex Gleason <alex@alexgleason.me>
Tue, 17 Aug 2021 23:32:32 +0000 (18:32 -0500)
lib/pleroma/web/feed/user_controller.ex
test/pleroma/web/feed/user_controller_test.exs

index fa7879cafdb38f94507a9aa09e8191a4c04aa3ed..739b1f0260e1d3257c74addc1898986e02821284 100644 (file)
@@ -18,6 +18,8 @@ defmodule Pleroma.Web.Feed.UserController do
   def feed_redirect(%{assigns: %{format: "html"}} = conn, %{"nickname" => nickname}) do
     with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname_or_id(nickname)} do
       Pleroma.Web.Fallback.RedirectController.redirector_with_meta(conn, %{user: user})
+    else
+      _ -> Pleroma.Web.Fallback.RedirectController.redirector(conn, nil)
     end
   end
 
index 6f6ff433f193332cd4c177c6f7f2fb9b41dce06a..6e3f790b2f0ed1890266b78081bd97ddbfa39857 100644 (file)
@@ -196,13 +196,26 @@ defmodule Pleroma.Web.Feed.UserControllerTest do
                ).resp_body
     end
 
-    test "with html format, it returns error when user is not found", %{conn: conn} do
+    test "with html format, it falls back to frontend when user is remote", %{conn: conn} do
+      user = insert(:user, local: false)
+
+      {:ok, _} = CommonAPI.post(user, %{status: "test"})
+
+      response =
+        conn
+        |> get("/users/#{user.nickname}")
+        |> response(200)
+
+      assert response =~ "</html>"
+    end
+
+    test "with html format, it falls back to frontend when user is not found", %{conn: conn} do
       response =
         conn
         |> get("/users/jimm")
-        |> json_response(404)
+        |> response(200)
 
-      assert response == %{"error" => "Not found"}
+      assert response =~ "</html>"
     end
 
     test "with non-html / non-json format, it redirects to user feed in atom format", %{