Fork of Pleroma with site-specific changes and feature branches https://git.pleroma.social/pleroma/pleroma
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

117 строки
3.5KB

  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.ActivityPub.MRFTest do
  5. use ExUnit.Case, async: true
  6. use Pleroma.Tests.Helpers
  7. alias Pleroma.Web.ActivityPub.MRF
  8. test "subdomains_regex/1" do
  9. assert MRF.subdomains_regex(["unsafe.tld", "*.unsafe.tld"]) == [
  10. ~r/^unsafe.tld$/i,
  11. ~r/^(.*\.)*unsafe.tld$/i
  12. ]
  13. end
  14. describe "subdomain_match/2" do
  15. test "common domains" do
  16. regexes = MRF.subdomains_regex(["unsafe.tld", "unsafe2.tld"])
  17. assert regexes == [~r/^unsafe.tld$/i, ~r/^unsafe2.tld$/i]
  18. assert MRF.subdomain_match?(regexes, "unsafe.tld")
  19. assert MRF.subdomain_match?(regexes, "unsafe2.tld")
  20. refute MRF.subdomain_match?(regexes, "example.com")
  21. end
  22. test "wildcard domains with one subdomain" do
  23. regexes = MRF.subdomains_regex(["*.unsafe.tld"])
  24. assert regexes == [~r/^(.*\.)*unsafe.tld$/i]
  25. assert MRF.subdomain_match?(regexes, "unsafe.tld")
  26. assert MRF.subdomain_match?(regexes, "sub.unsafe.tld")
  27. refute MRF.subdomain_match?(regexes, "anotherunsafe.tld")
  28. refute MRF.subdomain_match?(regexes, "unsafe.tldanother")
  29. end
  30. test "wildcard domains with two subdomains" do
  31. regexes = MRF.subdomains_regex(["*.unsafe.tld"])
  32. assert regexes == [~r/^(.*\.)*unsafe.tld$/i]
  33. assert MRF.subdomain_match?(regexes, "unsafe.tld")
  34. assert MRF.subdomain_match?(regexes, "sub.sub.unsafe.tld")
  35. refute MRF.subdomain_match?(regexes, "sub.anotherunsafe.tld")
  36. refute MRF.subdomain_match?(regexes, "sub.unsafe.tldanother")
  37. end
  38. test "matches are case-insensitive" do
  39. regexes = MRF.subdomains_regex(["UnSafe.TLD", "UnSAFE2.Tld"])
  40. assert regexes == [~r/^UnSafe.TLD$/i, ~r/^UnSAFE2.Tld$/i]
  41. assert MRF.subdomain_match?(regexes, "UNSAFE.TLD")
  42. assert MRF.subdomain_match?(regexes, "UNSAFE2.TLD")
  43. assert MRF.subdomain_match?(regexes, "unsafe.tld")
  44. assert MRF.subdomain_match?(regexes, "unsafe2.tld")
  45. refute MRF.subdomain_match?(regexes, "EXAMPLE.COM")
  46. refute MRF.subdomain_match?(regexes, "example.com")
  47. end
  48. end
  49. describe "describe/0" do
  50. test "it works as expected with noop policy" do
  51. clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.NoOpPolicy])
  52. expected = %{
  53. mrf_policies: ["NoOpPolicy", "HashtagPolicy"],
  54. mrf_hashtag: %{
  55. federated_timeline_removal: [],
  56. reject: [],
  57. sensitive: ["nsfw"]
  58. },
  59. exclusions: false
  60. }
  61. {:ok, ^expected} = MRF.describe()
  62. end
  63. test "it works as expected with mock policy" do
  64. clear_config([:mrf, :policies], [MRFModuleMock])
  65. expected = %{
  66. mrf_policies: ["MRFModuleMock", "HashtagPolicy"],
  67. mrf_module_mock: "some config data",
  68. mrf_hashtag: %{
  69. federated_timeline_removal: [],
  70. reject: [],
  71. sensitive: ["nsfw"]
  72. },
  73. exclusions: false
  74. }
  75. {:ok, ^expected} = MRF.describe()
  76. end
  77. end
  78. test "config_descriptions/0" do
  79. descriptions = MRF.config_descriptions()
  80. good_mrf = Enum.find(descriptions, fn %{key: key} -> key == :good_mrf end)
  81. assert good_mrf == %{
  82. key: :good_mrf,
  83. related_policy: "Fixtures.Modules.GoodMRF",
  84. label: "Good MRF",
  85. description: "Some description",
  86. group: :pleroma,
  87. tab: :mrf,
  88. type: :group
  89. }
  90. end
  91. end