forked from AkkomaGang/akkoma
Blocking: Don't federate if the options is set.
This commit is contained in:
parent
44bb7cfccd
commit
84f9ca1956
2 changed files with 55 additions and 0 deletions
|
@ -31,6 +31,15 @@ def validate(%{"type" => "Block"} = block_activity, meta) do
|
||||||
|> BlockValidator.cast_and_validate()
|
|> BlockValidator.cast_and_validate()
|
||||||
|> Ecto.Changeset.apply_action(:insert) do
|
|> Ecto.Changeset.apply_action(:insert) do
|
||||||
block_activity = stringify_keys(block_activity)
|
block_activity = stringify_keys(block_activity)
|
||||||
|
outgoing_blocks = Pleroma.Config.get([:activitypub, :outgoing_blocks])
|
||||||
|
|
||||||
|
meta =
|
||||||
|
if !outgoing_blocks do
|
||||||
|
Keyword.put(meta, :do_not_federate, true)
|
||||||
|
else
|
||||||
|
meta
|
||||||
|
end
|
||||||
|
|
||||||
{:ok, block_activity, meta}
|
{:ok, block_activity, meta}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -25,6 +25,52 @@ defmodule Pleroma.Web.CommonAPITest do
|
||||||
setup do: clear_config([:instance, :limit])
|
setup do: clear_config([:instance, :limit])
|
||||||
setup do: clear_config([:instance, :max_pinned_statuses])
|
setup do: clear_config([:instance, :max_pinned_statuses])
|
||||||
|
|
||||||
|
describe "blocking" do
|
||||||
|
setup do
|
||||||
|
blocker = insert(:user)
|
||||||
|
blocked = insert(:user)
|
||||||
|
User.follow(blocker, blocked)
|
||||||
|
User.follow(blocked, blocker)
|
||||||
|
%{blocker: blocker, blocked: blocked}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it blocks and federates", %{blocker: blocker, blocked: blocked} do
|
||||||
|
clear_config([:instance, :federating], true)
|
||||||
|
|
||||||
|
with_mock Pleroma.Web.Federator,
|
||||||
|
publish: fn _ -> nil end do
|
||||||
|
assert {:ok, block} = CommonAPI.block(blocker, blocked)
|
||||||
|
|
||||||
|
assert block.local
|
||||||
|
assert User.blocks?(blocker, blocked)
|
||||||
|
refute User.following?(blocker, blocked)
|
||||||
|
refute User.following?(blocked, blocker)
|
||||||
|
|
||||||
|
assert called(Pleroma.Web.Federator.publish(block))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it blocks and does not federate if outgoing blocks are disabled", %{
|
||||||
|
blocker: blocker,
|
||||||
|
blocked: blocked
|
||||||
|
} do
|
||||||
|
clear_config([:instance, :federating], true)
|
||||||
|
clear_config([:activitypub, :outgoing_blocks], false)
|
||||||
|
|
||||||
|
with_mock Pleroma.Web.Federator,
|
||||||
|
publish: fn _ -> nil end do
|
||||||
|
assert {:ok, block} = CommonAPI.block(blocker, blocked)
|
||||||
|
|
||||||
|
assert block.local
|
||||||
|
assert User.blocks?(blocker, blocked)
|
||||||
|
refute User.following?(blocker, blocked)
|
||||||
|
refute User.following?(blocked, blocker)
|
||||||
|
|
||||||
|
refute called(Pleroma.Web.Federator.publish(block))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "posting chat messages" do
|
describe "posting chat messages" do
|
||||||
setup do: clear_config([:instance, :chat_limit])
|
setup do: clear_config([:instance, :chat_limit])
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue