diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/side_effects_test.exs | 25 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier/announce_handling_test.exs | 20 | ||||
| -rw-r--r-- | test/web/common_api/common_api_test.exs | 13 | 
3 files changed, 49 insertions, 9 deletions
| diff --git a/test/web/activity_pub/side_effects_test.exs b/test/web/activity_pub/side_effects_test.exs index a46254a05..5dede3957 100644 --- a/test/web/activity_pub/side_effects_test.exs +++ b/test/web/activity_pub/side_effects_test.exs @@ -289,4 +289,29 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do        assert Repo.get_by(Notification, user_id: poster.id, activity_id: like.id)      end    end + +  describe "announce objects" do +    setup do +      poster = insert(:user) +      user = insert(:user) +      {:ok, post} = CommonAPI.post(poster, %{status: "hey"}) + +      {:ok, announce_data, _meta} = Builder.announce(user, post.object) +      {:ok, announce, _meta} = ActivityPub.persist(announce_data, local: true) + +      %{announce: announce, user: user, poster: poster} +    end + +    test "add the announce to the original object", %{announce: announce, user: user} do +      {:ok, announce, _} = SideEffects.handle(announce) +      object = Object.get_by_ap_id(announce.data["object"]) +      assert object.data["announcement_count"] == 1 +      assert user.ap_id in object.data["announcements"] +    end + +    test "creates a notification", %{announce: announce, poster: poster} do +      {:ok, announce, _} = SideEffects.handle(announce) +      assert Repo.get_by(Notification, user_id: poster.id, activity_id: announce.id) +    end +  end  end diff --git a/test/web/activity_pub/transmogrifier/announce_handling_test.exs b/test/web/activity_pub/transmogrifier/announce_handling_test.exs index 8a4af6546..50bcb307f 100644 --- a/test/web/activity_pub/transmogrifier/announce_handling_test.exs +++ b/test/web/activity_pub/transmogrifier/announce_handling_test.exs @@ -13,7 +13,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.AnnounceHandlingTest do    import Pleroma.Factory    test "it works for incoming honk announces" do -    _user = insert(:user, ap_id: "https://honktest/u/test", local: false) +    user = insert(:user, ap_id: "https://honktest/u/test", local: false)      other_user = insert(:user)      {:ok, post} = CommonAPI.post(other_user, %{status: "bonkeronk"}) @@ -28,6 +28,11 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.AnnounceHandlingTest do      }      {:ok, %Activity{local: false}} = Transmogrifier.handle_incoming(announce) + +    object = Object.get_by_ap_id(post.data["object"]) + +    assert length(object.data["announcements"]) == 1 +    assert user.ap_id in object.data["announcements"]    end    test "it works for incoming announces with actor being inlined (kroeg)" do @@ -48,8 +53,15 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.AnnounceHandlingTest do    end    test "it works for incoming announces, fetching the announced object" do -    Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) -    data = File.read!("test/fixtures/mastodon-announce.json") |> Poison.decode!() +    data = +      File.read!("test/fixtures/mastodon-announce.json") +      |> Poison.decode!() +      |> Map.put("object", "http://mastodon.example.org/users/admin/statuses/99541947525187367") + +    Tesla.Mock.mock(fn +      %{method: :get} -> +        %Tesla.Env{status: 200, body: File.read!("test/fixtures/mastodon-note-object.json")} +    end)      _user = insert(:user, local: false, ap_id: data["actor"]) @@ -92,6 +104,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.AnnounceHandlingTest do      assert Activity.get_create_by_object_ap_id(data["object"]).id == activity.id    end +  # Ignore inlined activities for now +  @tag skip: true    test "it works for incoming announces with an inlined activity" do      data =        File.read!("test/fixtures/mastodon-announce-private.json") diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 52e95397c..e68a6a7d2 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -416,7 +416,8 @@ defmodule Pleroma.Web.CommonAPITest do        {:ok, activity} = CommonAPI.post(other_user, %{status: "cofe"}) -      {:ok, %Activity{}, _} = CommonAPI.repeat(activity.id, user) +      {:ok, %Activity{} = announce_activity} = CommonAPI.repeat(activity.id, user) +      assert Visibility.is_public?(announce_activity)      end      test "can't repeat a repeat" do @@ -424,9 +425,9 @@ defmodule Pleroma.Web.CommonAPITest do        other_user = insert(:user)        {:ok, activity} = CommonAPI.post(other_user, %{status: "cofe"}) -      {:ok, %Activity{} = announce, _} = CommonAPI.repeat(activity.id, other_user) +      {:ok, %Activity{} = announce} = CommonAPI.repeat(activity.id, other_user) -      refute match?({:ok, %Activity{}, _}, CommonAPI.repeat(announce.id, user)) +      refute match?({:ok, %Activity{}}, CommonAPI.repeat(announce.id, user))      end      test "repeating a status privately" do @@ -435,7 +436,7 @@ defmodule Pleroma.Web.CommonAPITest do        {:ok, activity} = CommonAPI.post(other_user, %{status: "cofe"}) -      {:ok, %Activity{} = announce_activity, _} = +      {:ok, %Activity{} = announce_activity} =          CommonAPI.repeat(activity.id, user, %{visibility: "private"})        assert Visibility.is_private?(announce_activity) @@ -458,8 +459,8 @@ defmodule Pleroma.Web.CommonAPITest do        other_user = insert(:user)        {:ok, activity} = CommonAPI.post(other_user, %{status: "cofe"}) -      {:ok, %Activity{} = announce, object} = CommonAPI.repeat(activity.id, user) -      {:ok, ^announce, ^object} = CommonAPI.repeat(activity.id, user) +      {:ok, %Activity{} = announce} = CommonAPI.repeat(activity.id, user) +      {:ok, ^announce} = CommonAPI.repeat(activity.id, user)      end      test "favoriting a status twice returns ok, but without the like activity" do | 
