diff options
author | raeno <just.raeno@gmail.com> | 2018-12-18 14:59:32 +0100 |
---|---|---|
committer | raeno <just.raeno@gmail.com> | 2018-12-18 14:59:32 +0100 |
commit | a3003364598b42849e384a216948dad810481f51 (patch) | |
tree | 2ed2b04efab457220a60fb7630906b1b26f24df3 /test/tasks/relay_test.exs | |
parent | 30812f84518f1b2fcc70a416d1a6b9f81264f3a5 (diff) | |
parent | b6ae412fcd7c67d64dd1467e8e35d17140e992df (diff) | |
download | pleroma-a3003364598b42849e384a216948dad810481f51.tar.gz pleroma-a3003364598b42849e384a216948dad810481f51.zip |
Merge branch 'develop' into oembed_provider
Diffstat (limited to 'test/tasks/relay_test.exs')
-rw-r--r-- | test/tasks/relay_test.exs | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/tasks/relay_test.exs b/test/tasks/relay_test.exs new file mode 100644 index 000000000..737293865 --- /dev/null +++ b/test/tasks/relay_test.exs @@ -0,0 +1,65 @@ +defmodule Mix.Tasks.Pleroma.RelayTest do + alias Pleroma.Activity + alias Pleroma.Web.ActivityPub.{ActivityPub, Relay, Utils} + alias Pleroma.User + use Pleroma.DataCase + + setup_all do + Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) + + Mix.shell(Mix.Shell.Process) + + on_exit(fn -> + Mix.shell(Mix.Shell.IO) + end) + + :ok + end + + describe "running follow" do + test "relay is followed" do + target_instance = "http://mastodon.example.org/users/admin" + + Mix.Tasks.Pleroma.Relay.run(["follow", target_instance]) + + local_user = Relay.get_actor() + assert local_user.ap_id =~ "/relay" + + target_user = User.get_by_ap_id(target_instance) + refute target_user.local + + activity = Utils.fetch_latest_follow(local_user, target_user) + assert activity.data["type"] == "Follow" + assert activity.data["actor"] == local_user.ap_id + assert activity.data["object"] == target_user.ap_id + end + end + + describe "running unfollow" do + test "relay is unfollowed" do + target_instance = "http://mastodon.example.org/users/admin" + + Mix.Tasks.Pleroma.Relay.run(["follow", target_instance]) + + %User{ap_id: follower_id} = local_user = Relay.get_actor() + target_user = User.get_by_ap_id(target_instance) + follow_activity = Utils.fetch_latest_follow(local_user, target_user) + + Mix.Tasks.Pleroma.Relay.run(["unfollow", target_instance]) + + cancelled_activity = Activity.get_by_ap_id(follow_activity.data["id"]) + assert cancelled_activity.data["state"] == "cancelled" + + [undo_activity] = + ActivityPub.fetch_activities([], %{ + "type" => "Undo", + "actor_id" => follower_id, + "limit" => 1 + }) + + assert undo_activity.data["type"] == "Undo" + assert undo_activity.data["actor"] == local_user.ap_id + assert undo_activity.data["object"] == cancelled_activity.data + end + end +end |