logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

ensure_re_prepended_test.exs (4408B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.ActivityPub.MRF.EnsureRePrependedTest do
  5. use Pleroma.DataCase, async: true
  6. alias Pleroma.Activity
  7. alias Pleroma.Object
  8. alias Pleroma.Web.ActivityPub.MRF
  9. alias Pleroma.Web.ActivityPub.MRF.EnsureRePrepended
  10. describe "rewrites summary" do
  11. test "it adds `re:` to summary object when child summary and parent summary equal" do
  12. message = %{
  13. "type" => "Create",
  14. "object" => %{
  15. "summary" => "object-summary",
  16. "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}}
  17. }
  18. }
  19. assert {:ok, res} = EnsureRePrepended.filter(message)
  20. assert res["object"]["summary"] == "re: object-summary"
  21. end
  22. test "it adds `re:` to summary object when child summary contains re-subject of parent summary " do
  23. message = %{
  24. "type" => "Create",
  25. "object" => %{
  26. "summary" => "object-summary",
  27. "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "re: object-summary"}}}
  28. }
  29. }
  30. assert {:ok, res} = EnsureRePrepended.filter(message)
  31. assert res["object"]["summary"] == "re: object-summary"
  32. end
  33. test "it adds `re:` to history" do
  34. message = %{
  35. "type" => "Create",
  36. "object" => %{
  37. "summary" => "object-summary",
  38. "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}},
  39. "formerRepresentations" => %{
  40. "orderedItems" => [
  41. %{
  42. "summary" => "object-summary",
  43. "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}}
  44. }
  45. ]
  46. }
  47. }
  48. }
  49. assert {:ok, res} = MRF.filter_one(EnsureRePrepended, message)
  50. assert res["object"]["summary"] == "re: object-summary"
  51. assert Enum.at(res["object"]["formerRepresentations"]["orderedItems"], 0)["summary"] ==
  52. "re: object-summary"
  53. end
  54. test "it accepts Updates" do
  55. message = %{
  56. "type" => "Update",
  57. "object" => %{
  58. "summary" => "object-summary",
  59. "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}},
  60. "formerRepresentations" => %{
  61. "orderedItems" => [
  62. %{
  63. "summary" => "object-summary",
  64. "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "object-summary"}}}
  65. }
  66. ]
  67. }
  68. }
  69. }
  70. assert {:ok, res} = MRF.filter_one(EnsureRePrepended, message)
  71. assert res["object"]["summary"] == "re: object-summary"
  72. assert Enum.at(res["object"]["formerRepresentations"]["orderedItems"], 0)["summary"] ==
  73. "re: object-summary"
  74. end
  75. end
  76. describe "skip filter" do
  77. test "it skip if type isn't 'Create' or 'Update'" do
  78. message = %{
  79. "type" => "Annotation",
  80. "object" => %{"summary" => "object-summary"}
  81. }
  82. assert {:ok, res} = EnsureRePrepended.filter(message)
  83. assert res == message
  84. end
  85. test "it skip if summary is empty" do
  86. message = %{
  87. "type" => "Create",
  88. "object" => %{
  89. "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "summary"}}}
  90. }
  91. }
  92. assert {:ok, res} = EnsureRePrepended.filter(message)
  93. assert res == message
  94. end
  95. test "it skip if inReplyTo is empty" do
  96. message = %{"type" => "Create", "object" => %{"summary" => "summary"}}
  97. assert {:ok, res} = EnsureRePrepended.filter(message)
  98. assert res == message
  99. end
  100. test "it skip if parent and child summary isn't equal" do
  101. message = %{
  102. "type" => "Create",
  103. "object" => %{
  104. "summary" => "object-summary",
  105. "inReplyTo" => %Activity{object: %Object{data: %{"summary" => "summary"}}}
  106. }
  107. }
  108. assert {:ok, res} = EnsureRePrepended.filter(message)
  109. assert res == message
  110. end
  111. test "it skips if the object is only a reference" do
  112. message = %{
  113. "type" => "Create",
  114. "object" => "somereference"
  115. }
  116. assert {:ok, res} = EnsureRePrepended.filter(message)
  117. assert res == message
  118. end
  119. end
  120. end