diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/support/helpers.ex | 17 | ||||
| -rw-r--r-- | test/web/activity_pub/utils_test.exs | 43 | ||||
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 110 | 
3 files changed, 105 insertions, 65 deletions
| diff --git a/test/support/helpers.ex b/test/support/helpers.ex index ce39dd9d8..af2b2eddf 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -75,6 +75,23 @@ defmodule Pleroma.Tests.Helpers do          |> Poison.decode!()        end +      def stringify_keys(nil), do: nil + +      def stringify_keys(key) when key in [true, false], do: key +      def stringify_keys(key) when is_atom(key), do: Atom.to_string(key) + +      def stringify_keys(map) when is_map(map) do +        map +        |> Enum.map(fn {k, v} -> {stringify_keys(k), stringify_keys(v)} end) +        |> Enum.into(%{}) +      end + +      def stringify_keys([head | rest] = list) when is_list(list) do +        [stringify_keys(head) | stringify_keys(rest)] +      end + +      def stringify_keys(key), do: key +        defmacro guards_config(config_path) do          quote do            initial_setting = Pleroma.Config.get(config_path) diff --git a/test/web/activity_pub/utils_test.exs b/test/web/activity_pub/utils_test.exs index 1feb076ba..586eb1d2f 100644 --- a/test/web/activity_pub/utils_test.exs +++ b/test/web/activity_pub/utils_test.exs @@ -636,47 +636,4 @@ defmodule Pleroma.Web.ActivityPub.UtilsTest do        assert updated_object.data["announcement_count"] == 1      end    end - -  describe "get_reports_grouped_by_status/1" do -    setup do -      [reporter, target_user] = insert_pair(:user) -      first_status = insert(:note_activity, user: target_user) -      second_status = insert(:note_activity, user: target_user) - -      CommonAPI.report(reporter, %{ -        "account_id" => target_user.id, -        "comment" => "I feel offended", -        "status_ids" => [first_status.id] -      }) - -      CommonAPI.report(reporter, %{ -        "account_id" => target_user.id, -        "comment" => "I feel offended2", -        "status_ids" => [second_status.id] -      }) - -      data = [%{activity: first_status.data["id"]}, %{activity: second_status.data["id"]}] - -      {:ok, -       %{ -         first_status: first_status, -         second_status: second_status, -         data: data -       }} -    end - -    test "works for deprecated reports format", %{ -      first_status: first_status, -      second_status: second_status, -      data: data -    } do -      groups = Utils.get_reports_grouped_by_status(data).groups - -      first_group = Enum.find(groups, &(&1.status.id == first_status.data["id"])) -      second_group = Enum.find(groups, &(&1.status.id == second_status.data["id"])) - -      assert first_group.status.id == first_status.data["id"] -      assert second_group.status.id == second_status.data["id"] -    end -  end  end diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 32577afee..4148f04bc 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -15,6 +15,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do    alias Pleroma.UserInviteToken    alias Pleroma.Web.ActivityPub.Relay    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.MastodonAPI.StatusView    alias Pleroma.Web.MediaProxy    import Pleroma.Factory @@ -1612,6 +1613,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          first_status: Activity.get_by_ap_id_with_object(first_status.data["id"]),          second_status: Activity.get_by_ap_id_with_object(second_status.data["id"]),          third_status: Activity.get_by_ap_id_with_object(third_status.data["id"]), +        first_report: first_report,          first_status_reports: [first_report, second_report, third_report],          second_status_reports: [first_report, second_report],          third_status_reports: [first_report], @@ -1638,14 +1640,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert length(response["reports"]) == 3 -      first_group = -        Enum.find(response["reports"], &(&1["status"]["id"] == first_status.data["id"])) +      first_group = Enum.find(response["reports"], &(&1["status"]["id"] == first_status.id)) -      second_group = -        Enum.find(response["reports"], &(&1["status"]["id"] == second_status.data["id"])) +      second_group = Enum.find(response["reports"], &(&1["status"]["id"] == second_status.id)) -      third_group = -        Enum.find(response["reports"], &(&1["status"]["id"] == third_status.data["id"])) +      third_group = Enum.find(response["reports"], &(&1["status"]["id"] == third_status.id))        assert length(first_group["reports"]) == 3        assert length(second_group["reports"]) == 2 @@ -1656,13 +1655,14 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                   NaiveDateTime.from_iso8601!(act.data["published"])                 end).data["published"] -      assert first_group["status"] == %{ -               "id" => first_status.data["id"], -               "content" => first_status.object.data["content"], -               "published" => first_status.object.data["published"] -             } +      assert first_group["status"] == +               Map.put( +                 stringify_keys(StatusView.render("show.json", %{activity: first_status})), +                 "deleted", +                 false +               ) -      assert first_group["account"]["id"] == target_user.id +      assert(first_group["account"]["id"] == target_user.id)        assert length(first_group["actors"]) == 1        assert hd(first_group["actors"])["id"] == reporter.id @@ -1675,11 +1675,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                   NaiveDateTime.from_iso8601!(act.data["published"])                 end).data["published"] -      assert second_group["status"] == %{ -               "id" => second_status.data["id"], -               "content" => second_status.object.data["content"], -               "published" => second_status.object.data["published"] -             } +      assert second_group["status"] == +               Map.put( +                 stringify_keys(StatusView.render("show.json", %{activity: second_status})), +                 "deleted", +                 false +               )        assert second_group["account"]["id"] == target_user.id @@ -1694,11 +1695,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                   NaiveDateTime.from_iso8601!(act.data["published"])                 end).data["published"] -      assert third_group["status"] == %{ -               "id" => third_status.data["id"], -               "content" => third_status.object.data["content"], -               "published" => third_status.object.data["published"] -             } +      assert third_group["status"] == +               Map.put( +                 stringify_keys(StatusView.render("show.json", %{activity: third_status})), +                 "deleted", +                 false +               )        assert third_group["account"]["id"] == target_user.id @@ -1708,6 +1710,70 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert Enum.map(third_group["reports"], & &1["id"]) --                 Enum.map(third_status_reports, & &1.id) == []      end + +    test "reopened report renders status data", %{ +      conn: conn, +      first_report: first_report, +      first_status: first_status +    } do +      {:ok, _} = CommonAPI.update_report_state(first_report.id, "resolved") + +      response = +        conn +        |> get("/api/pleroma/admin/grouped_reports") +        |> json_response(:ok) + +      first_group = Enum.find(response["reports"], &(&1["status"]["id"] == first_status.id)) + +      assert first_group["status"] == +               Map.put( +                 stringify_keys(StatusView.render("show.json", %{activity: first_status})), +                 "deleted", +                 false +               ) +    end + +    test "reopened report does not render status data if status has been deleted", %{ +      conn: conn, +      first_report: first_report, +      first_status: first_status, +      target_user: target_user +    } do +      {:ok, _} = CommonAPI.update_report_state(first_report.id, "resolved") +      {:ok, _} = CommonAPI.delete(first_status.id, target_user) + +      refute Activity.get_by_ap_id(first_status.id) + +      response = +        conn +        |> get("/api/pleroma/admin/grouped_reports") +        |> json_response(:ok) + +      assert Enum.find(response["reports"], &(&1["status"]["deleted"] == true))["status"][ +               "deleted" +             ] == true + +      assert length(Enum.filter(response["reports"], &(&1["status"]["deleted"] == false))) == 2 +    end + +    test "account not empty if status was deleted", %{ +      conn: conn, +      first_report: first_report, +      first_status: first_status, +      target_user: target_user +    } do +      {:ok, _} = CommonAPI.update_report_state(first_report.id, "resolved") +      {:ok, _} = CommonAPI.delete(first_status.id, target_user) + +      refute Activity.get_by_ap_id(first_status.id) + +      response = +        conn +        |> get("/api/pleroma/admin/grouped_reports") +        |> json_response(:ok) + +      assert Enum.find(response["reports"], &(&1["status"]["deleted"] == true))["account"] +    end    end    describe "POST /api/pleroma/admin/reports/:id/respond" do | 
