Merge branch 'follow-validator' into 'develop'

Do not require a cc field when validating an incoming Follow activity

See merge request pleroma/pleroma!4212
This commit is contained in:
lain 2024-08-08 05:29:46 +00:00
commit 72b5974f81
5 changed files with 14 additions and 3 deletions

View file

@ -0,0 +1 @@
Improve the FollowValidator to successfully incoming activities with an errant cc field.

View file

@ -29,7 +29,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AcceptRejectValidator do
defp validate_data(cng) do
cng
|> validate_required([:id, :type, :actor, :to, :cc, :object])
|> validate_required([:id, :type, :actor, :to, :object])
|> validate_inclusion(:type, ["Accept", "Reject"])
|> validate_actor_presence()
|> validate_object_presence(allowed_types: ["Follow"])

View file

@ -29,7 +29,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
defp validate_data(cng) do
cng
|> validate_required([:id, :type, :actor, :to, :cc, :object])
|> validate_required([:id, :type, :actor, :to, :object])
|> validate_inclusion(:type, ["Block"])
|> CommonValidations.validate_actor_presence()
|> CommonValidations.validate_actor_presence(field_name: :object)

View file

@ -29,7 +29,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.FollowValidator do
defp validate_data(cng) do
cng
|> validate_required([:id, :type, :actor, :to, :cc, :object])
|> validate_required([:id, :type, :actor, :to, :object])
|> validate_inclusion(:type, ["Follow"])
|> validate_inclusion(:state, ~w{pending reject accept})
|> validate_actor_presence()

View file

@ -22,5 +22,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.FollowValidationTest do
test "validates a basic follow object", %{valid_follow: valid_follow} do
assert {:ok, _follow, []} = ObjectValidator.validate(valid_follow, [])
end
test "supports a nil cc", %{valid_follow: valid_follow} do
valid_follow_with_nil_cc = Map.put(valid_follow, "cc", nil)
assert {:ok, _follow, []} = ObjectValidator.validate(valid_follow_with_nil_cc, [])
end
test "supports an empty cc", %{valid_follow: valid_follow} do
valid_follow_with_empty_cc = Map.put(valid_follow, "cc", [])
assert {:ok, _follow, []} = ObjectValidator.validate(valid_follow_with_empty_cc, [])
end
end
end