Deprecate transparency_exclusions
authorIlja <domainepublic@spectraltheorem.be>
Fri, 2 Oct 2020 18:35:51 +0000 (20:35 +0200)
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Fri, 6 Aug 2021 05:59:52 +0000 (07:59 +0200)
* Give deprecation message
* Rewrite configs

lib/pleroma/config/deprecation_warnings.ex
test/pleroma/config/deprecation_warnings_test.exs

index 37f783fec160736dcbfbe0bb4a1a2b4babda15d0..cc22b5d472e28912b7f57e89a01555d568e5a041 100644 (file)
@@ -118,6 +118,44 @@ defmodule Pleroma.Config.DeprecationWarnings do
     end
   end
 
+  def check_transparency_exclusions_tuples do
+    has_strings =
+      Config.get([:mrf, :transparency_exclusions]) |> Enum.any?(fn e -> is_binary(e) end)
+
+    if has_strings do
+      Logger.warn("""
+      !!!DEPRECATION WARNING!!!
+      Your config is using strings in the transparency_exclusions configuration instead of tuples. They should work for now, but you are advised to change to the new configuration to prevent possible issues later:
+
+      ```
+      config :pleroma, :mrf,
+        transparency_exclusions: ["instance.tld"]
+      ```
+
+      Is now
+
+
+      ```
+      config :pleroma, :mrf,
+        transparency_exclusions: [{"instance.tld", "Reason to exlude transparency"}]
+      ```
+      """)
+
+      new_config =
+        Config.get([:mrf, :transparency_exclusions])
+        |> Enum.map(fn
+          {instance, reason} -> {instance, reason}
+          instance -> {instance, ""}
+        end)
+
+      Config.put([:mrf, :transparency_exclusions], new_config)
+
+      :error
+    else
+      :ok
+    end
+  end
+
   def check_hellthread_threshold do
     if Config.get([:mrf_hellthread, :threshold]) do
       Logger.warn("""
@@ -142,6 +180,7 @@ defmodule Pleroma.Config.DeprecationWarnings do
          :ok <- check_uploders_s3_public_endpoint(),
          :ok <- check_old_chat_shoutbox(),
          :ok <- check_quarantined_instances_tuples(),
+         :ok <- check_transparency_exclusions_tuples(),
          :ok <- check_simple_policy_tuples() do
       :ok
     else
index 61c835fc9467a284f2dafc9dc2830d3a4a6d4421..1037c4d35f3370cb903eb7791faaf800acd9a00e 100644 (file)
@@ -137,6 +137,56 @@ defmodule Pleroma.Config.DeprecationWarningsTest do
     end
   end
 
+  describe "transparency_exclusions tuples" do
+    test "gives warning when there are still strings" do
+      clear_config([:mrf, :transparency_exclusions], [
+        {"domain.com", "some reason"},
+        "somedomain.tld"
+      ])
+
+      assert capture_log(fn -> DeprecationWarnings.check_transparency_exclusions_tuples() end) =~
+               """
+               !!!DEPRECATION WARNING!!!
+               Your config is using strings in the transparency_exclusions configuration instead of tuples. They should work for now, but you are advised to change to the new configuration to prevent possible issues later:
+
+               ```
+               config :pleroma, :mrf,
+                 transparency_exclusions: ["instance.tld"]
+               ```
+
+               Is now
+
+
+               ```
+               config :pleroma, :mrf,
+                 transparency_exclusions: [{"instance.tld", "Reason to exlude transparency"}]
+               ```
+               """
+    end
+
+    test "transforms config to tuples" do
+      clear_config([:mrf, :transparency_exclusions], [
+        {"domain.com", "some reason"},
+        "some.tld"
+      ])
+
+      expected_config = [{"domain.com", "some reason"}, {"some.tld", ""}]
+
+      capture_log(fn -> DeprecationWarnings.check_transparency_exclusions_tuples() end)
+
+      assert Config.get([:mrf, :transparency_exclusions]) == expected_config
+    end
+
+    test "doesn't give a warning with correct config" do
+      clear_config([:mrf, :transparency_exclusions], [
+        {"domain.com", "some reason"},
+        {"some.tld", ""}
+      ])
+
+      assert capture_log(fn -> DeprecationWarnings.check_transparency_exclusions_tuples() end) == ""
+    end
+  end
+
   test "check_old_mrf_config/0" do
     clear_config([:instance, :rewrite_policy], [])
     clear_config([:instance, :mrf_transparency], true)