AnnounceValidator: self-generate the context id

This commit is contained in:
Alex Gleason 2021-06-07 19:48:55 -05:00
parent 5667c02fce
commit 90303f3bd6
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7
2 changed files with 14 additions and 1 deletions

View file

@ -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)

View file

@ -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