logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma

article_note_validator_test.exs (2748B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidatorTest do
  5. use Pleroma.DataCase
  6. alias Pleroma.User
  7. alias Pleroma.Web.ActivityPub.ObjectValidator
  8. alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidator
  9. alias Pleroma.Web.ActivityPub.Utils
  10. import Pleroma.Factory
  11. setup_all do
  12. Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
  13. :ok
  14. end
  15. test "a basic note validates" do
  16. user = insert(:user)
  17. note = %{
  18. "id" => Utils.generate_activity_id(),
  19. "type" => "Note",
  20. "actor" => user.ap_id,
  21. "to" => [user.follower_address],
  22. "cc" => [],
  23. "content" => "Hellow this is content.",
  24. "context" => "xxx",
  25. "summary" => "a post"
  26. }
  27. %{valid?: true} = ArticleNoteValidator.cast_and_validate(note)
  28. end
  29. test "Mastodon Note" do
  30. data =
  31. File.read!("test/fixtures/mastodon-post-activity.json")
  32. |> Jason.decode!()
  33. {:ok, %User{}} = ObjectValidator.fetch_actor(data)
  34. assert %{changes: changes, valid?: true} =
  35. ArticleNoteValidator.cast_and_validate(data["object"])
  36. assert %{
  37. actor: "http://mastodon.example.org/users/admin",
  38. attributedTo: "http://mastodon.example.org/users/admin",
  39. cc: [
  40. "http://localtesting.pleroma.lol/users/lain",
  41. "http://mastodon.example.org/users/admin/followers"
  42. ],
  43. content:
  44. "<p><span class=\"h-card\"><a href=\"http://localtesting.pleroma.lol/users/lain\" class=\"u-url mention\">@<span>lain</span></a></span></p>",
  45. context: "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation",
  46. id: "http://mastodon.example.org/users/admin/statuses/99512778738411822",
  47. published: "2018-02-12T14:08:20Z",
  48. sensitive: true,
  49. summary: "cw",
  50. tag: [
  51. %{
  52. "href" => "http://localtesting.pleroma.lol/users/lain",
  53. "name" => "@lain@localtesting.pleroma.lol",
  54. "type" => "Mention"
  55. }
  56. ],
  57. to: ["https://www.w3.org/ns/activitystreams#Public"],
  58. type: "Note",
  59. url: "http://mastodon.example.org/@admin/99512778738411822",
  60. replies: [
  61. "http://mastodon.example.org/users/admin/statuses/99512778738411823",
  62. "http://mastodon.example.org/users/admin/statuses/99512778738411824"
  63. ]
  64. } = changes
  65. assert changes[:context_id]
  66. end
  67. end