bugfix/follow-state #104
2 changed files with 20 additions and 4 deletions
|
@ -1448,13 +1448,19 @@ def block(%User{} = blocker, %User{} = blocked) do
|
|||
blocker
|
||||
end
|
||||
|
||||
# clear any requested follows as well
|
||||
# clear any requested follows from both sides as well
|
||||
blocked =
|
||||
case CommonAPI.reject_follow_request(blocked, blocker) do
|
||||
{:ok, %User{} = updated_blocked} -> updated_blocked
|
||||
nil -> blocked
|
||||
end
|
||||
|
||||
blocker =
|
||||
case CommonAPI.reject_follow_request(blocker, blocked) do
|
||||
{:ok, %User{} = updated_blocker} -> updated_blocker
|
||||
nil -> blocker
|
||||
end
|
||||
|
||||
unsubscribe(blocked, blocker)
|
||||
|
||||
unfollowing_blocked = Config.get([:activitypub, :unfollow_blocked], true)
|
||||
|
|
|
@ -61,9 +61,11 @@ test "it posts a poll" do
|
|||
describe "blocking" do
|
||||
setup do
|
||||
blocker = insert(:user)
|
||||
blocked = insert(:user)
|
||||
User.follow(blocker, blocked)
|
||||
User.follow(blocked, blocker)
|
||||
blocked = insert(:user, local: false)
|
||||
CommonAPI.follow(blocker, blocked)
|
||||
CommonAPI.follow(blocked, blocker)
|
||||
CommonAPI.accept_follow_request(blocker, blocked)
|
||||
CommonAPI.accept_follow_request(blocked, blocked)
|
||||
%{blocker: blocker, blocked: blocked}
|
||||
end
|
||||
|
||||
|
@ -72,6 +74,9 @@ test "it blocks and federates", %{blocker: blocker, blocked: blocked} do
|
|||
|
||||
with_mock Pleroma.Web.Federator,
|
||||
publish: fn _ -> nil end do
|
||||
assert User.get_follow_state(blocker, blocked) == :follow_accept
|
||||
refute is_nil(Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(blocker, blocked))
|
||||
|
||||
assert {:ok, block} = CommonAPI.block(blocker, blocked)
|
||||
|
||||
assert block.local
|
||||
|
@ -79,6 +84,11 @@ test "it blocks and federates", %{blocker: blocker, blocked: blocked} do
|
|||
refute User.following?(blocker, blocked)
|
||||
refute User.following?(blocked, blocker)
|
||||
|
||||
refute User.get_follow_state(blocker, blocked)
|
||||
|
||||
assert %{data: %{"state" => "reject"}} =
|
||||
Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(blocker, blocked)
|
||||
|
||||
assert called(Pleroma.Web.Federator.publish(block))
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue