Transmogrifier Tests: Extract rejections.
authorlain <lain@soykaf.club>
Wed, 12 Aug 2020 11:39:54 +0000 (13:39 +0200)
committerlain <lain@soykaf.club>
Wed, 12 Aug 2020 11:39:54 +0000 (13:39 +0200)
test/web/activity_pub/transmogrifier/follow_handling_test.exs
test/web/activity_pub/transmogrifier/reject_handling_test.exs [new file with mode: 0644]
test/web/activity_pub/transmogrifier_test.exs

index 17e764ca14f835d2178640eed9730a1eefb8e5c1..757d90941f85fd93c16d9af7696774cb63f70916 100644 (file)
@@ -185,5 +185,24 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.FollowHandlingTest do
       assert data["id"] == "https://hubzilla.example.org/channel/kaniini#follows/2"
       assert User.following?(User.get_cached_by_ap_id(data["actor"]), user)
     end
+
+    test "it works for incoming follows to locked account" do
+      pending_follower = insert(:user, ap_id: "http://mastodon.example.org/users/admin")
+      user = insert(:user, locked: true)
+
+      data =
+        File.read!("test/fixtures/mastodon-follow-activity.json")
+        |> Poison.decode!()
+        |> Map.put("object", user.ap_id)
+
+      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
+
+      assert data["type"] == "Follow"
+      assert data["object"] == user.ap_id
+      assert data["state"] == "pending"
+      assert data["actor"] == "http://mastodon.example.org/users/admin"
+
+      assert [^pending_follower] = User.get_follow_requests(user)
+    end
   end
 end
diff --git a/test/web/activity_pub/transmogrifier/reject_handling_test.exs b/test/web/activity_pub/transmogrifier/reject_handling_test.exs
new file mode 100644 (file)
index 0000000..5e52486
--- /dev/null
@@ -0,0 +1,67 @@
+# 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.RejectHandlingTest do
+  use Pleroma.DataCase
+
+  alias Pleroma.Activity
+  alias Pleroma.User
+  alias Pleroma.Web.ActivityPub.Transmogrifier
+  alias Pleroma.Web.CommonAPI
+
+  import Pleroma.Factory
+
+  test "it fails for incoming rejects which cannot be correlated" do
+    follower = insert(:user)
+    followed = insert(:user, locked: true)
+
+    accept_data =
+      File.read!("test/fixtures/mastodon-reject-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 works for incoming rejects which are referenced by IRI only" do
+    follower = insert(:user)
+    followed = insert(:user, locked: true)
+
+    {:ok, follower} = User.follow(follower, followed)
+    {:ok, _, _, follow_activity} = CommonAPI.follow(follower, followed)
+
+    assert User.following?(follower, followed) == true
+
+    reject_data =
+      File.read!("test/fixtures/mastodon-reject-activity.json")
+      |> Poison.decode!()
+      |> Map.put("actor", followed.ap_id)
+      |> Map.put("object", follow_activity.data["id"])
+
+    {:ok, %Activity{data: _}} = Transmogrifier.handle_incoming(reject_data)
+
+    follower = User.get_cached_by_id(follower.id)
+
+    assert User.following?(follower, followed) == false
+  end
+
+  test "it rejects activities without a valid ID" do
+    user = insert(:user)
+
+    data =
+      File.read!("test/fixtures/mastodon-follow-activity.json")
+      |> Poison.decode!()
+      |> Map.put("object", user.ap_id)
+      |> Map.put("id", "")
+
+    :error = Transmogrifier.handle_incoming(data)
+  end
+end
index 13da864d1ef83511e4a8a76212f3142b50eef0a4..0dd4e6e47b00f52ef393b4642585a334c22e0bef 100644 (file)
@@ -384,78 +384,6 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
       refute User.following?(User.get_cached_by_ap_id(data["actor"]), user)
     end
 
-    test "it works for incoming follows to locked account" do
-      pending_follower = insert(:user, ap_id: "http://mastodon.example.org/users/admin")
-      user = insert(:user, locked: true)
-
-      data =
-        File.read!("test/fixtures/mastodon-follow-activity.json")
-        |> Poison.decode!()
-        |> Map.put("object", user.ap_id)
-
-      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
-
-      assert data["type"] == "Follow"
-      assert data["object"] == user.ap_id
-      assert data["state"] == "pending"
-      assert data["actor"] == "http://mastodon.example.org/users/admin"
-
-      assert [^pending_follower] = User.get_follow_requests(user)
-    end
-
-    test "it fails for incoming rejects which cannot be correlated" do
-      follower = insert(:user)
-      followed = insert(:user, locked: true)
-
-      accept_data =
-        File.read!("test/fixtures/mastodon-reject-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 works for incoming rejects which are referenced by IRI only" do
-      follower = insert(:user)
-      followed = insert(:user, locked: true)
-
-      {:ok, follower} = User.follow(follower, followed)
-      {:ok, _, _, follow_activity} = CommonAPI.follow(follower, followed)
-
-      assert User.following?(follower, followed) == true
-
-      reject_data =
-        File.read!("test/fixtures/mastodon-reject-activity.json")
-        |> Poison.decode!()
-        |> Map.put("actor", followed.ap_id)
-        |> Map.put("object", follow_activity.data["id"])
-
-      {:ok, %Activity{data: _}} = Transmogrifier.handle_incoming(reject_data)
-
-      follower = User.get_cached_by_id(follower.id)
-
-      assert User.following?(follower, followed) == false
-    end
-
-    test "it rejects activities without a valid ID" do
-      user = insert(:user)
-
-      data =
-        File.read!("test/fixtures/mastodon-follow-activity.json")
-        |> Poison.decode!()
-        |> Map.put("object", user.ap_id)
-        |> Map.put("id", "")
-
-      :error = Transmogrifier.handle_incoming(data)
-    end
-
     test "skip converting the content when it is nil" do
       object_id = "https://peertube.social/videos/watch/278d2b7c-0f38-4aaa-afe6-9ecc0c4a34fe"