From 54a6855ddfb4b47b91b8fe2c184bbca3dbc2884d Mon Sep 17 00:00:00 2001
From: lain <lain@soykaf.club>
Date: Tue, 11 Aug 2020 14:00:21 +0200
Subject: [PATCH] Transmogrifier Tests: Extract Accept handling

---
 .../transmogrifier/accept_handling_test.exs        | 113 +++++++++++++++++++++
 test/web/activity_pub/transmogrifier_test.exs      | 102 +------------------
 2 files changed, 114 insertions(+), 101 deletions(-)
 create mode 100644 test/web/activity_pub/transmogrifier/accept_handling_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
index 000000000..3c4e134ff
--- /dev/null
+++ b/test/web/activity_pub/transmogrifier/accept_handling_test.exs
@@ -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
diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs
index 6dd9a3fec..52b4178bf 100644
--- a/test/web/activity_pub/transmogrifier_test.exs
+++ b/test/web/activity_pub/transmogrifier_test.exs
@@ -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)