Transmogrifier Tests: Extract Accept handling
authorlain <lain@soykaf.club>
Tue, 11 Aug 2020 12:00:21 +0000 (14:00 +0200)
committerlain <lain@soykaf.club>
Tue, 11 Aug 2020 12:01:45 +0000 (14:01 +0200)
test/web/activity_pub/transmogrifier/accept_handling_test.exs [new file with mode: 0644]
test/web/activity_pub/transmogrifier_test.exs

diff --git a/test/web/activity_pub/transmogrifier/accept_handling_test.exs b/test/web/activity_pub/transmogrifier/accept_handling_test.exs
new file mode 100644 (file)
index 0000000..3c4e134
--- /dev/null
@@ -0,0 +1,113 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.ActivityPub.Transmogrifier.AcceptHandlingTest do
+  use Pleroma.DataCase
+
+  alias Pleroma.User
+  alias Pleroma.Web.ActivityPub.Transmogrifier
+  alias Pleroma.Web.CommonAPI
+
+  import Pleroma.Factory
+
+  test "it works for incoming accepts which were pre-accepted" do
+    follower = insert(:user)
+    followed = insert(:user)
+
+    {:ok, follower} = User.follow(follower, followed)
+    assert User.following?(follower, followed) == true
+
+    {:ok, _, _, follow_activity} = CommonAPI.follow(follower, followed)
+
+    accept_data =
+      File.read!("test/fixtures/mastodon-accept-activity.json")
+      |> Poison.decode!()
+      |> Map.put("actor", followed.ap_id)
+
+    object =
+      accept_data["object"]
+      |> Map.put("actor", follower.ap_id)
+      |> Map.put("id", follow_activity.data["id"])
+
+    accept_data = Map.put(accept_data, "object", object)
+
+    {:ok, activity} = Transmogrifier.handle_incoming(accept_data)
+    refute activity.local
+
+    assert activity.data["object"] == follow_activity.data["id"]
+
+    assert activity.data["id"] == accept_data["id"]
+
+    follower = User.get_cached_by_id(follower.id)
+
+    assert User.following?(follower, followed) == true
+  end
+
+  test "it works for incoming accepts which were orphaned" do
+    follower = insert(:user)
+    followed = insert(:user, locked: true)
+
+    {:ok, _, _, follow_activity} = CommonAPI.follow(follower, followed)
+
+    accept_data =
+      File.read!("test/fixtures/mastodon-accept-activity.json")
+      |> Poison.decode!()
+      |> Map.put("actor", followed.ap_id)
+
+    accept_data =
+      Map.put(accept_data, "object", Map.put(accept_data["object"], "actor", follower.ap_id))
+
+    {:ok, activity} = Transmogrifier.handle_incoming(accept_data)
+    assert activity.data["object"] == follow_activity.data["id"]
+
+    follower = User.get_cached_by_id(follower.id)
+
+    assert User.following?(follower, followed) == true
+  end
+
+  test "it works for incoming accepts which are referenced by IRI only" do
+    follower = insert(:user)
+    followed = insert(:user, locked: true)
+
+    {:ok, _, _, follow_activity} = CommonAPI.follow(follower, followed)
+
+    accept_data =
+      File.read!("test/fixtures/mastodon-accept-activity.json")
+      |> Poison.decode!()
+      |> Map.put("actor", followed.ap_id)
+      |> Map.put("object", follow_activity.data["id"])
+
+    {:ok, activity} = Transmogrifier.handle_incoming(accept_data)
+    assert activity.data["object"] == follow_activity.data["id"]
+
+    follower = User.get_cached_by_id(follower.id)
+
+    assert User.following?(follower, followed) == true
+
+    follower = User.get_by_id(follower.id)
+    assert follower.following_count == 1
+
+    followed = User.get_by_id(followed.id)
+    assert followed.follower_count == 1
+  end
+
+  test "it fails for incoming accepts which cannot be correlated" do
+    follower = insert(:user)
+    followed = insert(:user, locked: true)
+
+    accept_data =
+      File.read!("test/fixtures/mastodon-accept-activity.json")
+      |> Poison.decode!()
+      |> Map.put("actor", followed.ap_id)
+
+    accept_data =
+      Map.put(accept_data, "object", Map.put(accept_data["object"], "actor", follower.ap_id))
+
+    :error = Transmogrifier.handle_incoming(accept_data)
+
+    follower = User.get_cached_by_id(follower.id)
+
+    refute User.following?(follower, followed) == true
+  end
+end
index 6dd9a3fec13cf5f77faabe261e0c853dbdee885e..52b4178bfe4fee79bb888216a2436ec9ac896fba 100644 (file)
@@ -359,7 +359,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
       refute Map.has_key?(object_data, "reaction_count")
     end
 
