feed/user_controller: Return 404 when the user is remote
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Wed, 29 Jul 2020 12:02:02 +0000 (14:02 +0200)
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Wed, 29 Jul 2020 12:02:02 +0000 (14:02 +0200)
lib/pleroma/web/feed/user_controller.ex
test/web/feed/user_controller_test.exs

index d56f438184fa920457ad4f8d6ceaf5f5b6b932a4..9cd334a3350257f325a493a3b414460c1faeeb34 100644 (file)
@@ -47,7 +47,7 @@ defmodule Pleroma.Web.Feed.UserController do
         "atom"
       end
 
-    with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname(nickname)} do
+    with {_, %User{local: true} = user} <- {:fetch_user, User.get_cached_by_nickname(nickname)} do
       activities =
         %{
           type: ["Create"],
@@ -71,6 +71,7 @@ defmodule Pleroma.Web.Feed.UserController do
     render_error(conn, :not_found, "Not found")
   end
 
+  def errors(conn, {:fetch_user, %User{local: false}}), do: errors(conn, {:error, :not_found})
   def errors(conn, {:fetch_user, nil}), do: errors(conn, {:error, :not_found})
 
   def errors(conn, _) do
index fa2ed1ea55bd370073ae12262a32833895848ade..0d2a619674d053039c8df113126f95fc9e75985f 100644 (file)
@@ -181,6 +181,17 @@ defmodule Pleroma.Web.Feed.UserControllerTest do
 
       assert activity_titles == ['public', 'unlisted']
     end
+
+    test "returns 404 when the user is remote", %{conn: conn} do
+      user = insert(:user, local: false)
+
+      {:ok, _} = CommonAPI.post(user, %{status: "test"})
+
+      assert conn
+             |> put_req_header("accept", "application/atom+xml")
+             |> get(user_feed_path(conn, :feed, user.nickname))
+             |> response(404)
+    end
   end
 
   # Note: see ActivityPubControllerTest for JSON format tests