fix(activitypub): apply the Note fixups to incoming Questions
Ported from Akkoma 678f6fdb7. Co-authored-by: Oneric <oneric@oneric.stub>
This commit is contained in:
parent
b486a84fef
commit
c3fb297b89
4 changed files with 23 additions and 8 deletions
1
changelog.d/question-note-fixups.fix
Normal file
1
changelog.d/question-note-fixups.fix
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Apply the Note fixups to incoming Questions, so polls with a single non-array tag or attachment are accepted
|
||||||
|
|
@ -213,7 +213,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
|
||||||
|
|
||||||
defp fix_misskey_content(object), do: object
|
defp fix_misskey_content(object), do: object
|
||||||
|
|
||||||
defp fix(data) do
|
def fix(data) do
|
||||||
data
|
data
|
||||||
|> CommonFixes.fix_actor()
|
|> CommonFixes.fix_actor()
|
||||||
|> CommonFixes.fix_object_defaults()
|
|> CommonFixes.fix_object_defaults()
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do
|
||||||
use Ecto.Schema
|
use Ecto.Schema
|
||||||
|
|
||||||
alias Pleroma.EctoType.ActivityPub.ObjectValidators
|
alias Pleroma.EctoType.ActivityPub.ObjectValidators
|
||||||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes
|
alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator
|
||||||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations
|
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations
|
||||||
alias Pleroma.Web.ActivityPub.ObjectValidators.QuestionOptionsValidator
|
alias Pleroma.Web.ActivityPub.ObjectValidators.QuestionOptionsValidator
|
||||||
alias Pleroma.Web.ActivityPub.Transmogrifier
|
|
||||||
|
|
||||||
import Ecto.Changeset
|
import Ecto.Changeset
|
||||||
|
|
||||||
|
|
@ -62,11 +61,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do
|
||||||
|
|
||||||
defp fix(data) do
|
defp fix(data) do
|
||||||
data
|
data
|
||||||
|> CommonFixes.fix_actor()
|
|> ArticleNotePageValidator.fix()
|
||||||
|> CommonFixes.fix_object_defaults()
|
|
||||||
|> CommonFixes.fix_quote_url()
|
|
||||||
|> CommonFixes.fix_likes()
|
|
||||||
|> Transmogrifier.fix_emoji()
|
|
||||||
|> fix_closed()
|
|> fix_closed()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -103,6 +103,25 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.QuestionHandlingTest do
|
||||||
assert Enum.sort(object.data["oneOf"]) == Enum.sort(options)
|
assert Enum.sort(object.data["oneOf"]) == Enum.sort(options)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "Question activity with a single, non-array tag" do
|
||||||
|
tag = %{
|
||||||
|
"href" => "https://gts.example/tags/caturday",
|
||||||
|
"name" => "#caturday",
|
||||||
|
"type" => "Hashtag"
|
||||||
|
}
|
||||||
|
|
||||||
|
data =
|
||||||
|
File.read!("test/fixtures/mastodon-question-activity.json")
|
||||||
|
|> Jason.decode!()
|
||||||
|
|> Kernel.put_in(["object", "tag"], tag)
|
||||||
|
|
||||||
|
{:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data)
|
||||||
|
object = Object.normalize(activity, fetch: false)
|
||||||
|
|
||||||
|
assert tag in object.data["tag"]
|
||||||
|
assert Object.hashtags(object) == ["caturday"]
|
||||||
|
end
|
||||||
|
|
||||||
test "Mastodon Question activity with custom emojis" do
|
test "Mastodon Question activity with custom emojis" do
|
||||||
options = [
|
options = [
|
||||||
%{
|
%{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue