diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 65 | ||||
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 127 | ||||
| -rw-r--r-- | test/web/admin_api/views/report_view_test.exs | 2 | 
3 files changed, 139 insertions, 55 deletions
| diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 97844a407..ad1fb6d02 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -608,6 +608,39 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      refute repeat_activity in activities    end +  test "does return activities from followed users on blocked domains" do +    domain = "meanies.social" +    domain_user = insert(:user, %{ap_id: "https://#{domain}/@pundit"}) +    blocker = insert(:user) + +    {:ok, blocker} = User.follow(blocker, domain_user) +    {:ok, blocker} = User.block_domain(blocker, domain) + +    assert User.following?(blocker, domain_user) +    assert User.blocks_domain?(blocker, domain_user) +    refute User.blocks?(blocker, domain_user) + +    note = insert(:note, %{data: %{"actor" => domain_user.ap_id}}) +    activity = insert(:note_activity, %{note: note}) + +    activities = +      ActivityPub.fetch_activities([], %{"blocking_user" => blocker, "skip_preload" => true}) + +    assert activity in activities + +    # And check that if the guy we DO follow boosts someone else from their domain, +    # that should be hidden +    another_user = insert(:user, %{ap_id: "https://#{domain}/@meanie2"}) +    bad_note = insert(:note, %{data: %{"actor" => another_user.ap_id}}) +    bad_activity = insert(:note_activity, %{note: bad_note}) +    {:ok, repeat_activity, _} = CommonAPI.repeat(bad_activity.id, domain_user) + +    activities = +      ActivityPub.fetch_activities([], %{"blocking_user" => blocker, "skip_preload" => true}) + +    refute repeat_activity in activities +  end +    test "doesn't return muted activities" do      activity_one = insert(:note_activity)      activity_two = insert(:note_activity) @@ -1592,6 +1625,38 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      end    end +  describe "fetch_favourites/3" do +    test "returns a favourite activities sorted by adds to favorite" do +      user = insert(:user) +      other_user = insert(:user) +      user1 = insert(:user) +      user2 = insert(:user) +      {:ok, a1} = CommonAPI.post(user1, %{"status" => "bla"}) +      {:ok, _a2} = CommonAPI.post(user2, %{"status" => "traps are happy"}) +      {:ok, a3} = CommonAPI.post(user2, %{"status" => "Trees Are "}) +      {:ok, a4} = CommonAPI.post(user2, %{"status" => "Agent Smith "}) +      {:ok, a5} = CommonAPI.post(user1, %{"status" => "Red or Blue "}) + +      {:ok, _, _} = CommonAPI.favorite(a4.id, user) +      {:ok, _, _} = CommonAPI.favorite(a3.id, other_user) +      Process.sleep(1000) +      {:ok, _, _} = CommonAPI.favorite(a3.id, user) +      {:ok, _, _} = CommonAPI.favorite(a5.id, other_user) +      Process.sleep(1000) +      {:ok, _, _} = CommonAPI.favorite(a5.id, user) +      {:ok, _, _} = CommonAPI.favorite(a4.id, other_user) +      Process.sleep(1000) +      {:ok, _, _} = CommonAPI.favorite(a1.id, user) +      {:ok, _, _} = CommonAPI.favorite(a1.id, other_user) +      result = ActivityPub.fetch_favourites(user) + +      assert Enum.map(result, & &1.id) == [a1.id, a5.id, a3.id, a4.id] + +      result = ActivityPub.fetch_favourites(user, %{"limit" => 2}) +      assert Enum.map(result, & &1.id) == [a1.id, a5.id] +    end +  end +    describe "Move activity" do      test "create" do        %{ap_id: old_ap_id} = old_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 23ca7f110..49ff005b6 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -10,6 +10,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do    alias Pleroma.HTML    alias Pleroma.ModerationLog    alias Pleroma.Repo +  alias Pleroma.ReportNote    alias Pleroma.Tests.ObanHelpers    alias Pleroma.User    alias Pleroma.UserInviteToken @@ -1831,61 +1832,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end -  describe "POST /api/pleroma/admin/reports/:id/respond" do -    setup %{conn: conn} do -      admin = insert(:user, is_admin: true) - -      %{conn: assign(conn, :user, admin), admin: admin} -    end - -    test "returns created dm", %{conn: conn, admin: admin} do -      [reporter, target_user] = insert_pair(:user) -      activity = insert(:note_activity, user: target_user) - -      {:ok, %{id: report_id}} = -        CommonAPI.report(reporter, %{ -          "account_id" => target_user.id, -          "comment" => "I feel offended", -          "status_ids" => [activity.id] -        }) - -      response = -        conn -        |> post("/api/pleroma/admin/reports/#{report_id}/respond", %{ -          "status" => "I will check it out" -        }) -        |> json_response(:ok) - -      recipients = Enum.map(response["mentions"], & &1["username"]) - -      assert reporter.nickname in recipients -      assert response["content"] == "I will check it out" -      assert response["visibility"] == "direct" - -      log_entry = Repo.one(ModerationLog) - -      assert ModerationLog.get_log_entry_message(log_entry) == -               "@#{admin.nickname} responded with 'I will check it out' to report ##{ -                 response["id"] -               }" -    end - -    test "returns 400 when status is missing", %{conn: conn} do -      conn = post(conn, "/api/pleroma/admin/reports/test/respond") - -      assert json_response(conn, :bad_request) == "Invalid parameters" -    end - -    test "returns 404 when report id is invalid", %{conn: conn} do -      conn = -        post(conn, "/api/pleroma/admin/reports/test/respond", %{ -          "status" => "foo" -        }) - -      assert json_response(conn, :not_found) == "Not found" -    end -  end -    describe "PUT /api/pleroma/admin/statuses/:id" do      setup %{conn: conn} do        admin = insert(:user, is_admin: true) @@ -3082,6 +3028,77 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 }"      end    end + +  describe "POST /reports/:id/notes" do +    setup do +      admin = insert(:user, is_admin: true) +      [reporter, target_user] = insert_pair(:user) +      activity = insert(:note_activity, user: target_user) + +      {:ok, %{id: report_id}} = +        CommonAPI.report(reporter, %{ +          "account_id" => target_user.id, +          "comment" => "I feel offended", +          "status_ids" => [activity.id] +        }) + +      build_conn() +      |> assign(:user, admin) +      |> post("/api/pleroma/admin/reports/#{report_id}/notes", %{ +        content: "this is disgusting!" +      }) + +      build_conn() +      |> assign(:user, admin) +      |> post("/api/pleroma/admin/reports/#{report_id}/notes", %{ +        content: "this is disgusting2!" +      }) + +      %{ +        admin_id: admin.id, +        report_id: report_id, +        admin: admin +      } +    end + +    test "it creates report note", %{admin_id: admin_id, report_id: report_id} do +      [note, _] = Repo.all(ReportNote) + +      assert %{ +               activity_id: ^report_id, +               content: "this is disgusting!", +               user_id: ^admin_id +             } = note +    end + +    test "it returns reports with notes", %{admin: admin} do +      conn = +        build_conn() +        |> assign(:user, admin) +        |> get("/api/pleroma/admin/reports") + +      response = json_response(conn, 200) +      notes = hd(response["reports"])["notes"] +      [note, _] = notes + +      assert note["user"]["nickname"] == admin.nickname +      assert note["content"] == "this is disgusting!" +      assert note["created_at"] +      assert response["total"] == 1 +    end + +    test "it deletes the note", %{admin: admin, report_id: report_id} do +      assert ReportNote |> Repo.all() |> length() == 2 + +      [note, _] = Repo.all(ReportNote) + +      build_conn() +      |> assign(:user, admin) +      |> delete("/api/pleroma/admin/reports/#{report_id}/notes/#{note.id}") + +      assert ReportNote |> Repo.all() |> length() == 1 +    end +  end  end  # Needed for testing diff --git a/test/web/admin_api/views/report_view_test.exs b/test/web/admin_api/views/report_view_test.exs index ef4a806e4..a0c6eab3c 100644 --- a/test/web/admin_api/views/report_view_test.exs +++ b/test/web/admin_api/views/report_view_test.exs @@ -30,6 +30,7 @@ defmodule Pleroma.Web.AdminAPI.ReportViewTest do            Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: other_user})          ),        statuses: [], +      notes: [],        state: "open",        id: activity.id      } @@ -65,6 +66,7 @@ defmodule Pleroma.Web.AdminAPI.ReportViewTest do          ),        statuses: [StatusView.render("show.json", %{activity: activity})],        state: "open", +      notes: [],        id: report_activity.id      } | 
