Merge remote-tracking branch 'origin/develop' into reactions
[akkoma] / test / web / mastodon_api / controllers / status_controller_test.exs
index c0121ac63b8208603602b3db48ba209408152a77..b648ad6ff4547ecdf56bd47e0d7dab1eb5d34ead 100644 (file)
@@ -99,7 +99,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
                NaiveDateTime.to_iso8601(expiration.scheduled_at)
     end
 
-    test "posting an empty status with an attachment", %{conn: conn} do
+    test "posting an undefined status with an attachment", %{conn: conn} do
       user = insert(:user)
 
       file = %Plug.Upload{
@@ -114,8 +114,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
         conn
         |> assign(:user, user)
         |> post("/api/v1/statuses", %{
-          "media_ids" => [to_string(upload.id)],
-          "status" => ""
+          "media_ids" => [to_string(upload.id)]
         })
 
       assert json_response(conn, 200)
@@ -548,6 +547,24 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
       assert to_string(activity.id) == id
     end
 
+    test "reblogs privately and returns the reblogged status", %{conn: conn} do
+      activity = insert(:note_activity)
+      user = insert(:user)
+
+      conn =
+        conn
+        |> assign(:user, user)
+        |> post("/api/v1/statuses/#{activity.id}/reblog", %{"visibility" => "private"})
+
+      assert %{
+               "reblog" => %{"id" => id, "reblogged" => true, "reblogs_count" => 1},
+               "reblogged" => true,
+               "visibility" => "private"
+             } = json_response(conn, 200)
+
+      assert to_string(activity.id) == id
+    end
+
     test "reblogged status for another user", %{conn: conn} do
       activity = insert(:note_activity)
       user1 = insert(:user)
@@ -1150,6 +1167,23 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
       assert Enum.empty?(response)
     end
 
+    test "does not return users who have reblogged the status privately", %{
+      conn: %{assigns: %{user: user}} = conn,
+      activity: activity
+    } do
+      other_user = insert(:user)
+
+      {:ok, _, _} = CommonAPI.repeat(activity.id, other_user, %{"visibility" => "private"})
+
+      response =
+        conn
+        |> assign(:user, user)
+        |> get("/api/v1/statuses/#{activity.id}/reblogged_by")
+        |> json_response(:ok)
+
+      assert Enum.empty?(response)
+    end
+
     test "does not fail on an unauthenticated request", %{conn: conn, activity: activity} do
       other_user = insert(:user)
       {:ok, _, _} = CommonAPI.repeat(activity.id, other_user)