4661b56720
Some software, like GoToSocial, expose replies as ActivityPub Collections, but do not expose any item array directly in the object, causing validation to fail via the ObjectID validator. Now, Pleroma will drop that field in this situation too.
71 lines
1.9 KiB
Elixir
71 lines
1.9 KiB
Elixir
# Pleroma: A lightweight social networking server
|
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest do
|
|
use Pleroma.DataCase, async: true
|
|
|
|
alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator
|
|
alias Pleroma.Web.ActivityPub.Utils
|
|
|
|
import Pleroma.Factory
|
|
|
|
describe "Notes" do
|
|
setup do
|
|
user = insert(:user)
|
|
|
|
note = %{
|
|
"id" => Utils.generate_activity_id(),
|
|
"type" => "Note",
|
|
"actor" => user.ap_id,
|
|
"to" => [user.follower_address],
|
|
"cc" => [],
|
|
"content" => "Hellow this is content.",
|
|
"context" => "xxx",
|
|
"summary" => "a post"
|
|
}
|
|
|
|
%{user: user, note: note}
|
|
end
|
|
|
|
test "a basic note validates", %{note: note} do
|
|
%{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
|
|
end
|
|
end
|
|
|
|
test "a Note from Roadhouse validates" do
|
|
insert(:user, ap_id: "https://macgirvin.com/channel/mike")
|
|
|
|
%{"object" => note} =
|
|
"test/fixtures/roadhouse-create-activity.json"
|
|
|> File.read!()
|
|
|> Jason.decode!()
|
|
|
|
%{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
|
|
end
|
|
|
|
test "a note with an attachment should work", _ do
|
|
insert(:user, %{ap_id: "https://owncast.localhost.localdomain/federation/user/streamer"})
|
|
|
|
note =
|
|
"test/fixtures/owncast-note-with-attachment.json"
|
|
|> File.read!()
|
|
|> Jason.decode!()
|
|
|
|
%{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
|