1 defmodule Mix.Tasks.Pleroma.RelayTest do
3 alias Pleroma.Web.ActivityPub.{ActivityPub, Relay, Utils}
8 Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
10 Mix.shell(Mix.Shell.Process)
13 Mix.shell(Mix.Shell.IO)
19 describe "running follow" do
20 test "relay is followed" do
21 target_instance = "http://mastodon.example.org/users/admin"
23 Mix.Tasks.Pleroma.Relay.run(["follow", target_instance])
25 local_user = Relay.get_actor()
26 assert local_user.ap_id =~ "/relay"
28 target_user = User.get_by_ap_id(target_instance)
29 refute target_user.local
31 activity = Utils.fetch_latest_follow(local_user, target_user)
32 assert activity.data["type"] == "Follow"
33 assert activity.data["actor"] == local_user.ap_id
34 assert activity.data["object"] == target_user.ap_id
38 describe "running unfollow" do
39 test "relay is unfollowed" do
40 target_instance = "http://mastodon.example.org/users/admin"
42 Mix.Tasks.Pleroma.Relay.run(["follow", target_instance])
44 %User{ap_id: follower_id} = local_user = Relay.get_actor()
45 target_user = User.get_by_ap_id(target_instance)
46 follow_activity = Utils.fetch_latest_follow(local_user, target_user)
48 Mix.Tasks.Pleroma.Relay.run(["unfollow", target_instance])
50 cancelled_activity = Activity.get_by_ap_id(follow_activity.data["id"])
51 assert cancelled_activity.data["state"] == "cancelled"
54 ActivityPub.fetch_activities([], %{
56 "actor_id" => follower_id,
60 assert undo_activity.data["type"] == "Undo"
61 assert undo_activity.data["actor"] == local_user.ap_id
62 assert undo_activity.data["object"] == cancelled_activity.data