diff options
author | lain <lain@soykaf.club> | 2020-09-29 14:37:49 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-09-29 14:37:49 +0000 |
commit | aa170caa7698b0b6cafffa6f638c7f7495a9b989 (patch) | |
tree | b210ca5a82834c4c1e2cec2e506a482aa9504de1 /test/web | |
parent | 30b79b0eb3379db5d5e82ce8c6ecbc00013eb69c (diff) | |
parent | 9a56ec25cb4de1284a03cac156a7664bd65b628f (diff) | |
download | pleroma-aa170caa7698b0b6cafffa6f638c7f7495a9b989.tar.gz pleroma-aa170caa7698b0b6cafffa6f638c7f7495a9b989.zip |
Merge branch 'issue/2170' into 'develop'
[#2170] Can't remove dead relay
See merge request pleroma/pleroma!3041
Diffstat (limited to 'test/web')
-rw-r--r-- | test/web/activity_pub/relay_test.exs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/web/activity_pub/relay_test.exs b/test/web/activity_pub/relay_test.exs index 9d657ac4f..3284980f7 100644 --- a/test/web/activity_pub/relay_test.exs +++ b/test/web/activity_pub/relay_test.exs @@ -63,6 +63,46 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do assert activity.data["to"] == [user.ap_id] refute "#{user.ap_id}/followers" in User.following(service_actor) end + + test "force unfollow when target service is dead" do + user = insert(:user) + user_ap_id = user.ap_id + user_id = user.id + + Tesla.Mock.mock(fn %{method: :get, url: ^user_ap_id} -> + %Tesla.Env{status: 404} + end) + + service_actor = Relay.get_actor() + CommonAPI.follow(service_actor, user) + assert "#{user.ap_id}/followers" in User.following(service_actor) + + assert Pleroma.Repo.get_by( + Pleroma.FollowingRelationship, + follower_id: service_actor.id, + following_id: user_id + ) + + Pleroma.Repo.delete(user) + Cachex.clear(:user_cache) + + assert {:ok, %Activity{} = activity} = Relay.unfollow(user_ap_id, %{force: true}) + + assert refresh_record(service_actor).following_count == 0 + + refute Pleroma.Repo.get_by( + Pleroma.FollowingRelationship, + follower_id: service_actor.id, + following_id: user_id + ) + + assert activity.actor == "#{Pleroma.Web.Endpoint.url()}/relay" + assert user.ap_id in activity.recipients + assert activity.data["type"] == "Undo" + assert activity.data["actor"] == service_actor.ap_id + assert activity.data["to"] == [user_ap_id] + refute "#{user.ap_id}/followers" in User.following(service_actor) + end end describe "publish/1" do |