logo

pleroma

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

helpers_test.exs (4037B)


  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.RichMedia.HelpersTest do
  5. use Pleroma.DataCase, async: false
  6. alias Pleroma.StaticStubbedConfigMock, as: ConfigMock
  7. alias Pleroma.Web.CommonAPI
  8. alias Pleroma.Web.RichMedia.Helpers
  9. import Mox
  10. import Pleroma.Factory
  11. import Tesla.Mock
  12. setup do
  13. mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
  14. ConfigMock
  15. |> stub(:get, fn
  16. [:rich_media, :enabled] -> false
  17. path -> Pleroma.Test.StaticConfig.get(path)
  18. end)
  19. |> stub(:get, fn
  20. path, default -> Pleroma.Test.StaticConfig.get(path, default)
  21. end)
  22. :ok
  23. end
  24. test "refuses to crawl incomplete URLs" do
  25. user = insert(:user)
  26. {:ok, activity} =
  27. CommonAPI.post(user, %{
  28. status: "[test](example.com/ogp)",
  29. content_type: "text/markdown"
  30. })
  31. ConfigMock
  32. |> stub(:get, fn
  33. [:rich_media, :enabled] -> true
  34. path -> Pleroma.Test.StaticConfig.get(path)
  35. end)
  36. assert %{} == Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
  37. end
  38. test "refuses to crawl malformed URLs" do
  39. user = insert(:user)
  40. {:ok, activity} =
  41. CommonAPI.post(user, %{
  42. status: "[test](example.com[]/ogp)",
  43. content_type: "text/markdown"
  44. })
  45. ConfigMock
  46. |> stub(:get, fn
  47. [:rich_media, :enabled] -> true
  48. path -> Pleroma.Test.StaticConfig.get(path)
  49. end)
  50. assert %{} == Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
  51. end
  52. test "crawls valid, complete URLs" do
  53. user = insert(:user)
  54. {:ok, activity} =
  55. CommonAPI.post(user, %{
  56. status: "[test](https://example.com/ogp)",
  57. content_type: "text/markdown"
  58. })
  59. ConfigMock
  60. |> stub(:get, fn
  61. [:rich_media, :enabled] -> true
  62. path -> Pleroma.Test.StaticConfig.get(path)
  63. end)
  64. assert %{page_url: "https://example.com/ogp", rich_media: _} =
  65. Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
  66. end
  67. test "recrawls URLs on updates" do
  68. original_url = "https://google.com/"
  69. updated_url = "https://yahoo.com/"
  70. Pleroma.StaticStubbedConfigMock
  71. |> stub(:get, fn
  72. [:rich_media, :enabled] -> true
  73. path -> Pleroma.Test.StaticConfig.get(path)
  74. end)
  75. user = insert(:user)
  76. {:ok, activity} = CommonAPI.post(user, %{status: "I like this site #{original_url}"})
  77. assert match?(
  78. %{page_url: ^original_url, rich_media: _},
  79. Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
  80. )
  81. {:ok, _} = CommonAPI.update(user, activity, %{status: "I like this site #{updated_url}"})
  82. activity = Pleroma.Activity.get_by_id(activity.id)
  83. assert match?(
  84. %{page_url: ^updated_url, rich_media: _},
  85. Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
  86. )
  87. end
  88. test "refuses to crawl URLs of private network from posts" do
  89. user = insert(:user)
  90. {:ok, activity} =
  91. CommonAPI.post(user, %{status: "http://127.0.0.1:4000/notice/9kCP7VNyPJXFOXDrgO"})
  92. {:ok, activity2} = CommonAPI.post(user, %{status: "https://10.111.10.1/notice/9kCP7V"})
  93. {:ok, activity3} = CommonAPI.post(user, %{status: "https://172.16.32.40/notice/9kCP7V"})
  94. {:ok, activity4} = CommonAPI.post(user, %{status: "https://192.168.10.40/notice/9kCP7V"})
  95. {:ok, activity5} = CommonAPI.post(user, %{status: "https://pleroma.local/notice/9kCP7V"})
  96. ConfigMock
  97. |> stub(:get, fn
  98. [:rich_media, :enabled] -> true
  99. path -> Pleroma.Test.StaticConfig.get(path)
  100. end)
  101. assert %{} == Helpers.fetch_data_for_activity(activity)
  102. assert %{} == Helpers.fetch_data_for_activity(activity2)
  103. assert %{} == Helpers.fetch_data_for_activity(activity3)
  104. assert %{} == Helpers.fetch_data_for_activity(activity4)
  105. assert %{} == Helpers.fetch_data_for_activity(activity5)
  106. end
  107. end