Add user upgrade function.
[akkoma] / test / web / activity_pub / activity_pub_test.exs
index 2644ad5de0275f36b9af8f37508a8dfcccf07262..4aeabc5967ac401dfaa7e4525cc06d899c4cb1ba 100644 (file)
@@ -7,6 +7,18 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
 
   import Pleroma.Factory
 
+  describe "building a user from his ap id" do
+    test "it returns a user" do
+      user_id = "http://mastodon.example.org/users/admin"
+      {:ok, user} = ActivityPub.make_user_from_ap_id(user_id)
+      assert user.ap_id == user_id
+      assert user.nickname == "admin@mastodon.example.org"
+      assert user.info["source_data"]
+      assert user.info["ap_enabled"]
+      assert user.follower_address == "http://mastodon.example.org/users/admin/followers"
+    end
+  end
+
   describe "insertion" do
     test "returns the activity if one with the same id is already in" do
       activity = insert(:note_activity)
@@ -50,8 +62,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
 
   describe "create activities" do
     test "removes doubled 'to' recipients" do
-      {:ok, activity} = ActivityPub.create(["user1", "user1", "user2"], %User{ap_id: "1"}, "", %{})
+      {:ok, activity} = ActivityPub.create(%{to: ["user1", "user1", "user2"], actor: %User{ap_id: "1"}, context: "", object: %{}})
       assert activity.data["to"] == ["user1", "user2"]
+      assert activity.actor == "1"
+      assert activity.recipients == ["user1", "user2"]
     end
   end
 
@@ -100,10 +114,17 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
 
     assert Enum.member?(activities, activity_two)
     assert Enum.member?(activities, activity_one)
+
+    activities = ActivityPub.fetch_activities([], %{"blocking_user" => nil})
+
+    assert Enum.member?(activities, activity_two)
+    assert Enum.member?(activities, activity_one)
   end
 
   describe "public fetch activities" do
     test "retrieves public activities" do
+      _activities = ActivityPub.fetch_public_activities
+
       %{public: public} = ActivityBuilder.public_and_non_public
 
       activities = ActivityPub.fetch_public_activities
@@ -244,6 +265,31 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
     end
   end
 
+  describe "fetching an object" do
+    test "it fetches an object" do
+      {:ok, object} = ActivityPub.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367")
+      assert activity = Activity.get_create_activity_by_object_ap_id(object.data["id"])
+      assert activity.data["id"]
+
+      {:ok, object_again} = ActivityPub.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367")
+
+      assert [attachment] = object.data["attachment"]
+      assert is_list(attachment["url"])
+
+      assert object == object_again
+    end
+
+    test "it works with objects only available via Ostatus" do
+      {:ok, object} = ActivityPub.fetch_object_from_id("https://shitposter.club/notice/2827873")
+      assert activity = Activity.get_create_activity_by_object_ap_id(object.data["id"])
+      assert activity.data["id"]
+
+      {:ok, object_again} = ActivityPub.fetch_object_from_id("https://shitposter.club/notice/2827873")
+
+      assert object == object_again
+    end
+  end
+
   describe "following / unfollowing" do
     test "creates a follow activity" do
       follower = insert(:user)