-    test "it works for incomming unfollows with an existing follow" do
+    test "it works for incoming unfollows with an existing follow" do
       user = insert(:user)
 
       follow_data =
@@ -403,106 +403,6 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
       assert [^pending_follower] = User.get_follow_requests(user)
     end
 
-    test "it works for incoming accepts which were pre-accepted" do
-      follower = insert(:user)
-      followed = insert(:user)
-
-      {:ok, follower} = User.follow(follower, followed)
-      assert User.following?(follower, followed) == true
-
-      {:ok, _, _, follow_activity} = CommonAPI.follow(follower, followed)
-
-      accept_data =
-        File.read!("test/fixtures/mastodon-accept-activity.json")
-        |> Poison.decode!()
-        |> Map.put("actor", followed.ap_id)
-
-      object =
-        accept_data["object"]
-        |> Map.put("actor", follower.ap_id)
-        |> Map.put("id", follow_activity.data["id"])
-
-      accept_data = Map.put(accept_data, "object", object)
-
-      {:ok, activity} = Transmogrifier.handle_incoming(accept_data)
-      refute activity.local
-
-      assert activity.data["object"] == follow_activity.data["id"]
-
-      assert activity.data["id"] == accept_data["id"]
-
-      follower = User.get_cached_by_id(follower.id)
-
-      assert User.following?(follower, followed) == true
-    end
-
-    test "it works for incoming accepts which were orphaned" do
-      follower = insert(:user)
-      followed = insert(:user, locked: true)
-
-      {:ok, _, _, follow_activity} = CommonAPI.follow(follower, followed)
-
-      accept_data =
-        File.read!("test/fixtures/mastodon-accept-activity.json")
-        |> Poison.decode!()
-        |> Map.put("actor", followed.ap_id)
-
-      accept_data =
-        Map.put(accept_data, "object", Map.put(accept_data["object"], "actor", follower.ap_id))
-
-      {:ok, activity} = Transmogrifier.handle_incoming(accept_data)
-      assert activity.data["object"] == follow_activity.data["id"]
-
-      follower = User.get_cached_by_id(follower.id)
-
-      assert User.following?(follower, followed) == true
-    end
-
-    test "it works for incoming accepts which are referenced by IRI only" do
-      follower = insert(:user)
-      followed = insert(:user, locked: true)
-
-      {:ok, _, _, follow_activity} = CommonAPI.follow(follower, followed)
-
-      accept_data =
-        File.read!("test/fixtures/mastodon-accept-activity.json")
-        |> Poison.decode!()
-        |> Map.put("actor", followed.ap_id)
-        |> Map.put("object", follow_activity.data["id"])
-
-      {:ok, activity} = Transmogrifier.handle_incoming(accept_data)
-      assert activity.data["object"] == follow_activity.data["id"]
-
-      follower = User.get_cached_by_id(follower.id)
-
-      assert User.following?(follower, followed) == true
-
-      follower = User.get_by_id(follower.id)
-      assert follower.following_count == 1
-
-      followed = User.get_by_id(followed.id)
-      assert followed.follower_count == 1
-    end
-
-    test "it fails for incoming accepts which cannot be correlated" do
-      follower = insert(:user)
-      followed = insert(:user, locked: true)
-
-      accept_data =
-        File.read!("test/fixtures/mastodon-accept-activity.json")
-        |> Poison.decode!()
-        |> Map.put("actor", followed.ap_id)
-
-      accept_data =
-        Map.put(accept_data, "object", Map.put(accept_data["object"], "actor", follower.ap_id))
-
-      :error = Transmogrifier.handle_incoming(accept_data)
-
-      follower = User.get_cached_by_id(follower.id)
-
-      refute User.following?(follower, followed) == true
-    end
-
     test "it fails for incoming rejects which cannot be correlated" do
       follower = insert(:user)
       followed = insert(:user, locked: true)