aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-04-20 11:45:11 +0200
committerlain <lain@soykaf.club>2020-04-20 11:45:11 +0200
commitce23673ca1539350802326c62d6e72bd040950f6 (patch)
tree18581ae9230fe09cd009a74e085d1c440d4fc0df
parentc8458209110ef65101f965e460329308e5843559 (diff)
downloadpleroma-ce23673ca1539350802326c62d6e72bd040950f6.tar.gz
ChatMessageValidator: Don't validate messages that are too long.
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex1
-rw-r--r--test/web/activity_pub/object_validator_test.exs8
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex b/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex
index a4e4460cd..caf2138a7 100644
--- a/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex
@@ -56,6 +56,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator do
|> validate_inclusion(:type, ["ChatMessage"])
|> validate_required([:id, :actor, :to, :type, :content])
|> validate_length(:to, is: 1)
+ |> validate_length(:content, max: Pleroma.Config.get([:instance, :remote_limit]))
|> validate_local_concern()
end
diff --git a/test/web/activity_pub/object_validator_test.exs b/test/web/activity_pub/object_validator_test.exs
index bf0bfdfaf..e416e0808 100644
--- a/test/web/activity_pub/object_validator_test.exs
+++ b/test/web/activity_pub/object_validator_test.exs
@@ -11,6 +11,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidatorTest do
describe "chat messages" do
setup do
+ clear_config([:instance, :remote_limit])
user = insert(:user)
recipient = insert(:user, local: false)
@@ -23,6 +24,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidatorTest do
assert {:ok, _object, _meta} = ObjectValidator.validate(valid_chat_message, [])
end
+ test "does not validate if the message is longer than the remote_limit", %{
+ valid_chat_message: valid_chat_message
+ } do
+ Pleroma.Config.put([:instance, :remote_limit], 2)
+ refute match?({:ok, _object, _meta}, ObjectValidator.validate(valid_chat_message, []))
+ end
+
test "does not validate if the actor or the recipient is not in our system", %{
valid_chat_message: valid_chat_message
} do