diff options
author | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2020-08-13 16:04:43 +0000 |
---|---|---|
committer | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2020-08-13 16:04:43 +0000 |
commit | f99b8a25ebd89a11ad3b98fa5815cc4fd338eeb1 (patch) | |
tree | f783663a78a7b221e393cb289129b69a9eea64f5 /test/web/activity_pub/transmogrifier/reject_handling_test.exs | |
parent | 8d5f9d4b28e370aa0526c7c2f8cf7bfc1a78e6be (diff) | |
parent | 2e347e8286fab13075e6e39e64e56cb3ba14e7e8 (diff) | |
download | pleroma-f99b8a25ebd89a11ad3b98fa5815cc4fd338eeb1.tar.gz pleroma-f99b8a25ebd89a11ad3b98fa5815cc4fd338eeb1.zip |
Merge branch 'reject' into 'develop'
Move Accepts and Rejects to the Pipeline
See merge request pleroma/pleroma!2878
Diffstat (limited to 'test/web/activity_pub/transmogrifier/reject_handling_test.exs')
-rw-r--r-- | test/web/activity_pub/transmogrifier/reject_handling_test.exs | 67 |
1 files changed, 67 insertions, 0 deletions
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 index 000000000..7592fbe1c --- /dev/null +++ b/test/web/activity_pub/transmogrifier/reject_handling_test.exs @@ -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 |