logo

pleroma

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

pipeline_test.exs (3293B)


  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.PipelineTest do
  5. use Pleroma.DataCase, async: true
  6. import Mox
  7. import Pleroma.Factory
  8. alias Pleroma.ConfigMock
  9. alias Pleroma.Web.ActivityPub.ActivityPubMock
  10. alias Pleroma.Web.ActivityPub.MRFMock
  11. alias Pleroma.Web.ActivityPub.ObjectValidatorMock
  12. alias Pleroma.Web.ActivityPub.SideEffectsMock
  13. alias Pleroma.Web.FederatorMock
  14. setup :verify_on_exit!
  15. describe "common_pipeline/2" do
  16. setup do
  17. ObjectValidatorMock
  18. |> expect(:validate, fn o, m -> {:ok, o, m} end)
  19. MRFMock
  20. |> expect(:pipeline_filter, fn o, m -> {:ok, o, m} end)
  21. SideEffectsMock
  22. |> expect(:handle, fn o, m -> {:ok, o, m} end)
  23. |> expect(:handle_after_transaction, fn m -> m end)
  24. :ok
  25. end
  26. test "when given an `object_data` in meta, Federation will receive a the original activity with the `object` field set to this embedded object" do
  27. activity = insert(:note_activity)
  28. object = %{"id" => "1", "type" => "Love"}
  29. meta = [local: true, object_data: object]
  30. activity_with_object = %{activity | data: Map.put(activity.data, "object", object)}
  31. ActivityPubMock
  32. |> expect(:persist, fn _, m -> {:ok, activity, m} end)
  33. FederatorMock
  34. |> expect(:publish, fn ^activity_with_object -> :ok end)
  35. ConfigMock
  36. |> expect(:get, fn [:instance, :federating] -> true end)
  37. assert {:ok, ^activity, ^meta} =
  38. Pleroma.Web.ActivityPub.Pipeline.common_pipeline(
  39. activity.data,
  40. meta
  41. )
  42. end
  43. test "it goes through validation, filtering, persisting, side effects and federation for local activities" do
  44. activity = insert(:note_activity)
  45. meta = [local: true]
  46. ActivityPubMock
  47. |> expect(:persist, fn _, m -> {:ok, activity, m} end)
  48. FederatorMock
  49. |> expect(:publish, fn ^activity -> :ok end)
  50. ConfigMock
  51. |> expect(:get, fn [:instance, :federating] -> true end)
  52. assert {:ok, ^activity, ^meta} =
  53. Pleroma.Web.ActivityPub.Pipeline.common_pipeline(activity.data, meta)
  54. end
  55. test "it goes through validation, filtering, persisting, side effects without federation for remote activities" do
  56. activity = insert(:note_activity)
  57. meta = [local: false]
  58. ActivityPubMock
  59. |> expect(:persist, fn _, m -> {:ok, activity, m} end)
  60. ConfigMock
  61. |> expect(:get, fn [:instance, :federating] -> true end)
  62. assert {:ok, ^activity, ^meta} =
  63. Pleroma.Web.ActivityPub.Pipeline.common_pipeline(activity.data, meta)
  64. end
  65. test "it goes through validation, filtering, persisting, side effects without federation for local activities if federation is deactivated" do
  66. activity = insert(:note_activity)
  67. meta = [local: true]
  68. ActivityPubMock
  69. |> expect(:persist, fn _, m -> {:ok, activity, m} end)
  70. ConfigMock
  71. |> expect(:get, fn [:instance, :federating] -> false end)
  72. assert {:ok, ^activity, ^meta} =
  73. Pleroma.Web.ActivityPub.Pipeline.common_pipeline(activity.data, meta)
  74. end
  75. end
  76. end