tests: transmogrifier: ensure incoming blocks have the same effect as local blocks
authorWilliam Pitcock <nenolod@dereferenced.org>
Tue, 19 Jun 2018 00:57:57 +0000 (00:57 +0000)
committerWilliam Pitcock <nenolod@dereferenced.org>
Tue, 19 Jun 2018 00:59:28 +0000 (00:59 +0000)
test/web/activity_pub/transmogrifier_test.exs

index 7e771b9f8f5232c7df84abb7f68df6fcaba94d35..1e135d65f9f5dcefb72e532c457f9ab0467283cf 100644 (file)
@@ -382,6 +382,37 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
       assert User.blocks?(blocker, user)
     end
 
+    test "incoming blocks successfully tear down any follow relationship" do
+      blocker = insert(:user)
+      blocked = insert(:user)
+
+      data =
+        File.read!("test/fixtures/mastodon-block-activity.json")
+        |> Poison.decode!()
+        |> Map.put("object", blocked.ap_id)
+        |> Map.put("actor", blocker.ap_id)
+
+      {:ok, blocker} = User.follow(blocker, blocked)
+      {:ok, blocked} = User.follow(blocked, blocker)
+
+      assert User.following?(blocker, blocked)
+      assert User.following?(blocked, blocker)
+
+      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
+
+      assert data["type"] == "Block"
+      assert data["object"] == blocked.ap_id
+      assert data["actor"] == blocker.ap_id
+
+      blocker = User.get_by_ap_id(data["actor"])
+      blocked = User.get_by_ap_id(data["object"])
+
+      assert User.blocks?(blocker, blocked)
+
+      refute User.following?(blocker, blocked)
+      refute User.following?(blocked, blocker)
+    end
+
     test "it works for incoming unblocks with an existing block" do
       user = insert(:user)