diff options
Diffstat (limited to 'test/web')
14 files changed, 233 insertions, 68 deletions
diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index ff4604a52..ce68e7d0e 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -877,7 +877,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        assert reaction_activity        assert reaction_activity.data["actor"] == reactor.ap_id -      assert reaction_activity.data["type"] == "EmojiReaction" +      assert reaction_activity.data["type"] == "EmojiReact"        assert reaction_activity.data["content"] == "🔥"        assert reaction_activity.data["object"] == object.data["id"]        assert reaction_activity.data["to"] == [User.ap_followers(reactor), activity.data["actor"]] @@ -1174,6 +1174,23 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        assert embedded_object["object"] == followed.ap_id        assert embedded_object["id"] == follow_activity.data["id"]      end + +    test "creates an undo activity for a pending follow request" do +      follower = insert(:user) +      followed = insert(:user, %{locked: true}) + +      {:ok, follow_activity} = ActivityPub.follow(follower, followed) +      {:ok, activity} = ActivityPub.unfollow(follower, followed) + +      assert activity.data["type"] == "Undo" +      assert activity.data["actor"] == follower.ap_id + +      embedded_object = activity.data["object"] +      assert is_map(embedded_object) +      assert embedded_object["type"] == "Follow" +      assert embedded_object["object"] == followed.ap_id +      assert embedded_object["id"] == follow_activity.data["id"] +    end    end    describe "blocking / unblocking" do diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 5da358c43..1b12ee3a9 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -340,7 +340,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert data["object"] == activity.data["object"]      end -    test "it works for incoming misskey likes, turning them into EmojiReactions" do +    test "it works for incoming misskey likes, turning them into EmojiReacts" do        user = insert(:user)        {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"}) @@ -352,13 +352,13 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)        assert data["actor"] == data["actor"] -      assert data["type"] == "EmojiReaction" +      assert data["type"] == "EmojiReact"        assert data["id"] == data["id"]        assert data["object"] == activity.data["object"]        assert data["content"] == "🍮"      end -    test "it works for incoming misskey likes that contain unicode emojis, turning them into EmojiReactions" do +    test "it works for incoming misskey likes that contain unicode emojis, turning them into EmojiReacts" do        user = insert(:user)        {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"}) @@ -371,7 +371,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)        assert data["actor"] == data["actor"] -      assert data["type"] == "EmojiReaction" +      assert data["type"] == "EmojiReact"        assert data["id"] == data["id"]        assert data["object"] == activity.data["object"]        assert data["content"] == "⭐" @@ -389,12 +389,31 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)        assert data["actor"] == "http://mastodon.example.org/users/admin" -      assert data["type"] == "EmojiReaction" +      assert data["type"] == "EmojiReact"        assert data["id"] == "http://mastodon.example.org/users/admin#reactions/2"        assert data["object"] == activity.data["object"]        assert data["content"] == "👌"      end +    test "it reject invalid emoji reactions" do +      user = insert(:user) +      {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"}) + +      data = +        File.read!("test/fixtures/emoji-reaction-too-long.json") +        |> Poison.decode!() +        |> Map.put("object", activity.data["object"]) + +      assert :error = Transmogrifier.handle_incoming(data) + +      data = +        File.read!("test/fixtures/emoji-reaction-no-emoji.json") +        |> Poison.decode!() +        |> Map.put("object", activity.data["object"]) + +      assert :error = Transmogrifier.handle_incoming(data) +    end +      test "it works for incoming emoji reaction undos" do        user = insert(:user) diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 5c767219a..5fbdf96f6 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -1899,13 +1899,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 "To use this endpoint you need to enable configuration from database."      end -    test "without any settings in db", %{conn: conn} do -      conn = get(conn, "/api/pleroma/admin/config") - -      assert json_response(conn, 400) == -               "To use configuration from database migrate your settings to database." -    end -      test "with settings only in db", %{conn: conn} do        config1 = insert(:config)        config2 = insert(:config) @@ -2043,7 +2036,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          Application.delete_env(:pleroma, Pleroma.Captcha.NotReal)          Application.put_env(:pleroma, :http, http)          Application.put_env(:tesla, :adapter, Tesla.Mock) -        :ok = File.rm("config/test.exported_from_db.secret.exs")        end)      end @@ -2170,7 +2162,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert Application.get_env(:idna, :key5) == {"string", Pleroma.Captcha.NotReal, []}      end -    test "save config setting without key", %{conn: conn} do +    test "save configs setting without explicit key", %{conn: conn} do        level = Application.get_env(:quack, :level)        meta = Application.get_env(:quack, :meta)        webhook_url = Application.get_env(:quack, :webhook_url) @@ -2256,6 +2248,34 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               }      end +    test "saving config which need pleroma reboot", %{conn: conn} do +      chat = Pleroma.Config.get(:chat) +      on_exit(fn -> Pleroma.Config.put(:chat, chat) end) + +      conn = +        post( +          conn, +          "/api/pleroma/admin/config", +          %{ +            configs: [ +              %{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]} +            ] +          } +        ) + +      assert json_response(conn, 200) == %{ +               "configs" => [ +                 %{ +                   "db" => [":enabled"], +                   "group" => ":pleroma", +                   "key" => ":chat", +                   "value" => [%{"tuple" => [":enabled", true]}] +                 } +               ], +               "need_reboot" => true +             } +    end +      test "saving config with nested merge", %{conn: conn} do        config =          insert(:config, key: ":key1", value: :erlang.term_to_binary(key1: 1, key2: [k1: 1, k2: 2])) @@ -2957,47 +2977,15 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end -  describe "config mix tasks run" do -    setup do -      Mix.shell(Mix.Shell.Quiet) - -      on_exit(fn -> -        Mix.shell(Mix.Shell.IO) -      end) - -      :ok -    end - +  describe "GET /api/pleroma/admin/restart" do      clear_config(:configurable_from_database) do        Pleroma.Config.put(:configurable_from_database, true)      end -    clear_config([:feed, :post_title]) do -      Pleroma.Config.put([:feed, :post_title], %{max_length: 100, omission: "…"}) -    end - -    test "transfer settings to DB and to file", %{conn: conn} do -      assert Repo.all(Pleroma.ConfigDB) == [] -      Mix.Tasks.Pleroma.Config.migrate_to_db("test/fixtures/config/temp.secret.exs") -      assert Repo.aggregate(Pleroma.ConfigDB, :count, :id) > 0 - -      conn = get(conn, "/api/pleroma/admin/config/migrate_from_db") - -      assert json_response(conn, 200) == %{} -      assert Repo.all(Pleroma.ConfigDB) == [] -    end - -    test "returns error if configuration from database is off", %{conn: conn} do -      initial = Pleroma.Config.get(:configurable_from_database) -      on_exit(fn -> Pleroma.Config.put(:configurable_from_database, initial) end) -      Pleroma.Config.put(:configurable_from_database, false) - -      conn = get(conn, "/api/pleroma/admin/config/migrate_from_db") - -      assert json_response(conn, 400) == -               "To use this endpoint you need to enable configuration from database." - -      assert Repo.all(Pleroma.ConfigDB) == [] +    test "pleroma restarts", %{conn: conn} do +      ExUnit.CaptureLog.capture_log(fn -> +        assert conn |> get("/api/pleroma/admin/restart") |> json_response(200) == %{} +      end) =~ "pleroma restarted"      end    end diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index f8963e42e..11f7c068f 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -238,7 +238,9 @@ defmodule Pleroma.Web.CommonAPITest do        assert reaction.data["actor"] == user.ap_id        assert reaction.data["content"] == "👍" -      # TODO: test error case. +      {:ok, activity} = CommonAPI.post(other_user, %{"status" => "cofe"}) + +      {:error, _} = CommonAPI.react_with_emoji(activity.id, user, ".")      end      test "unreacting to a status with an emoji" do @@ -322,6 +324,21 @@ defmodule Pleroma.Web.CommonAPITest do        assert %User{pinned_activities: [^id]} = user      end +    test "pin poll", %{user: user} do +      {:ok, activity} = +        CommonAPI.post(user, %{ +          "status" => "How is fediverse today?", +          "poll" => %{"options" => ["Absolutely outstanding", "Not good"], "expires_in" => 20} +        }) + +      assert {:ok, ^activity} = CommonAPI.pin(activity.id, user) + +      id = activity.id +      user = refresh_record(user) + +      assert %User{pinned_activities: [^id]} = user +    end +      test "unlisted statuses can be pinned", %{user: user} do        {:ok, activity} = CommonAPI.post(user, %{"status" => "HI!!!", "visibility" => "unlisted"})        assert {:ok, ^activity} = CommonAPI.pin(activity.id, user) @@ -534,6 +551,50 @@ defmodule Pleroma.Web.CommonAPITest do        refute User.subscribed_to?(follower, followed)      end + +    test "cancels a pending follow for a local user" do +      follower = insert(:user) +      followed = insert(:user, locked: true) + +      assert {:ok, follower, followed, %{id: activity_id, data: %{"state" => "pending"}}} = +               CommonAPI.follow(follower, followed) + +      assert User.get_follow_state(follower, followed) == "pending" +      assert {:ok, follower} = CommonAPI.unfollow(follower, followed) +      assert User.get_follow_state(follower, followed) == nil + +      assert %{id: ^activity_id, data: %{"state" => "cancelled"}} = +               Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(follower, followed) + +      assert %{ +               data: %{ +                 "type" => "Undo", +                 "object" => %{"type" => "Follow", "state" => "cancelled"} +               } +             } = Pleroma.Web.ActivityPub.Utils.fetch_latest_undo(follower) +    end + +    test "cancels a pending follow for a remote user" do +      follower = insert(:user) +      followed = insert(:user, locked: true, local: false, ap_enabled: true) + +      assert {:ok, follower, followed, %{id: activity_id, data: %{"state" => "pending"}}} = +               CommonAPI.follow(follower, followed) + +      assert User.get_follow_state(follower, followed) == "pending" +      assert {:ok, follower} = CommonAPI.unfollow(follower, followed) +      assert User.get_follow_state(follower, followed) == nil + +      assert %{id: ^activity_id, data: %{"state" => "cancelled"}} = +               Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(follower, followed) + +      assert %{ +               data: %{ +                 "type" => "Undo", +                 "object" => %{"type" => "Follow", "state" => "cancelled"} +               } +             } = Pleroma.Web.ActivityPub.Utils.fetch_latest_undo(follower) +    end    end    describe "accept_follow_request/2" do diff --git a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs index 09bdc46e0..82d9e7d2f 100644 --- a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs +++ b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs @@ -269,7 +269,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController.UpdateCredentialsTest do          |> json_response(200)        assert account_data["fields"] == [ -               %{"name" => "foo", "value" => "bar"}, +               %{"name" => "<a href=\"http://google.com\">foo</a>", "value" => "bar"},                 %{"name" => "link", "value" => ~S(<a href="http://cofe.io" rel="ugc">cofe.io</a>)}               ] @@ -297,7 +297,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController.UpdateCredentialsTest do          |> json_response(200)        assert account["fields"] == [ -               %{"name" => "foo", "value" => "bar"}, +               %{"name" => "<a href=\"http://google.com\">foo</a>", "value" => "bar"},                 %{"name" => "link", "value" => ~S(<a href="http://cofe.io" rel="ugc">cofe.io</a>)}               ] diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 0d4860a42..e2abcd7c5 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -457,6 +457,16 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do        assert id == to_string(other_user.id)      end +    test "cancelling follow request", %{conn: conn} do +      %{id: other_user_id} = insert(:user, %{locked: true}) + +      assert %{"id" => ^other_user_id, "following" => false, "requested" => true} = +               conn |> post("/api/v1/accounts/#{other_user_id}/follow") |> json_response(:ok) + +      assert %{"id" => ^other_user_id, "following" => false, "requested" => false} = +               conn |> post("/api/v1/accounts/#{other_user_id}/unfollow") |> json_response(:ok) +    end +      test "following without reblogs" do        %{conn: conn} = oauth_access(["follow", "read:statuses"])        followed = insert(:user) @@ -668,6 +678,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do      end      test "rate limit", %{conn: conn} do +      Pleroma.Config.put([Pleroma.Plugs.RemoteIp, :enabled], true)        app_token = insert(:oauth_token, user: nil)        conn = diff --git a/test/web/mastodon_api/controllers/scheduled_activity_controller_test.exs b/test/web/mastodon_api/controllers/scheduled_activity_controller_test.exs index 9666a7f2e..6317d1b47 100644 --- a/test/web/mastodon_api/controllers/scheduled_activity_controller_test.exs +++ b/test/web/mastodon_api/controllers/scheduled_activity_controller_test.exs @@ -9,6 +9,9 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do    alias Pleroma.ScheduledActivity    import Pleroma.Factory +  import Ecto.Query + +  clear_config([ScheduledActivity, :enabled])    test "shows scheduled activities" do      %{user: user, conn: conn} = oauth_access(["read:statuses"]) @@ -52,11 +55,26 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do    end    test "updates a scheduled activity" do +    Pleroma.Config.put([ScheduledActivity, :enabled], true)      %{user: user, conn: conn} = oauth_access(["write:statuses"]) -    scheduled_activity = insert(:scheduled_activity, user: user) -    new_scheduled_at = -      NaiveDateTime.add(NaiveDateTime.utc_now(), :timer.minutes(120), :millisecond) +    scheduled_at = Timex.shift(NaiveDateTime.utc_now(), minutes: 60) + +    {:ok, scheduled_activity} = +      ScheduledActivity.create( +        user, +        %{ +          scheduled_at: scheduled_at, +          params: build(:note).data +        } +      ) + +    job = Repo.one(from(j in Oban.Job, where: j.queue == "scheduled_activities")) + +    assert job.args == %{"activity_id" => scheduled_activity.id} +    assert DateTime.truncate(job.scheduled_at, :second) == to_datetime(scheduled_at) + +    new_scheduled_at = Timex.shift(NaiveDateTime.utc_now(), minutes: 120)      res_conn =        put(conn, "/api/v1/scheduled_statuses/#{scheduled_activity.id}", %{ @@ -65,6 +83,9 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do      assert %{"scheduled_at" => expected_scheduled_at} = json_response(res_conn, 200)      assert expected_scheduled_at == Pleroma.Web.CommonAPI.Utils.to_masto_date(new_scheduled_at) +    job = refresh_record(job) + +    assert DateTime.truncate(job.scheduled_at, :second) == to_datetime(new_scheduled_at)      res_conn = put(conn, "/api/v1/scheduled_statuses/404", %{scheduled_at: new_scheduled_at}) @@ -72,8 +93,22 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do    end    test "deletes a scheduled activity" do +    Pleroma.Config.put([ScheduledActivity, :enabled], true)      %{user: user, conn: conn} = oauth_access(["write:statuses"]) -    scheduled_activity = insert(:scheduled_activity, user: user) +    scheduled_at = Timex.shift(NaiveDateTime.utc_now(), minutes: 60) + +    {:ok, scheduled_activity} = +      ScheduledActivity.create( +        user, +        %{ +          scheduled_at: scheduled_at, +          params: build(:note).data +        } +      ) + +    job = Repo.one(from(j in Oban.Job, where: j.queue == "scheduled_activities")) + +    assert job.args == %{"activity_id" => scheduled_activity.id}      res_conn =        conn @@ -81,7 +116,8 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do        |> delete("/api/v1/scheduled_statuses/#{scheduled_activity.id}")      assert %{} = json_response(res_conn, 200) -    assert nil == Repo.get(ScheduledActivity, scheduled_activity.id) +    refute Repo.get(ScheduledActivity, scheduled_activity.id) +    refute Repo.get(Oban.Job, job.id)      res_conn =        conn diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index b03b4b344..83138d7ef 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -370,6 +370,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do        assert NaiveDateTime.diff(NaiveDateTime.from_iso8601!(response["poll"]["expires_at"]), time) in 420..430        refute response["poll"]["expred"] + +      question = Object.get_by_id(response["poll"]["id"]) + +      # closed contains utc timezone +      assert question.data["closed"] =~ "Z"      end      test "option limit is enforced", %{conn: conn} do diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 2107bb85c..00c294845 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -368,10 +368,10 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do      assert result.pleroma[:settings_store] == nil    end -  test "sanitizes display names" do +  test "doesn't sanitize display names" do      user = insert(:user, name: "<marquee> username </marquee>")      result = AccountView.render("show.json", %{user: user}) -    refute result.display_name == "<marquee> username </marquee>" +    assert result.display_name == "<marquee> username </marquee>"    end    test "never display nil user follow counts" do diff --git a/test/web/mastodon_api/views/notification_view_test.exs b/test/web/mastodon_api/views/notification_view_test.exs index 1fe83cb2c..2ac75c2ff 100644 --- a/test/web/mastodon_api/views/notification_view_test.exs +++ b/test/web/mastodon_api/views/notification_view_test.exs @@ -135,7 +135,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do               NotificationView.render("index.json", %{notifications: [notification], for: follower})    end -  test "EmojiReaction notification" do +  test "EmojiReact notification" do      user = insert(:user)      other_user = insert(:user) diff --git a/test/web/mastodon_api/views/status_view_test.exs b/test/web/mastodon_api/views/status_view_test.exs index 25777b011..fc110417c 100644 --- a/test/web/mastodon_api/views/status_view_test.exs +++ b/test/web/mastodon_api/views/status_view_test.exs @@ -37,8 +37,15 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      status = StatusView.render("show.json", activity: activity)      assert status[:pleroma][:emoji_reactions] == [ -             %{emoji: "☕", count: 2}, -             %{emoji: "🍵", count: 1} +             %{emoji: "☕", count: 2, reacted: false}, +             %{emoji: "🍵", count: 1, reacted: false} +           ] + +    status = StatusView.render("show.json", activity: activity, for: user) + +    assert status[:pleroma][:emoji_reactions] == [ +             %{emoji: "☕", count: 2, reacted: true}, +             %{emoji: "🍵", count: 1, reacted: false}             ]    end diff --git a/test/web/node_info_test.exs b/test/web/node_info_test.exs index 9a574a38d..39dd72cec 100644 --- a/test/web/node_info_test.exs +++ b/test/web/node_info_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.Web.NodeInfoTest do    use Pleroma.Web.ConnCase    import Pleroma.Factory +  clear_config([:mrf_simple])    test "GET /.well-known/nodeinfo", %{conn: conn} do      links = diff --git a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs index 8e76f2f3d..6f1ea78ec 100644 --- a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs @@ -6,7 +6,6 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do    use Pleroma.Web.ConnCase    import Tesla.Mock -    import Pleroma.Factory    @emoji_dir_path Path.join( diff --git a/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs b/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs index 3978c2ec5..be5007de5 100644 --- a/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs @@ -25,9 +25,14 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do        |> assign(:user, other_user)        |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"]))        |> post("/api/v1/pleroma/statuses/#{activity.id}/react_with_emoji", %{"emoji" => "☕"}) +      |> json_response(200) -    assert %{"id" => id} = json_response(result, 200) +    assert %{"id" => id} = result      assert to_string(activity.id) == id + +    assert result["pleroma"]["emoji_reactions"] == [ +             %{"emoji" => "☕", "count" => 1, "reacted" => true} +           ]    end    test "POST /api/v1/pleroma/statuses/:id/unreact_with_emoji", %{conn: conn} do @@ -54,6 +59,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do    test "GET /api/v1/pleroma/statuses/:id/emoji_reactions_by", %{conn: conn} do      user = insert(:user)      other_user = insert(:user) +    doomed_user = insert(:user)      {:ok, activity} = CommonAPI.post(user, %{"status" => "#cofe"}) @@ -65,14 +71,29 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do      assert result == []      {:ok, _, _} = CommonAPI.react_with_emoji(activity.id, other_user, "🎅") +    {:ok, _, _} = CommonAPI.react_with_emoji(activity.id, doomed_user, "🎅") + +    User.perform(:delete, doomed_user)      result =        conn        |> get("/api/v1/pleroma/statuses/#{activity.id}/emoji_reactions_by")        |> json_response(200) -    [%{"emoji" => "🎅", "count" => 1, "accounts" => [represented_user]}] = result +    [%{"emoji" => "🎅", "count" => 1, "accounts" => [represented_user], "reacted" => false}] = +      result +      assert represented_user["id"] == other_user.id + +    result = +      conn +      |> assign(:user, other_user) +      |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["read:statuses"])) +      |> get("/api/v1/pleroma/statuses/#{activity.id}/emoji_reactions_by") +      |> json_response(200) + +    assert [%{"emoji" => "🎅", "count" => 1, "accounts" => [_represented_user], "reacted" => true}] = +             result    end    test "/api/v1/pleroma/conversations/:id" do  | 
