From f95b52255b2d7373a3e0bf4adff81f83c080b2ef Mon Sep 17 00:00:00 2001
From: Mark Felder <feld@feld.me>
Date: Wed, 14 Apr 2021 09:39:57 -0500
Subject: [PATCH] Revert guards on string_to_elixir_types/1, remove unnecessary
 assignment in test

---
 lib/pleroma/config_db.ex                             | 12 ++++--------
 .../admin_api/controllers/config_controller_test.exs |  9 ++++-----
 2 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/lib/pleroma/config_db.ex b/lib/pleroma/config_db.ex
index eeeb026c1..cb57673e3 100644
--- a/lib/pleroma/config_db.ex
+++ b/lib/pleroma/config_db.ex
@@ -141,9 +141,7 @@ defmodule Pleroma.ConfigDB do
   @spec update_or_create(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()}
   def update_or_create(params) do
     params = Map.put(params, :value, to_elixir_types(params[:value]))
-
-    search_opts =
-      Map.take(params, [:group, :key]) |> Map.update!(:key, &string_to_elixir_types(&1))
+    search_opts = Map.take(params, [:group, :key])
 
     with %ConfigDB{} = config <- ConfigDB.get_by_params(search_opts),
          {_, true, config} <- {:partial_update, can_be_partially_updated?(config), config},
@@ -327,7 +325,7 @@ defmodule Pleroma.ConfigDB do
 
   @spec string_to_elixir_types(String.t()) ::
           atom() | Regex.t() | module() | String.t() | no_return()
-  def string_to_elixir_types("~r" <> _pattern = regex) when is_binary(regex) do
+  def string_to_elixir_types("~r" <> _pattern = regex) do
     pattern =
       ~r/^~r(?'delimiter'[\/|"'([{<]{1})(?'pattern'.+)[\/|"')\]}>]{1}(?'modifier'[uismxfU]*)/u
 
@@ -341,9 +339,9 @@ defmodule Pleroma.ConfigDB do
     end
   end
 
-  def string_to_elixir_types(":" <> atom) when is_binary(atom), do: String.to_atom(atom)
+  def string_to_elixir_types(":" <> atom), do: String.to_atom(atom)
 
-  def string_to_elixir_types(value) when is_binary(value) do
+  def string_to_elixir_types(value) do
     if module_name?(value) do
       String.to_existing_atom("Elixir." <> value)
     else
@@ -351,8 +349,6 @@ defmodule Pleroma.ConfigDB do
     end
   end
 
-  def string_to_elixir_types(value) when is_atom(value), do: value
-
   defp parse_host("localhost"), do: :localhost
 
   defp parse_host(host) do
diff --git a/test/pleroma/web/admin_api/controllers/config_controller_test.exs b/test/pleroma/web/admin_api/controllers/config_controller_test.exs
index d26fd3150..c39c1b1e1 100644
--- a/test/pleroma/web/admin_api/controllers/config_controller_test.exs
+++ b/test/pleroma/web/admin_api/controllers/config_controller_test.exs
@@ -1481,11 +1481,10 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
         ]
       }
 
-      _res =
-        assert conn
-               |> put_req_header("content-type", "application/json")
-               |> post("/api/pleroma/admin/config", %{"configs" => [params]})
-               |> json_response_and_validate_schema(200)
+      assert conn
+             |> put_req_header("content-type", "application/json")
+             |> post("/api/pleroma/admin/config", %{"configs" => [params]})
+             |> json_response_and_validate_schema(200)
     end
   end