Fix unfollows
[akkoma] / test / web / activity_pub / activity_pub_test.exs
index d9f00613ad378ef106a278f53932938b6b89dc4c..35f0deffebd65cb3cfec8b87bf3940e478396544 100644 (file)
@@ -2,6 +2,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
   use Pleroma.DataCase
   alias Pleroma.Web.ActivityPub.ActivityPub
   alias Pleroma.Web.ActivityPub.Utils
+  alias Pleroma.Web.CommonAPI
   alias Pleroma.{Activity, Object, User}
   alias Pleroma.Builders.ActivityBuilder
 
@@ -130,12 +131,15 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
   test "doesn't return blocked activities" do
     activity_one = insert(:note_activity)
     activity_two = insert(:note_activity)
+    activity_three = insert(:note_activity)
     user = insert(:user)
+    booster = insert(:user)
     {:ok, user} = User.block(user, %{ap_id: activity_one.data["actor"]})
 
     activities = ActivityPub.fetch_activities([], %{"blocking_user" => user})
 
     assert Enum.member?(activities, activity_two)
+    assert Enum.member?(activities, activity_three)
     refute Enum.member?(activities, activity_one)
 
     {:ok, user} = User.unblock(user, %{ap_id: activity_one.data["actor"]})
@@ -143,15 +147,43 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
     activities = ActivityPub.fetch_activities([], %{"blocking_user" => user})
 
     assert Enum.member?(activities, activity_two)
+    assert Enum.member?(activities, activity_three)
+    assert Enum.member?(activities, activity_one)
+
+    {:ok, user} = User.block(user, %{ap_id: activity_three.data["actor"]})
+    {:ok, _announce, %{data: %{"id" => id}}} = CommonAPI.repeat(activity_three.id, booster)
+    %Activity{} = boost_activity = Activity.get_create_activity_by_object_ap_id(id)
+    activity_three = Repo.get(Activity, activity_three.id)
+
+    activities = ActivityPub.fetch_activities([], %{"blocking_user" => user})
+
+    assert Enum.member?(activities, activity_two)
+    refute Enum.member?(activities, activity_three)
+    refute Enum.member?(activities, boost_activity)
     assert Enum.member?(activities, activity_one)
 
     activities = ActivityPub.fetch_activities([], %{"blocking_user" => nil})
 
     assert Enum.member?(activities, activity_two)
+    assert Enum.member?(activities, activity_three)
+    assert Enum.member?(activities, boost_activity)
     assert Enum.member?(activities, activity_one)
   end
 
   describe "public fetch activities" do
+    test "doesn't retrieve unlisted activities" do
+      user = insert(:user)
+
+      {:ok, unlisted_activity} =
+        CommonAPI.post(user, %{"status" => "yeah", "visibility" => "unlisted"})
+
+      {:ok, listed_activity} = CommonAPI.post(user, %{"status" => "yeah"})
+
+      [activity] = ActivityPub.fetch_public_activities()
+
+      assert activity == listed_activity
+    end
+
     test "retrieves public activities" do
       _activities = ActivityPub.fetch_public_activities()
 
@@ -245,7 +277,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
       {:ok, like_activity, object} = ActivityPub.like(user, object)
       assert object.data["like_count"] == 1
 
-      {:ok, object} = ActivityPub.unlike(user, object)
+      {:ok, _, _, object} = ActivityPub.unlike(user, object)
       assert object.data["like_count"] == 0
 
       assert Repo.get(Activity, like_activity.id) == nil
@@ -297,7 +329,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
              ]
 
       assert unannounce_activity.data["type"] == "Undo"
-      assert unannounce_activity.data["object"] == announce_activity.data["id"]
+      assert unannounce_activity.data["object"] == announce_activity.data
       assert unannounce_activity.data["actor"] == user.ap_id
       assert unannounce_activity.data["context"] == announce_activity.data["context"]
 
@@ -393,7 +425,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
 
       assert activity.data["type"] == "Undo"
       assert activity.data["actor"] == follower.ap_id
-      assert activity.data["object"] == follow_activity.data["id"]
+      assert activity.data["object"]["id"] == follow_activity.data["id"]
     end
   end