[#3251] Fixed wrong test-env config setting for [Pleroma.Upload]. Refactoring. Added...
authorIvan Tashkinov <ivantashkinov@gmail.com>
Sat, 16 Jan 2021 20:05:31 +0000 (23:05 +0300)
committerIvan Tashkinov <ivantashkinov@gmail.com>
Sat, 16 Jan 2021 20:05:31 +0000 (23:05 +0300)
lib/pleroma/upload/filter.ex
test/pleroma/object_test.exs
test/pleroma/scheduled_activity_test.exs
test/pleroma/uploaders/s3_test.exs
test/support/data_case.ex
test/support/helpers.ex

index 367acd2146d147a4240d433dce73c5429224b8a8..66113563494a5a72d442c9c9587817ecaa941403 100644 (file)
@@ -43,6 +43,4 @@ defmodule Pleroma.Upload.Filter do
         error
     end
   end
-
-  def filter(nil, upload), do: filter([], upload)
 end
index fe7f37e7c320ad9d36d6feff6098ab94592e363e..3150c8e01533fd65b7fb0ce43a0cf66c3a9434b0 100644 (file)
@@ -78,8 +78,8 @@ defmodule Pleroma.ObjectTest do
     setup do: clear_config([:instance, :cleanup_attachments])
 
     test "Disabled via config" do
-      Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
-      Pleroma.Config.put([:instance, :cleanup_attachments], false)
+      clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+      clear_config([:instance, :cleanup_attachments], false)
 
       file = %Plug.Upload{
         content_type: "image/jpeg",
@@ -112,8 +112,8 @@ defmodule Pleroma.ObjectTest do
     end
 
     test "in subdirectories" do
-      Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
-      Pleroma.Config.put([:instance, :cleanup_attachments], true)
+      clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+      clear_config([:instance, :cleanup_attachments], true)
 
       file = %Plug.Upload{
         content_type: "image/jpeg",
@@ -146,9 +146,9 @@ defmodule Pleroma.ObjectTest do
     end
 
     test "with dedupe enabled" do
-      Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
-      Pleroma.Config.put([Pleroma.Upload, :filters], [Pleroma.Upload.Filter.Dedupe])
-      Pleroma.Config.put([:instance, :cleanup_attachments], true)
+      clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+      clear_config([Pleroma.Upload, :filters], [Pleroma.Upload.Filter.Dedupe])
+      clear_config([:instance, :cleanup_attachments], true)
 
       uploads_dir = Pleroma.Config.get!([Pleroma.Uploaders.Local, :uploads])
 
@@ -184,8 +184,8 @@ defmodule Pleroma.ObjectTest do
     end
 
     test "with objects that have legacy data.url attribute" do
-      Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
-      Pleroma.Config.put([:instance, :cleanup_attachments], true)
+      clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+      clear_config([:instance, :cleanup_attachments], true)
 
       file = %Plug.Upload{
         content_type: "image/jpeg",
@@ -220,9 +220,9 @@ defmodule Pleroma.ObjectTest do
     end
 
     test "With custom base_url" do
-      Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
-      Pleroma.Config.put([Pleroma.Upload, :base_url], "https://sub.domain.tld/dir/")
-      Pleroma.Config.put([:instance, :cleanup_attachments], true)
+      clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+      clear_config([Pleroma.Upload, :base_url], "https://sub.domain.tld/dir/")
+      clear_config([:instance, :cleanup_attachments], true)
 
       file = %Plug.Upload{
         content_type: "image/jpeg",
index 7faa5660daa5856269c42873075bfddf12229a09..902d1d99c3ad160e592d7b84390d4e60af960f33 100644 (file)
@@ -4,15 +4,14 @@
 
 defmodule Pleroma.ScheduledActivityTest do
   use Pleroma.DataCase
-  alias Pleroma.DataCase
+
   alias Pleroma.ScheduledActivity
+
   import Pleroma.Factory
 
   setup do: clear_config([ScheduledActivity, :enabled])
 
-  setup context do
-    DataCase.ensure_local_uploader(context)
-  end
+  setup [:ensure_local_uploader]
 
   describe "creation" do
     test "scheduled activities with jobs when ScheduledActivity enabled" do
index 30653aad293ffe0da3481216b0499b696e04ec62..242dc0d50cbe836edbff346b82c74e66468a3ce5 100644 (file)
@@ -14,10 +14,8 @@ defmodule Pleroma.Uploaders.S3Test do
   setup do
     clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.S3)
     clear_config([Pleroma.Upload, :base_url], "https://s3.amazonaws.com")
-
-    clear_config(Pleroma.Uploaders.S3,
-      bucket: "test_bucket"
-    )
+    clear_config([Pleroma.Uploaders.S3])
+    clear_config([Pleroma.Uploaders.S3, :bucket], "test_bucket")
   end
 
   describe "get_file/1" do
@@ -34,7 +32,7 @@ defmodule Pleroma.Uploaders.S3Test do
         truncated_namespace: ""
       )
 
-      Config.put([Pleroma.Upload], base_url: "https://s3.amazonaws.com")
+      Config.put([Pleroma.Upload, :base_url], "https://s3.amazonaws.com")
 
       assert S3.get_file("test_image.jpg") == {
                :ok,
index 23c858d2a94f9326d1ce9fbf7226cd221541eead..0427682a203873867734dddbb7e54af2bf587271 100644 (file)
@@ -18,6 +18,8 @@ defmodule Pleroma.DataCase do
 
   use ExUnit.CaseTemplate
 
+  import Pleroma.Tests.Helpers, only: [clear_config: 2]
+
   using do
     quote do
       alias Pleroma.Repo
@@ -105,17 +107,10 @@ defmodule Pleroma.DataCase do
   end
 
   def ensure_local_uploader(context) do
-    test_uploader = Map.get(context, :uploader, Pleroma.Uploaders.Local)
-    uploader = Pleroma.Config.get([Pleroma.Upload, :uploader])
-    filters = Pleroma.Config.get([Pleroma.Upload, :filters]) || []
-
-    Pleroma.Config.put([Pleroma.Upload, :uploader], test_uploader)
-    Pleroma.Config.put([Pleroma.Upload, :filters], [])
+    test_uploader = Map.get(context, :uploader) || Pleroma.Uploaders.Local
 
-    on_exit(fn ->
-      Pleroma.Config.put([Pleroma.Upload, :uploader], uploader)
-      Pleroma.Config.put([Pleroma.Upload, :filters], filters)
-    end)
+    clear_config([Pleroma.Upload, :uploader], test_uploader)
+    clear_config([Pleroma.Upload, :filters], [])
 
     :ok
   end
index 15e8cbd9d51aeee9cdb289d3e9e012566daa55dd..db38a1e817bb65fbff2bb9b20e44a5100949bffc 100644 (file)
@@ -8,6 +8,8 @@ defmodule Pleroma.Tests.Helpers do
   """
   alias Pleroma.Config
 
+  require Logger
+
   defmacro clear_config(config_path) do
     quote do
       clear_config(unquote(config_path)) do
@@ -18,6 +20,7 @@ defmodule Pleroma.Tests.Helpers do
   defmacro clear_config(config_path, do: yield) do
     quote do
       initial_setting = Config.fetch(unquote(config_path))
+
       unquote(yield)
 
       on_exit(fn ->
@@ -35,6 +38,15 @@ defmodule Pleroma.Tests.Helpers do
   end
 
   defmacro clear_config(config_path, temp_setting) do
+    # NOTE: `clear_config([section, key], value)` != `clear_config([section], key: value)` (!)
+    # Displaying a warning to prevent unintentional clearing of all but one keys in section
+    if Keyword.keyword?(temp_setting) and length(temp_setting) == 1 do
+      Logger.warn(
+        "Please change to `clear_config([section]); clear_config([section, key], value)`: " <>
+          "#{inspect(config_path)}, #{inspect(temp_setting)}"
+      )
+    end
+
     quote do
       clear_config(unquote(config_path)) do
         Config.put(unquote(config_path), unquote(temp_setting))