From 90303f3bd6b54ea23781dd80fd469f14e1f1a38a Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 7 Jun 2021 19:48:55 -0500 Subject: AnnounceValidator: self-generate the context id --- .../web/activity_pub/object_validators/announce_validator.ex | 8 +++++++- .../activity_pub/object_validators/announce_validation_test.exs | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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 @@ test "returns ok for a valid announce", %{valid_announce: valid_announce} 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 -- cgit v1.2.3