Test removed HTTP adapter
[akkoma] / lib / pleroma / config / deprecation_warnings.ex
index cc22b5d472e28912b7f57e89a01555d568e5a041..076b4cbf012c33c3badecf554624ca4f8c2a41bb 100644 (file)
@@ -17,13 +17,15 @@ defmodule Pleroma.Config.DeprecationWarnings do
     {[:instance, :mrf_transparency], [:mrf, :transparency],
      "\n* `config :pleroma, :instance, mrf_transparency` is now `config :pleroma, :mrf, transparency`"},
     {[:instance, :mrf_transparency_exclusions], [:mrf, :transparency_exclusions],
-     "\n* `config :pleroma, :instance, mrf_transparency_exclusions` is now `config :pleroma, :mrf, transparency_exclusions`"}
+     "\n* `config :pleroma, :instance, mrf_transparency_exclusions` is now `config :pleroma, :mrf, transparency_exclusions`"},
+    {[:instance, :quarantined_instances], [:mrf_simple, :reject],
+     "\n* `config :pleroma, :instance, :quarantined_instances` is now covered by `:pleroma, :mrf_simple, :reject`"}
   ]
 
   def check_simple_policy_tuples do
     has_strings =
       Config.get([:mrf_simple])
-      |> Enum.any?(fn {_, v} -> Enum.any?(v, fn e -> is_binary(e) end) end)
+      |> Enum.any?(fn {_, v} -> is_list(v) and Enum.any?(v, &is_binary/1) end)
 
     if has_strings do
       Logger.warn("""
@@ -64,6 +66,7 @@ defmodule Pleroma.Config.DeprecationWarnings do
 
       new_config =
         Config.get([:mrf_simple])
+        |> Enum.filter(fn {_k, v} -> not is_atom(v) end)
         |> Enum.map(fn {k, v} ->
           {k,
            Enum.map(v, fn
@@ -81,8 +84,7 @@ defmodule Pleroma.Config.DeprecationWarnings do
   end
 
   def check_quarantined_instances_tuples do
-    has_strings =
-      Config.get([:instance, :quarantined_instances]) |> Enum.any?(fn e -> is_binary(e) end)
+    has_strings = Config.get([:instance, :quarantined_instances], []) |> Enum.any?(&is_binary/1)
 
     if has_strings do
       Logger.warn("""
@@ -119,8 +121,7 @@ defmodule Pleroma.Config.DeprecationWarnings do
   end
 
   def check_transparency_exclusions_tuples do
-    has_strings =
-      Config.get([:mrf, :transparency_exclusions]) |> Enum.any?(fn e -> is_binary(e) end)
+    has_strings = Config.get([:mrf, :transparency_exclusions]) |> Enum.any?(&is_binary/1)
 
     if has_strings do
       Logger.warn("""
@@ -170,23 +171,23 @@ defmodule Pleroma.Config.DeprecationWarnings do
   end
 
   def warn do
-    with :ok <- check_hellthread_threshold(),
-         :ok <- check_old_mrf_config(),
-         :ok <- check_media_proxy_whitelist_config(),
-         :ok <- check_welcome_message_config(),
-         :ok <- check_gun_pool_options(),
-         :ok <- check_activity_expiration_config(),
-         :ok <- check_remote_ip_plug_name(),
-         :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
-      _ ->
-        :error
-    end
+    [
+      check_hellthread_threshold(),
+      check_old_mrf_config(),
+      check_media_proxy_whitelist_config(),
+      check_welcome_message_config(),
+      check_activity_expiration_config(),
+      check_remote_ip_plug_name(),
+      check_uploders_s3_public_endpoint(),
+      check_quarantined_instances_tuples(),
+      check_transparency_exclusions_tuples(),
+      check_simple_policy_tuples(),
+      check_http_adapter()
+    ]
+    |> Enum.reduce(:ok, fn
+      :ok, :ok -> :ok
+      _, _ -> :error
+    end)
   end
 
   def check_welcome_message_config do
@@ -210,6 +211,32 @@ defmodule Pleroma.Config.DeprecationWarnings do
     end
   end
 
+  def check_http_adapter do
+    http_adapter = Application.get_env(:tesla, :adapter)
+
+    case http_adapter do
+      {Tesla.Adapter.Finch, _} ->
+        :ok
+
+      Tesla.Mock ->
+        # tests do be testing
+        :ok
+
+      _anything_else ->
+        Logger.error("""
+        !!!CONFIG ERROR!!!
+        Your config is using a custom tesla adapter, this was standardised
+        to finch in 2022.06, and alternate adapters were removed in 2023.02.
+        Please ensure you either:
+        \n* do not have any custom value for `:tesla, :adapter`, or
+        \n* have `config :tesla, :adapter, {Tesla.Adapter.Finch, name: MyFinch}`
+        (your current value is #{inspect(http_adapter)})
+        """)
+
+        :error
+    end
+  end
+
   def check_old_mrf_config do
     warning_preface = """
     !!!DEPRECATION WARNING!!!
@@ -258,51 +285,6 @@ defmodule Pleroma.Config.DeprecationWarnings do
     end
   end
 
-  def check_gun_pool_options do
-    pool_config = Config.get(:connections_pool)
-
-    if timeout = pool_config[:await_up_timeout] do
-      Logger.warn("""
-      !!!DEPRECATION WARNING!!!
-      Your config is using old setting `config :pleroma, :connections_pool, await_up_timeout`. Please change to `config :pleroma, :connections_pool, connect_timeout` to ensure compatibility with future releases.
-      """)
-
-      Config.put(:connections_pool, Keyword.put_new(pool_config, :connect_timeout, timeout))
-    end
-
-    pools_configs = Config.get(:pools)
-
-    warning_preface = """
-    !!!DEPRECATION WARNING!!!
-    Your config is using old setting name `timeout` instead of `recv_timeout` in pool settings. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later.
-    """
-
-    updated_config =
-      Enum.reduce(pools_configs, [], fn {pool_name, config}, acc ->
-        if timeout = config[:timeout] do
-          Keyword.put(acc, pool_name, Keyword.put_new(config, :recv_timeout, timeout))
-        else
-          acc
-        end
-      end)
-
-    if updated_config != [] do
-      pool_warnings =
-        updated_config
-        |> Keyword.keys()
-        |> Enum.map(fn pool_name ->
-          "\n* `:timeout` options in #{pool_name} pool is now `:recv_timeout`"
-        end)
-
-      Logger.warn(Enum.join([warning_preface | pool_warnings]))
-
-      Config.put(:pools, updated_config)
-      :error
-    else
-      :ok
-    end
-  end
-
   @spec check_activity_expiration_config() :: :ok | nil
   def check_activity_expiration_config do
     warning_preface = """
@@ -355,27 +337,4 @@ defmodule Pleroma.Config.DeprecationWarnings do
       :ok
     end
   end
-
-  @spec check_old_chat_shoutbox() :: :ok | nil
-  def check_old_chat_shoutbox do
-    instance_config = Pleroma.Config.get([:instance])
-    chat_config = Pleroma.Config.get([:chat]) || []
-
-    use_old_config =
-      Keyword.has_key?(instance_config, :chat_limit) or
-        Keyword.has_key?(chat_config, :enabled)
-
-    if use_old_config do
-      Logger.error("""
-      !!!DEPRECATION WARNING!!!
-      Your config is using the old namespace for the Shoutbox configuration. You need to convert to the new namespace. e.g.,
-      \n* `config :pleroma, :chat, enabled` and `config :pleroma, :instance, chat_limit` are now equal to:
-      \n* `config :pleroma, :shout, enabled` and `config :pleroma, :shout, limit`
-      """)
-
-      :error
-    else
-      :ok
-    end
-  end
 end