diff options
| -rw-r--r-- | lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex | 5 | ||||
| -rw-r--r-- | test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs | 13 | 
2 files changed, 17 insertions, 1 deletions
| diff --git a/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex b/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex index 57c8d1dc0..4243e0fbf 100644 --- a/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex @@ -60,7 +60,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do    defp fix_replies(%{"replies" => %{"items" => replies}} = data) when is_list(replies),      do: Map.put(data, "replies", replies) -  defp fix_replies(%{"replies" => replies} = data) when is_bitstring(replies), +  # TODO: Pleroma does not have any support for Collections at the moment. +  # If the `replies` field is not something the ObjectID validator can handle, +  # the activity/object would be rejected, which is bad behavior. +  defp fix_replies(%{"replies" => replies} = data) when not is_list(replies),      do: Map.drop(data, ["replies"])    defp fix_replies(data), do: data diff --git a/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs b/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs index e59bf6787..2dd1361ea 100644 --- a/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs +++ b/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs @@ -54,4 +54,17 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest      %{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)    end + +  test "a Note without replies/first/items validates" do +    insert(:user, ap_id: "https://mastodon.social/users/emelie") + +    note = +      "test/fixtures/tesla_mock/status.emelie.json" +      |> File.read!() +      |> Jason.decode!() +      |> pop_in(["replies", "first", "items"]) +      |> elem(1) + +    %{valid?: true} = ArticleNotePageValidator.cast_and_validate(note) +  end  end | 
