summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-06-07 19:48:55 -0500
committerAlex Gleason <alex@alexgleason.me>2021-06-08 15:33:22 -0500
commit90303f3bd6b54ea23781dd80fd469f14e1f1a38a (patch)
treeae785ce5b129221c2f5683456da32f293ececbd5
parent5667c02fcefd7a128ca7fcf9ccf09d7efa1e7844 (diff)
AnnounceValidator: self-generate the context idcycles-validator
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/announce_validator.ex8
-rw-r--r--test/pleroma/web/activity_pub/object_validators/announce_validation_test.exs7
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex
index a2f752ac3..6fb0605b4 100644
--- a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex
@@ -5,11 +5,13 @@
defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do
use Ecto.Schema
+ alias Ecto.UUID
alias Pleroma.EctoType.ActivityPub.ObjectValidators
alias Pleroma.Object
alias Pleroma.User
alias Pleroma.Web.ActivityPub.Utils
alias Pleroma.Web.ActivityPub.Visibility
+ alias Pleroma.Web.Endpoint
import Ecto.Changeset
import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations
@@ -18,12 +20,16 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do
@primary_key false
+ def generate_context_id do
+ "#{Endpoint.url()}/contexts/#{UUID.generate()}"
+ end
+
embedded_schema do
field(:id, ObjectValidators.ObjectID, primary_key: true)
field(:type, :string)
field(:object, ObjectValidators.ObjectID)
field(:actor, ObjectValidators.ObjectID)
- field(:context, :string, autogenerate: {Utils, :generate_context_id, []})
+ field(:context, :string, autogenerate: {__MODULE__, :generate_context_id, []})
field(:to, ObjectValidators.Recipients, default: [])
field(:cc, ObjectValidators.Recipients, default: [])
field(:published, ObjectValidators.DateTime)
diff --git a/test/pleroma/web/activity_pub/object_validators/announce_validation_test.exs b/test/pleroma/web/activity_pub/object_validators/announce_validation_test.exs
index 939922127..c854e6b32 100644
--- a/test/pleroma/web/activity_pub/object_validators/announce_validation_test.exs
+++ b/test/pleroma/web/activity_pub/object_validators/announce_validation_test.exs
@@ -33,6 +33,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidationTest do
assert {:ok, _object, _meta} = ObjectValidator.validate(valid_announce, [])
end
+ test "autogenerates a context ID", %{valid_announce: valid_announce} do
+ {:ok, %{"context" => context}, _} = ObjectValidator.validate(valid_announce, [])
+
+ assert String.starts_with?(context, "http://localhost:4001/contexts/")
+ assert String.length(context) == 67
+ end
+
test "returns an error if the object can't be found", %{valid_announce: valid_announce} do
without_object =
valid_announce