Merge remote-tracking branch 'upstream/develop' into registration-workflow
[akkoma] / test / pleroma / web / activity_pub / transmogrifier / reject_handling_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.ActivityPub.Transmogrifier.RejectHandlingTest do
6 use Pleroma.DataCase
7
8 alias Pleroma.Activity
9 alias Pleroma.User
10 alias Pleroma.Web.ActivityPub.Transmogrifier
11 alias Pleroma.Web.CommonAPI
12
13 import Pleroma.Factory
14
15 test "it fails for incoming rejects which cannot be correlated" do
16 follower = insert(:user)
17 followed = insert(:user, is_locked: true)
18
19 accept_data =
20 File.read!("test/fixtures/mastodon-reject-activity.json")
21 |> Jason.decode!()
22 |> Map.put("actor", followed.ap_id)
23
24 accept_data =
25 Map.put(accept_data, "object", Map.put(accept_data["object"], "actor", follower.ap_id))
26
27 {:error, _} = Transmogrifier.handle_incoming(accept_data)
28
29 follower = User.get_cached_by_id(follower.id)
30
31 refute User.following?(follower, followed) == true
32 end
33
34 test "it works for incoming rejects which are referenced by IRI only" do
35 follower = insert(:user)
36 followed = insert(:user, is_locked: true)
37
38 {:ok, follower, followed} = User.follow(follower, followed)
39 {:ok, _, _, follow_activity} = CommonAPI.follow(follower, followed)
40
41 assert User.following?(follower, followed) == true
42
43 reject_data =
44 File.read!("test/fixtures/mastodon-reject-activity.json")
45 |> Jason.decode!()
46 |> Map.put("actor", followed.ap_id)
47 |> Map.put("object", follow_activity.data["id"])
48
49 {:ok, %Activity{data: _}} = Transmogrifier.handle_incoming(reject_data)
50
51 follower = User.get_cached_by_id(follower.id)
52
53 assert User.following?(follower, followed) == false
54 end
55
56 test "it rejects activities without a valid ID" do
57 user = insert(:user)
58
59 data =
60 File.read!("test/fixtures/mastodon-follow-activity.json")
61 |> Jason.decode!()
62 |> Map.put("object", user.ap_id)
63 |> Map.put("id", "")
64
65 :error = Transmogrifier.handle_incoming(data)
66 end
67 end