aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/pleroma/user.ex3
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/block_validator.ex13
-rw-r--r--test/web/activity_pub/object_validator_test.exs6
-rw-r--r--test/web/activity_pub/side_effects_test.exs16
4 files changed, 18 insertions, 20 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index c3e2a89ad..9d5c61e79 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -1309,7 +1309,8 @@ defmodule Pleroma.User do
unsubscribe(blocked, blocker)
- if following?(blocked, blocker), do: unfollow(blocked, blocker)
+ unfollowing_blocked = Config.get([:activitypub, :unfollow_blocked], true)
+ if unfollowing_blocked && following?(blocked, blocker), do: unfollow(blocked, blocker)
{:ok, blocker} = update_follower_count(blocker)
{:ok, blocker, _} = Participation.mark_all_as_read(blocker, blocked)
diff --git a/lib/pleroma/web/activity_pub/object_validators/block_validator.ex b/lib/pleroma/web/activity_pub/object_validators/block_validator.ex
index 1989585b7..1dde77198 100644
--- a/lib/pleroma/web/activity_pub/object_validators/block_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/block_validator.ex
@@ -6,7 +6,6 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
use Ecto.Schema
alias Pleroma.EctoType.ActivityPub.ObjectValidators
- alias Pleroma.User
import Ecto.Changeset
import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations
@@ -33,7 +32,6 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
|> validate_inclusion(:type, ["Block"])
|> validate_actor_presence()
|> validate_actor_presence(field_name: :object)
- |> validate_block_acceptance()
end
def cast_and_validate(data) do
@@ -41,15 +39,4 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
|> cast_data
|> validate_data
end
-
- def validate_block_acceptance(cng) do
- actor = get_field(cng, :actor) |> User.get_cached_by_ap_id()
-
- if actor.local || Pleroma.Config.get([:activitypub, :unfollow_blocked], true) do
- cng
- else
- cng
- |> add_error(:actor, "Not accepting remote blocks")
- end
- end
end
diff --git a/test/web/activity_pub/object_validator_test.exs b/test/web/activity_pub/object_validator_test.exs
index a3d43ef3c..f38bf7e08 100644
--- a/test/web/activity_pub/object_validator_test.exs
+++ b/test/web/activity_pub/object_validator_test.exs
@@ -680,11 +680,5 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidatorTest do
assert {:error, _cng} = ObjectValidator.validate(block, [])
end
-
- test "returns an error if don't accept remote blocks", %{valid_block: valid_block} do
- clear_config([:activitypub, :unfollow_blocked], false)
-
- assert {:error, _cng} = ObjectValidator.validate(valid_block, [])
- end
end
end
diff --git a/test/web/activity_pub/side_effects_test.exs b/test/web/activity_pub/side_effects_test.exs
index 36792f015..af27c34b4 100644
--- a/test/web/activity_pub/side_effects_test.exs
+++ b/test/web/activity_pub/side_effects_test.exs
@@ -87,6 +87,22 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do
refute User.following?(blocked, user)
assert User.blocks?(user, blocked)
end
+
+ test "it blocks but does not unfollow if the relevant setting is set", %{
+ user: user,
+ blocked: blocked,
+ block: block
+ } do
+ clear_config([:activitypub, :unfollow_blocked], false)
+ assert User.following?(user, blocked)
+ assert User.following?(blocked, user)
+
+ {:ok, _, _} = SideEffects.handle(block)
+
+ refute User.following?(user, blocked)
+ assert User.following?(blocked, user)
+ assert User.blocks?(user, blocked)
+ end
end
describe "update users" do