Small wrapper module around Application.get_env/put_env
authorhref <href@random.sh>
Tue, 6 Nov 2018 15:00:48 +0000 (16:00 +0100)
committerhref <href@random.sh>
Tue, 6 Nov 2018 15:00:48 +0000 (16:00 +0100)
Same API as the old Pleroma.Config

lib/pleroma/config.ex [new file with mode: 0644]
test/config_test.exs [new file with mode: 0644]
test/web/activity_pub/activity_pub_controller_test.exs
test/web/federator_test.exs

diff --git a/lib/pleroma/config.ex b/lib/pleroma/config.ex
new file mode 100644 (file)
index 0000000..fc53385
--- /dev/null
@@ -0,0 +1,26 @@
+defmodule Pleroma.Config do
+  def get([key]), do: get(key)
+
+  def get([parent_key | keys]) do
+    Application.get_env(:pleroma, parent_key)
+    |> get_in(keys)
+  end
+
+  def get(key) do
+    Application.get_env(:pleroma, key)
+  end
+
+  def put([key], value), do: put(key, value)
+
+  def put([parent_key | keys], value) do
+    parent =
+      Application.get_env(:pleroma, parent_key)
+      |> put_in(keys, value)
+
+    Application.put_env(:pleroma, parent_key, parent)
+  end
+
+  def put(key, value) do
+    Application.put_env(:pleroma, key, value)
+  end
+end
diff --git a/test/config_test.exs b/test/config_test.exs
new file mode 100644 (file)
index 0000000..32d5cc9
--- /dev/null
@@ -0,0 +1,39 @@
+defmodule Pleroma.ConfigTest do
+  use ExUnit.Case
+
+  test "get/1 with an atom" do
+    assert Pleroma.Config.get(:instance) == Application.get_env(:pleroma, :instance)
+    assert Pleroma.Config.get(:azertyuiop) == nil
+  end
+
+  test "get/1 with a list of keys" do
+    assert Pleroma.Config.get([:instance, :public]) ==
+             Keyword.get(Application.get_env(:pleroma, :instance), :public)
+
+    assert Pleroma.Config.get([Pleroma.Web.Endpoint, :render_errors, :view]) ==
+             get_in(
+               Application.get_env(
+                 :pleroma,
+                 Pleroma.Web.Endpoint
+               ),
+               [:render_errors, :view]
+             )
+
+    assert Pleroma.Config.get([:azerty, :uiop]) == nil
+  end
+
+  test "put/2 with a key" do
+    Pleroma.Config.put(:config_test, true)
+
+    assert Pleroma.Config.get(:config_test) == true
+  end
+
+  test "put/2 with a list of keys" do
+    Pleroma.Config.put([:instance, :config_test], true)
+    Pleroma.Config.put([:instance, :config_nested_test], [])
+    Pleroma.Config.put([:instance, :config_nested_test, :x], true)
+
+    assert Pleroma.Config.get([:instance, :config_test]) == true
+    assert Pleroma.Config.get([:instance, :config_nested_test, :x]) == true
+  end
+end
index f22975f861979355051554857629df5a9a931328..1c24b348c5f83beb23418318a109c9a7b2459862 100644 (file)
@@ -16,22 +16,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
     end
 
     test "with the relay disabled, it returns 404", %{conn: conn} do
-      instance =
-        Application.get_env(:pleroma, :instance)
-        |> Keyword.put(:allow_relay, false)
-
-      Application.put_env(:pleroma, :instance, instance)
+      Pleroma.Config.put([:instance, :allow_relay], false)
 
       res =
         conn
         |> get(activity_pub_path(conn, :relay))
         |> json_response(404)
 
-      instance =
-        Application.get_env(:pleroma, :instance)
-        |> Keyword.put(:allow_relay, true)
-
-      Application.put_env(:pleroma, :instance, instance)
+      Pleroma.Config.put([:instance, :allow_relay], true)
     end
   end
 
index 88aef0d0f5f26a9a961233c76f70cf67c09d2a2b..c709d1181057c84c288c2882a3705958012381ff 100644 (file)
@@ -50,11 +50,7 @@ defmodule Pleroma.Web.FederatorTest do
       activity: activity,
       relay_mock: relay_mock
     } do
-      instance =
-        Application.get_env(:pleroma, :instance)
-        |> Keyword.put(:allow_relay, false)
-
-      Application.put_env(:pleroma, :instance, instance)
+      Pleroma.Config.put([:instance, :allow_relay], false)
 
       with_mocks([relay_mock]) do
         Federator.handle(:publish, activity)
@@ -62,11 +58,7 @@ defmodule Pleroma.Web.FederatorTest do
 
       refute_received :relay_publish
 
-      instance =
-        Application.get_env(:pleroma, :instance)
-        |> Keyword.put(:allow_relay, true)
-
-      Application.put_env(:pleroma, :instance, instance)
+      Pleroma.Config.put([:instance, :allow_relay], true)
     end
   end
 end