added test helpers to clear config after tests
authorMaksim <parallel588@gmail.com>
Mon, 19 Aug 2019 15:34:29 +0000 (15:34 +0000)
committerlain <lain@soykaf.club>
Mon, 19 Aug 2019 15:34:29 +0000 (15:34 +0000)
40 files changed:
test/config/transfer_task_test.exs
test/conversation_test.exs
test/emails/mailer_test.exs
test/http/request_builder_test.exs
test/object/fetcher_test.exs
test/plugs/ensure_public_or_authenticated_plug_test.exs
test/plugs/http_security_plug_test.exs
test/plugs/instance_static_test.exs
test/support/helpers.ex
test/tasks/config_test.exs
test/tasks/robots_txt_test.exs
test/upload/filter/anonymize_filename_test.exs
test/upload/filter/mogrify_test.exs
test/upload/filter_test.exs
test/upload_test.exs
test/uploaders/s3_test.exs
test/user_test.exs
test/web/activity_pub/activity_pub_controller_test.exs
test/web/activity_pub/mrf/mrf_test.exs
test/web/activity_pub/mrf/reject_non_public_test.exs
test/web/activity_pub/mrf/simple_policy_test.exs
test/web/activity_pub/mrf/user_allowlist_policy_test.exs
test/web/activity_pub/mrf/vocabulary_policy_test.exs
test/web/admin_api/admin_api_controller_test.exs
test/web/common_api/common_api_test.exs
test/web/federator_test.exs
test/web/instances/instance_test.exs
test/web/instances/instances_test.exs
test/web/mastodon_api/mastodon_api_controller_test.exs
test/web/media_proxy/media_proxy_test.exs
test/web/oauth/ldap_authorization_test.exs
test/web/oauth/oauth_controller_test.exs
test/web/ostatus/ostatus_controller_test.exs
test/web/plugs/federating_plug_test.exs
test/web/rich_media/helpers_test.exs
test/web/streamer_test.exs
test/web/twitter_api/twitter_api_controller_test.exs
test/web/twitter_api/util_controller_test.exs
test/web/web_finger/web_finger_controller_test.exs
test/web/websub/websub_controller_test.exs

index 4455a4d475db6be387a95dc6d11da2c442578ecb..9074f3b97fdf72c130300fb00ca84523e268b093 100644 (file)
@@ -5,14 +5,8 @@
 defmodule Pleroma.Config.TransferTaskTest do
   use Pleroma.DataCase
 
-  setup do
-    dynamic = Pleroma.Config.get([:instance, :dynamic_configuration])
-
+  clear_config([:instance, :dynamic_configuration]) do
     Pleroma.Config.put([:instance, :dynamic_configuration], true)
-
-    on_exit(fn ->
-      Pleroma.Config.put([:instance, :dynamic_configuration], dynamic)
-    end)
   end
 
   test "transfer config values from db to env" do
index aa193e0d40dadf907f974ef2cfa378ee7788844e..4e36494f80b23edf7123956b85c9b52d952505c8 100644 (file)
@@ -11,14 +11,8 @@ defmodule Pleroma.ConversationTest do
 
   import Pleroma.Factory
 
-  setup_all do
-    config_path = [:instance, :federating]
-    initial_setting = Pleroma.Config.get(config_path)
-
-    Pleroma.Config.put(config_path, true)
-    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
-
-    :ok
+  clear_config_all([:instance, :federating]) do
+    Pleroma.Config.put([:instance, :federating], true)
   end
 
   test "it goes through old direct conversations" do
index 450bb09c74e58e90db1d836135260e1a6e1125c2..ae5effb7ad1a1cf6b5cb6b79e005bd6c2923245e 100644 (file)
@@ -15,11 +15,7 @@ defmodule Pleroma.Emails.MailerTest do
     to: [{"Test User", "user1@example.com"}]
   }
 
-  setup do
-    value = Pleroma.Config.get([Pleroma.Emails.Mailer, :enabled])
-    on_exit(fn -> Pleroma.Config.put([Pleroma.Emails.Mailer, :enabled], value) end)
-    :ok
-  end
+  clear_config([Pleroma.Emails.Mailer, :enabled])
 
   test "not send email when mailer is disabled" do
     Pleroma.Config.put([Pleroma.Emails.Mailer, :enabled], false)
index 7febe84c50e06b6076f874a3ace09532337e7b7e..170ca916f6448ae75450295cda14df38e502c346 100644 (file)
@@ -4,21 +4,19 @@
 
 defmodule Pleroma.HTTP.RequestBuilderTest do
   use ExUnit.Case, async: true
+  use Pleroma.Tests.Helpers
   alias Pleroma.HTTP.RequestBuilder
 
   describe "headers/2" do
+    clear_config([:http, :send_user_agent])
+
     test "don't send pleroma user agent" do
       assert RequestBuilder.headers(%{}, []) == %{headers: []}
     end
 
     test "send pleroma user agent" do
-      send = Pleroma.Config.get([:http, :send_user_agent])
       Pleroma.Config.put([:http, :send_user_agent], true)
 
-      on_exit(fn ->
-        Pleroma.Config.put([:http, :send_user_agent], send)
-      end)
-
       assert RequestBuilder.headers(%{}, []) == %{
                headers: [{"User-Agent", Pleroma.Application.user_agent()}]
              }
index 0ca87f0358e8fed2c7ea36273f76acf88deffbcd..895a73d2c893b7ad201fbe6bef1c26dd085ab6ee 100644 (file)
@@ -159,32 +159,28 @@ defmodule Pleroma.Object.FetcherTest do
   end
 
   describe "signed fetches" do
+    clear_config([:activitypub, :sign_object_fetches])
+
     test_with_mock "it signs fetches when configured to do so",
                    Pleroma.Signature,
                    [:passthrough],
                    [] do
-      option = Pleroma.Config.get([:activitypub, :sign_object_fetches])
       Pleroma.Config.put([:activitypub, :sign_object_fetches], true)
 
       Fetcher.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367")
 
       assert called(Pleroma.Signature.sign(:_, :_))
-
-      Pleroma.Config.put([:activitypub, :sign_object_fetches], option)
     end
 
     test_with_mock "it doesn't sign fetches when not configured to do so",
                    Pleroma.Signature,
                    [:passthrough],
                    [] do
-      option = Pleroma.Config.get([:activitypub, :sign_object_fetches])
       Pleroma.Config.put([:activitypub, :sign_object_fetches], false)
 
       Fetcher.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367")
 
       refute called(Pleroma.Signature.sign(:_, :_))
-
-      Pleroma.Config.put([:activitypub, :sign_object_fetches], option)
     end
   end
 end
index ce5d77ff7e1a973a0b7b68e6da83ab1abac4c70f..d45662a2a3d481fb1e99b56b5b0f7776e6b4a053 100644 (file)
@@ -9,8 +9,10 @@ defmodule Pleroma.Plugs.EnsurePublicOrAuthenticatedPlugTest do
   alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug
   alias Pleroma.User
 
+  clear_config([:instance, :public])
+
   test "it halts if not public and no user is assigned", %{conn: conn} do
-    set_public_to(false)
+    Config.put([:instance, :public], false)
 
     conn =
       conn
@@ -21,7 +23,7 @@ defmodule Pleroma.Plugs.EnsurePublicOrAuthenticatedPlugTest do
   end
 
   test "it continues if public", %{conn: conn} do
-    set_public_to(true)
+    Config.put([:instance, :public], true)
 
     ret_conn =
       conn
@@ -31,7 +33,7 @@ defmodule Pleroma.Plugs.EnsurePublicOrAuthenticatedPlugTest do
   end
 
   test "it continues if a user is assigned, even if not public", %{conn: conn} do
-    set_public_to(false)
+    Config.put([:instance, :public], false)
 
     conn =
       conn
@@ -43,13 +45,4 @@ defmodule Pleroma.Plugs.EnsurePublicOrAuthenticatedPlugTest do
 
     assert ret_conn == conn
   end
-
-  defp set_public_to(value) do
-    orig = Config.get!([:instance, :public])
-    Config.put([:instance, :public], value)
-
-    on_exit(fn ->
-      Config.put([:instance, :public], orig)
-    end)
-  end
 end
index 7dfd50c1febd9a6a6f5ace616c853725bb16cf39..7a2835e3dc04d753a8fb9a4d257d593749d27555 100644 (file)
@@ -7,17 +7,12 @@ defmodule Pleroma.Web.Plugs.HTTPSecurityPlugTest do
   alias Pleroma.Config
   alias Plug.Conn
 
+  clear_config([:http_securiy, :enabled])
+  clear_config([:http_security, :sts])
+
   describe "http security enabled" do
     setup do
-      enabled = Config.get([:http_securiy, :enabled])
-
       Config.put([:http_security, :enabled], true)
-
-      on_exit(fn ->
-        Config.put([:http_security, :enabled], enabled)
-      end)
-
-      :ok
     end
 
     test "it sends CSP headers when enabled", %{conn: conn} do
@@ -81,14 +76,8 @@ defmodule Pleroma.Web.Plugs.HTTPSecurityPlugTest do
   end
 
   test "it does not send CSP headers when disabled", %{conn: conn} do
-    enabled = Config.get([:http_securiy, :enabled])
-
     Config.put([:http_security, :enabled], false)
 
-    on_exit(fn ->
-      Config.put([:http_security, :enabled], enabled)
-    end)
-
     conn = get(conn, "/api/v1/instance")
 
     assert Conn.get_resp_header(conn, "x-xss-protection") == []
index e2dcfa3d84ad05f926b8ef5000fbb50b1f5fd99e..6aabc45a4a0f0a9e23945c0f07484bcd5b705c23 100644 (file)
@@ -8,14 +8,12 @@ defmodule Pleroma.Web.RuntimeStaticPlugTest do
   @dir "test/tmp/instance_static"
 
   setup do
-    static_dir = Pleroma.Config.get([:instance, :static_dir])
-    Pleroma.Config.put([:instance, :static_dir], @dir)
     File.mkdir_p!(@dir)
+    on_exit(fn -> File.rm_rf(@dir) end)
+  end
 
-    on_exit(fn ->
-      Pleroma.Config.put([:instance, :static_dir], static_dir)
-      File.rm_rf(@dir)
-    end)
+  clear_config([:instance, :static_dir]) do
+    Pleroma.Config.put([:instance, :static_dir], @dir)
   end
 
   test "overrides index" do
index 1a92be065b04501693d67c1200eda9e35b02b09c..a601b3ec8178ccff62fba9e55104dad70547f21e 100644 (file)
@@ -7,8 +7,52 @@ defmodule Pleroma.Tests.Helpers do
   Helpers for use in tests.
   """
 
+  defmacro clear_config(config_path) do
+    quote do
+      clear_config(unquote(config_path)) do
+      end
+    end
+  end
+
+  defmacro clear_config(config_path, do: yield) do
+    quote do
+      setup do
+        initial_setting = Pleroma.Config.get(unquote(config_path))
+        unquote(yield)
+        on_exit(fn -> Pleroma.Config.put(unquote(config_path), initial_setting) end)
+        :ok
+      end
+    end
+  end
+
+  defmacro clear_config_all(config_path) do
+    quote do
+      clear_config_all(unquote(config_path)) do
+      end
+    end
+  end
+
+  defmacro clear_config_all(config_path, do: yield) do
+    quote do
+      setup_all do
+        initial_setting = Pleroma.Config.get(unquote(config_path))
+        unquote(yield)
+        on_exit(fn -> Pleroma.Config.put(unquote(config_path), initial_setting) end)
+        :ok
+      end
+    end
+  end
+
   defmacro __using__(_opts) do
     quote do
+      import Pleroma.Tests.Helpers,
+        only: [
+          clear_config: 1,
+          clear_config: 2,
+          clear_config_all: 1,
+          clear_config_all: 2
+        ]
+
       def collect_ids(collection) do
         collection
         |> Enum.map(& &1.id)
@@ -30,6 +74,15 @@ defmodule Pleroma.Tests.Helpers do
         |> Poison.encode!()
         |> Poison.decode!()
       end
+
+      defmacro guards_config(config_path) do
+        quote do
+          initial_setting = Pleroma.Config.get(config_path)
+
+          Pleroma.Config.put(config_path, true)
+          on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
+        end
+      end
     end
   end
 end
index a9b79eb5b572a8bcf44fa1a137063059c7c807b8..9cd47380ca9a4e20b6472c8a1f1d28e76fa67d76 100644 (file)
@@ -11,21 +11,20 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do
     Mix.shell(Mix.Shell.Process)
     temp_file = "config/temp.exported_from_db.secret.exs"
 
-    dynamic = Pleroma.Config.get([:instance, :dynamic_configuration])
-
-    Pleroma.Config.put([:instance, :dynamic_configuration], true)
-
     on_exit(fn ->
       Mix.shell(Mix.Shell.IO)
       Application.delete_env(:pleroma, :first_setting)
       Application.delete_env(:pleroma, :second_setting)
-      Pleroma.Config.put([:instance, :dynamic_configuration], dynamic)
       :ok = File.rm(temp_file)
     end)
 
     {:ok, temp_file: temp_file}
   end
 
+  clear_config_all([:instance, :dynamic_configuration]) do
+    Pleroma.Config.put([:instance, :dynamic_configuration], true)
+  end
+
   test "settings are migrated to db" do
     assert Repo.all(Config) == []
 
index 78a3f17b44f93d6c768ccfe9b4634d235694660f..917df2675ea0c3adde44f429af77d33125c8e253 100644 (file)
@@ -4,17 +4,17 @@
 
 defmodule Mix.Tasks.Pleroma.RobotsTxtTest do
   use ExUnit.Case
+  use Pleroma.Tests.Helpers
   alias Mix.Tasks.Pleroma.RobotsTxt
 
+  clear_config([:instance, :static_dir])
+
   test "creates new dir" do
     path = "test/fixtures/new_dir/"
     file_path = path <> "robots.txt"
-
-    static_dir = Pleroma.Config.get([:instance, :static_dir])
     Pleroma.Config.put([:instance, :static_dir], path)
 
     on_exit(fn ->
-      Pleroma.Config.put([:instance, :static_dir], static_dir)
       {:ok, ["test/fixtures/new_dir/", "test/fixtures/new_dir/robots.txt"]} = File.rm_rf(path)
     end)
 
@@ -29,11 +29,9 @@ defmodule Mix.Tasks.Pleroma.RobotsTxtTest do
   test "to existance folder" do
     path = "test/fixtures/"
     file_path = path <> "robots.txt"
-    static_dir = Pleroma.Config.get([:instance, :static_dir])
     Pleroma.Config.put([:instance, :static_dir], path)
 
     on_exit(fn ->
-      Pleroma.Config.put([:instance, :static_dir], static_dir)
       :ok = File.rm(file_path)
     end)
 
index a31b38ab1208de3acee3c1ed421dee71846a0c88..6b33e7395b946e691da6315605d60a23d538a3b4 100644 (file)
@@ -9,12 +9,6 @@ defmodule Pleroma.Upload.Filter.AnonymizeFilenameTest do
   alias Pleroma.Upload
 
   setup do
-    custom_filename = Config.get([Upload.Filter.AnonymizeFilename, :text])
-
-    on_exit(fn ->
-      Config.put([Upload.Filter.AnonymizeFilename, :text], custom_filename)
-    end)
-
     upload_file = %Upload{
       name: "an… image.jpg",
       content_type: "image/jpg",
@@ -24,6 +18,8 @@ defmodule Pleroma.Upload.Filter.AnonymizeFilenameTest do
     %{upload_file: upload_file}
   end
 
+  clear_config([Pleroma.Upload.Filter.AnonymizeFilename, :text])
+
   test "it replaces filename on pre-defined text", %{upload_file: upload_file} do
     Config.put([Upload.Filter.AnonymizeFilename, :text], "custom-file.png")
     {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file)
index c301440fdc69d165d440cb0f0a136716be0a0eef..210320d303eb70657a66a365e55f444c536edf11 100644 (file)
@@ -10,13 +10,7 @@ defmodule Pleroma.Upload.Filter.MogrifyTest do
   alias Pleroma.Upload
   alias Pleroma.Upload.Filter
 
-  setup do
-    filter = Config.get([Filter.Mogrify, :args])
-
-    on_exit(fn ->
-      Config.put([Filter.Mogrify, :args], filter)
-    end)
-  end
+  clear_config([Filter.Mogrify, :args])
 
   test "apply mogrify filter" do
     Config.put([Filter.Mogrify, :args], [{"tint", "40"}])
index 640cd71079997402c1572af6af4e0838cc089e8d..03887c06aef78e5e2970725f54c3023be0772bed 100644 (file)
@@ -8,13 +8,7 @@ defmodule Pleroma.Upload.FilterTest do
   alias Pleroma.Config
   alias Pleroma.Upload.Filter
 
-  setup do
-    custom_filename = Config.get([Pleroma.Upload.Filter.AnonymizeFilename, :text])
-
-    on_exit(fn ->
-      Config.put([Pleroma.Upload.Filter.AnonymizeFilename, :text], custom_filename)
-    end)
-  end
+  clear_config([Pleroma.Upload.Filter.AnonymizeFilename, :text])
 
   test "applies filters" do
     Config.put([Pleroma.Upload.Filter.AnonymizeFilename, :text], "custom-file.png")
index 95b16078bb0458de4c4692e79e33eb985d1b7fff..6721fe82e61646563e7046f4abcef522e982122c 100644 (file)
@@ -250,12 +250,8 @@ defmodule Pleroma.UploadTest do
   end
 
   describe "Setting a custom base_url for uploaded media" do
-    setup do
+    clear_config([Pleroma.Upload, :base_url]) do
       Pleroma.Config.put([Pleroma.Upload, :base_url], "https://cache.pleroma.social")
-
-      on_exit(fn ->
-        Pleroma.Config.put([Pleroma.Upload, :base_url], nil)
-      end)
     end
 
     test "returns a media url with configured base_url" do
index a0a1cfdf0a741293ed4b897ef4001142c8ada62f..171316340db8ead0811158546a8be01981447215 100644 (file)
@@ -11,19 +11,11 @@ defmodule Pleroma.Uploaders.S3Test do
   import Mock
   import ExUnit.CaptureLog
 
-  setup do
-    config = Config.get([Pleroma.Uploaders.S3])
-
+  clear_config([Pleroma.Uploaders.S3]) do
     Config.put([Pleroma.Uploaders.S3],
       bucket: "test_bucket",
       public_endpoint: "https://s3.amazonaws.com"
     )
-
-    on_exit(fn ->
-      Config.put([Pleroma.Uploaders.S3], config)
-    end)
-
-    :ok
   end
 
   describe "get_file/1" do
index 8cb6567a170accf44e4f656ff1a1ba0ee8a32a97..27156f03669c51ed09b6f74f337d5fffe8014c26 100644 (file)
@@ -21,6 +21,8 @@ defmodule Pleroma.UserTest do
     :ok
   end
 
+  clear_config([:instance, :account_activation_required])
+
   describe "when tags are nil" do
     test "tagging a user" do
       user = insert(:user, %{tags: nil})
@@ -287,6 +289,9 @@ defmodule Pleroma.UserTest do
       password_confirmation: "test",
       email: "email@example.com"
     }
+    clear_config([:instance, :autofollowed_nicknames])
+    clear_config([:instance, :welcome_message])
+    clear_config([:instance, :welcome_user_nickname])
 
     test "it autofollows accounts that are set for it" do
       user = insert(:user)
@@ -303,8 +308,6 @@ defmodule Pleroma.UserTest do
 
       assert User.following?(registered_user, user)
       refute User.following?(registered_user, remote_user)
-
-      Pleroma.Config.put([:instance, :autofollowed_nicknames], [])
     end
 
     test "it sends a welcome message if it is set" do
@@ -320,9 +323,6 @@ defmodule Pleroma.UserTest do
       assert registered_user.ap_id in activity.recipients
       assert Object.normalize(activity).data["content"] =~ "cool site"
       assert activity.actor == welcome_user.ap_id
-
-      Pleroma.Config.put([:instance, :welcome_user_nickname], nil)
-      Pleroma.Config.put([:instance, :welcome_message], nil)
     end
 
     test "it requires an email, name, nickname and password, bio is optional" do
@@ -388,15 +388,8 @@ defmodule Pleroma.UserTest do
       email: "email@example.com"
     }
 
-    setup do
-      setting = Pleroma.Config.get([:instance, :account_activation_required])
-
-      unless setting do
-        Pleroma.Config.put([:instance, :account_activation_required], true)
-        on_exit(fn -> Pleroma.Config.put([:instance, :account_activation_required], setting) end)
-      end
-
-      :ok
+    clear_config([:instance, :account_activation_required]) do
+      Pleroma.Config.put([:instance, :account_activation_required], true)
     end
 
     test "it creates unconfirmed user" do
@@ -1043,6 +1036,8 @@ defmodule Pleroma.UserTest do
       [user: user]
     end
 
+    clear_config([:instance, :federating])
+
     test ".delete_user_activities deletes all create activities", %{user: user} do
       {:ok, activity} = CommonAPI.post(user, %{"status" => "2hu"})
 
@@ -1093,9 +1088,7 @@ defmodule Pleroma.UserTest do
                    Pleroma.Web.ActivityPub.Publisher,
                    [:passthrough],
                    [] do
-      config_path = [:instance, :federating]
-      initial_setting = Pleroma.Config.get(config_path)
-      Pleroma.Config.put(config_path, true)
+      Pleroma.Config.put([:instance, :federating], true)
 
       {:ok, follower} = User.get_or_fetch_by_ap_id("http://mastodon.example.org/users/admin")
       {:ok, _} = User.follow(follower, user)
@@ -1107,8 +1100,6 @@ defmodule Pleroma.UserTest do
                  inbox: "http://mastodon.example.org/inbox"
                })
              )
-
-      Pleroma.Config.put(config_path, initial_setting)
     end
   end
 
@@ -1174,8 +1165,6 @@ defmodule Pleroma.UserTest do
     refute User.auth_active?(local_user)
     assert User.auth_active?(confirmed_user)
     assert User.auth_active?(remote_user)
-
-    Pleroma.Config.put([:instance, :account_activation_required], false)
   end
 
   describe "superuser?/1" do
@@ -1220,8 +1209,6 @@ defmodule Pleroma.UserTest do
       other_user = insert(:user, local: true)
 
       refute User.visible_for?(user, other_user)
-
-      Pleroma.Config.put([:instance, :account_activation_required], false)
     end
 
     test "returns true when the account is unauthenticated and auth is not required" do
@@ -1238,8 +1225,6 @@ defmodule Pleroma.UserTest do
       other_user = insert(:user, local: true, info: %{is_admin: true})
 
       assert User.visible_for?(user, other_user)
-
-      Pleroma.Config.put([:instance, :account_activation_required], false)
     end
   end
 
@@ -1552,10 +1537,7 @@ defmodule Pleroma.UserTest do
   end
 
   describe "following/followers synchronization" do
-    setup do
-      sync = Pleroma.Config.get([:instance, :external_user_synchronization])
-      on_exit(fn -> Pleroma.Config.put([:instance, :external_user_synchronization], sync) end)
-    end
+    clear_config([:instance, :external_user_synchronization])
 
     test "updates the counters normally on following/getting a follow when disabled" do
       Pleroma.Config.put([:instance, :external_user_synchronization], false)
index 251055ee17ea8458ff7245bd502a615817e7fafa..77f5e39faab586fea0496258827b15fbb0c6c456 100644 (file)
@@ -16,17 +16,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
 
   setup_all do
     Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
-
-    config_path = [:instance, :federating]
-    initial_setting = Pleroma.Config.get(config_path)
-
-    Pleroma.Config.put(config_path, true)
-    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
-
     :ok
   end
 
+  clear_config_all([:instance, :federating],
+    do: Pleroma.Config.put([:instance, :federating], true)
+  )
+
   describe "/relay" do
+    clear_config([:instance, :allow_relay])
+
     test "with the relay active, it returns the relay user", %{conn: conn} do
       res =
         conn
@@ -43,8 +42,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
       |> get(activity_pub_path(conn, :relay))
       |> json_response(404)
       |> assert
-
-      Pleroma.Config.put([:instance, :allow_relay], true)
     end
   end
 
index 19e1729394e72e9fa2a2a49ed30d9c9a2f04d571..04709df17b4cce3198e4f792f385b802f5e4f889 100644 (file)
@@ -1,5 +1,6 @@
 defmodule Pleroma.Web.ActivityPub.MRFTest do
   use ExUnit.Case, async: true
+  use Pleroma.Tests.Helpers
   alias Pleroma.Web.ActivityPub.MRF
 
   test "subdomains_regex/1" do
@@ -59,6 +60,8 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
   end
 
   describe "describe/0" do
+    clear_config([:instance, :rewrite_policy])
+
     test "it works as expected with noop policy" do
       expected = %{
         mrf_policies: ["NoOpPolicy"],
@@ -69,7 +72,6 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
     end
 
     test "it works as expected with mock policy" do
-      config = Pleroma.Config.get([:instance, :rewrite_policy])
       Pleroma.Config.put([:instance, :rewrite_policy], [MRFModuleMock])
 
       expected = %{
@@ -79,8 +81,6 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
       }
 
       {:ok, ^expected} = MRF.describe()
-
-      Pleroma.Config.put([:instance, :rewrite_policy], config)
     end
   end
 end
index fdf6b245eeab98fa4e26800ae0472aafa7690a88..fc1d190bbe7a91e1952b2b9d02ea681b89253993 100644 (file)
@@ -8,12 +8,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublicTest do
 
   alias Pleroma.Web.ActivityPub.MRF.RejectNonPublic
 
-  setup do
-    policy = Pleroma.Config.get([:mrf_rejectnonpublic])
-    on_exit(fn -> Pleroma.Config.put([:mrf_rejectnonpublic], policy) end)
-
-    :ok
-  end
+  clear_config([:mrf_rejectnonpublic])
 
   describe "public message" do
     test "it's allowed when address is public" do
index 8e86d2219c5296aa79a2c9474321f87ae5759c0d..7203b27daaedb07ab9cabf13880033e3b19ba288 100644 (file)
@@ -8,9 +8,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
   alias Pleroma.Config
   alias Pleroma.Web.ActivityPub.MRF.SimplePolicy
 
-  setup do
-    orig = Config.get!(:mrf_simple)
-
+  clear_config([:mrf_simple]) do
     Config.put(:mrf_simple,
       media_removal: [],
       media_nsfw: [],
@@ -21,10 +19,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
       avatar_removal: [],
       banner_removal: []
     )
-
-    on_exit(fn ->
-      Config.put(:mrf_simple, orig)
-    end)
   end
 
   describe "when :media_removal" do
index 6519e2398119a8bf304e9d4fda47b97833a6675d..72084c0fd0e8e0887e84d4022e68a7fb572b7224 100644 (file)
@@ -7,12 +7,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.UserAllowListPolicyTest do
 
   alias Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy
 
-  setup do
-    policy = Pleroma.Config.get([:mrf_user_allowlist]) || []
-    on_exit(fn -> Pleroma.Config.put([:mrf_user_allowlist], policy) end)
-
-    :ok
-  end
+  clear_config([:mrf_user_allowlist, :localhost])
 
   test "pass filter if allow list is empty" do
     actor = insert(:user)
index c3b11d7a14543dd4b03fdcbbd43790a25a101e7d..38309f9f1f3ee4926bc141020d61be18c3d581de 100644 (file)
@@ -8,8 +8,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do
   alias Pleroma.Web.ActivityPub.MRF.VocabularyPolicy
 
   describe "accept" do
+    clear_config([:mrf_vocabulary, :accept])
+
     test "it accepts based on parent activity type" do
-      config = Pleroma.Config.get([:mrf_vocabulary, :accept])
       Pleroma.Config.put([:mrf_vocabulary, :accept], ["Like"])
 
       message = %{
@@ -18,12 +19,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do
       }
 
       {:ok, ^message} = VocabularyPolicy.filter(message)
-
-      Pleroma.Config.put([:mrf_vocabulary, :accept], config)
     end
 
     test "it accepts based on child object type" do
-      config = Pleroma.Config.get([:mrf_vocabulary, :accept])
       Pleroma.Config.put([:mrf_vocabulary, :accept], ["Create", "Note"])
 
       message = %{
@@ -35,12 +33,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do
       }
 
       {:ok, ^message} = VocabularyPolicy.filter(message)
-
-      Pleroma.Config.put([:mrf_vocabulary, :accept], config)
     end
 
     test "it does not accept disallowed child objects" do
-      config = Pleroma.Config.get([:mrf_vocabulary, :accept])
       Pleroma.Config.put([:mrf_vocabulary, :accept], ["Create", "Note"])
 
       message = %{
@@ -52,12 +47,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do
       }
 
       {:reject, nil} = VocabularyPolicy.filter(message)
-
-      Pleroma.Config.put([:mrf_vocabulary, :accept], config)
     end
 
     test "it does not accept disallowed parent types" do
-      config = Pleroma.Config.get([:mrf_vocabulary, :accept])
       Pleroma.Config.put([:mrf_vocabulary, :accept], ["Announce", "Note"])
 
       message = %{
@@ -69,14 +61,13 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do
       }
 
       {:reject, nil} = VocabularyPolicy.filter(message)
-
-      Pleroma.Config.put([:mrf_vocabulary, :accept], config)
     end
   end
 
   describe "reject" do
+    clear_config([:mrf_vocabulary, :reject])
+
     test "it rejects based on parent activity type" do
-      config = Pleroma.Config.get([:mrf_vocabulary, :reject])
       Pleroma.Config.put([:mrf_vocabulary, :reject], ["Like"])
 
       message = %{
@@ -85,12 +76,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do
       }
 
       {:reject, nil} = VocabularyPolicy.filter(message)
-
-      Pleroma.Config.put([:mrf_vocabulary, :reject], config)
     end
 
     test "it rejects based on child object type" do
-      config = Pleroma.Config.get([:mrf_vocabulary, :reject])
       Pleroma.Config.put([:mrf_vocabulary, :reject], ["Note"])
 
       message = %{
@@ -102,12 +90,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do
       }
 
       {:reject, nil} = VocabularyPolicy.filter(message)
-
-      Pleroma.Config.put([:mrf_vocabulary, :reject], config)
     end
 
     test "it passes through objects that aren't disallowed" do
-      config = Pleroma.Config.get([:mrf_vocabulary, :reject])
       Pleroma.Config.put([:mrf_vocabulary, :reject], ["Like"])
 
       message = %{
@@ -116,8 +101,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do
       }
 
       {:ok, ^message} = VocabularyPolicy.filter(message)
-
-      Pleroma.Config.put([:mrf_vocabulary, :reject], config)
     end
   end
 end
index bcbc18639ec1889361f60055df28051ba3bd773c..844cd07324605abbe7e89b5224bdea0b1873d55c 100644 (file)
@@ -294,18 +294,15 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
 
   describe "POST /api/pleroma/admin/email_invite, with valid config" do
     setup do
-      registrations_open = Pleroma.Config.get([:instance, :registrations_open])
-      invites_enabled = Pleroma.Config.get([:instance, :invites_enabled])
-      Pleroma.Config.put([:instance, :registrations_open], false)
-      Pleroma.Config.put([:instance, :invites_enabled], true)
+      [user: insert(:user, info: %{is_admin: true})]
+    end
 
-      on_exit(fn ->
-        Pleroma.Config.put([:instance, :registrations_open], registrations_open)
-        Pleroma.Config.put([:instance, :invites_enabled], invites_enabled)
-        :ok
-      end)
+    clear_config([:instance, :registrations_open]) do
+      Pleroma.Config.put([:instance, :registrations_open], false)
+    end
 
-      [user: insert(:user, info: %{is_admin: true})]
+    clear_config([:instance, :invites_enabled]) do
+      Pleroma.Config.put([:instance, :invites_enabled], true)
     end
 
     test "sends invitation and returns 204", %{conn: conn, user: user} do
@@ -360,18 +357,13 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
       [user: insert(:user, info: %{is_admin: true})]
     end
 
+    clear_config([:instance, :registrations_open])
+    clear_config([:instance, :invites_enabled])
+
     test "it returns 500 if `invites_enabled` is not enabled", %{conn: conn, user: user} do
-      registrations_open = Pleroma.Config.get([:instance, :registrations_open])
-      invites_enabled = Pleroma.Config.get([:instance, :invites_enabled])
       Pleroma.Config.put([:instance, :registrations_open], false)
       Pleroma.Config.put([:instance, :invites_enabled], false)
 
-      on_exit(fn ->
-        Pleroma.Config.put([:instance, :registrations_open], registrations_open)
-        Pleroma.Config.put([:instance, :invites_enabled], invites_enabled)
-        :ok
-      end)
-
       conn =
         conn
         |> assign(:user, user)
@@ -381,17 +373,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
     end
 
     test "it returns 500 if `registrations_open` is enabled", %{conn: conn, user: user} do
-      registrations_open = Pleroma.Config.get([:instance, :registrations_open])
-      invites_enabled = Pleroma.Config.get([:instance, :invites_enabled])
       Pleroma.Config.put([:instance, :registrations_open], true)
       Pleroma.Config.put([:instance, :invites_enabled], true)
 
-      on_exit(fn ->
-        Pleroma.Config.put([:instance, :registrations_open], registrations_open)
-        Pleroma.Config.put([:instance, :invites_enabled], invites_enabled)
-        :ok
-      end)
-
       conn =
         conn
         |> assign(:user, user)
@@ -1402,15 +1386,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
         :ok = File.rm(temp_file)
       end)
 
-      dynamic = Pleroma.Config.get([:instance, :dynamic_configuration])
+      %{conn: assign(conn, :user, admin)}
+    end
 
+    clear_config([:instance, :dynamic_configuration]) do
       Pleroma.Config.put([:instance, :dynamic_configuration], true)
-
-      on_exit(fn ->
-        Pleroma.Config.put([:instance, :dynamic_configuration], dynamic)
-      end)
-
-      %{conn: assign(conn, :user, admin)}
     end
 
     test "create new config setting in db", %{conn: conn} do
@@ -1961,15 +1941,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
         :ok = File.rm(temp_file)
       end)
 
-      dynamic = Pleroma.Config.get([:instance, :dynamic_configuration])
+      %{conn: assign(conn, :user, admin), admin: admin}
+    end
 
+    clear_config([:instance, :dynamic_configuration]) do
       Pleroma.Config.put([:instance, :dynamic_configuration], true)
-
-      on_exit(fn ->
-        Pleroma.Config.put([:instance, :dynamic_configuration], dynamic)
-      end)
-
-      %{conn: assign(conn, :user, admin), admin: admin}
     end
 
     test "transfer settings to DB and to file", %{conn: conn, admin: admin} do
index 4545233496622d866a844194bdfb9a9dc362ade9..bcbaad6658f49dc5045f5e17eefd0e9dc33339d0 100644 (file)
@@ -14,6 +14,10 @@ defmodule Pleroma.Web.CommonAPITest do
 
   import Pleroma.Factory
 
+  clear_config([:instance, :safe_dm_mentions])
+  clear_config([:instance, :limit])
+  clear_config([:instance, :max_pinned_statuses])
+
   test "when replying to a conversation / participation, it will set the correct context id even if no explicit reply_to is given" do
     user = insert(:user)
     {:ok, activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "direct"})
@@ -61,7 +65,6 @@ defmodule Pleroma.Web.CommonAPITest do
     har = insert(:user)
     jafnhar = insert(:user)
     tridi = insert(:user)
-    option = Pleroma.Config.get([:instance, :safe_dm_mentions])
     Pleroma.Config.put([:instance, :safe_dm_mentions], true)
 
     {:ok, activity} =
@@ -72,7 +75,6 @@ defmodule Pleroma.Web.CommonAPITest do
 
     refute tridi.ap_id in activity.recipients
     assert jafnhar.ap_id in activity.recipients
-    Pleroma.Config.put([:instance, :safe_dm_mentions], option)
   end
 
   test "it de-duplicates tags" do
@@ -195,15 +197,12 @@ defmodule Pleroma.Web.CommonAPITest do
     end
 
     test "it returns error when character limit is exceeded" do
-      limit = Pleroma.Config.get([:instance, :limit])
       Pleroma.Config.put([:instance, :limit], 5)
 
       user = insert(:user)
 
       assert {:error, "The status is over the character limit"} =
                CommonAPI.post(user, %{"status" => "foobar"})
-
-      Pleroma.Config.put([:instance, :limit], limit)
     end
   end
 
index 73cfaa8f1ec96dbb681ba44ccd4427dfd1a139ed..09e54533fa1b25c6d42ff94a75121771be8a0bbb 100644 (file)
@@ -13,15 +13,17 @@ defmodule Pleroma.Web.FederatorTest do
   setup_all do
     Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
 
-    config_path = [:instance, :federating]
-    initial_setting = Pleroma.Config.get(config_path)
-
-    Pleroma.Config.put(config_path, true)
-    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
-
     :ok
   end
 
+  clear_config_all([:instance, :federating]) do
+    Pleroma.Config.put([:instance, :federating], true)
+  end
+
+  clear_config([:instance, :allow_relay])
+  clear_config([:instance, :rewrite_policy])
+  clear_config([:mrf_keyword])
+
   describe "Publisher.perform" do
     test "call `perform` with unknown task" do
       assert {
@@ -67,8 +69,6 @@ defmodule Pleroma.Web.FederatorTest do
       end
 
       refute_received :relay_publish
-
-      Pleroma.Config.put([:instance, :allow_relay], true)
     end
   end
 
@@ -231,19 +231,18 @@ defmodule Pleroma.Web.FederatorTest do
     end
 
     test "it does not crash if MRF rejects the post" do
-      policies = Pleroma.Config.get([:instance, :rewrite_policy])
-      mrf_keyword_policy = Pleroma.Config.get(:mrf_keyword)
       Pleroma.Config.put([:mrf_keyword, :reject], ["lain"])
-      Pleroma.Config.put([:instance, :rewrite_policy], Pleroma.Web.ActivityPub.MRF.KeywordPolicy)
+
+      Pleroma.Config.put(
+        [:instance, :rewrite_policy],
+        Pleroma.Web.ActivityPub.MRF.KeywordPolicy
+      )
 
       params =
         File.read!("test/fixtures/mastodon-post-activity.json")
         |> Poison.decode!()
 
       assert Federator.incoming_ap_doc(params) == :error
-
-      Pleroma.Config.put([:instance, :rewrite_policy], policies)
-      Pleroma.Config.put(:mrf_keyword, mrf_keyword_policy)
     end
   end
 end
index d28730994567b66bff6f812a137729fc257e46f8..3fd011fd3acd795223fa2694b85914c5786b7917 100644 (file)
@@ -10,14 +10,8 @@ defmodule Pleroma.Instances.InstanceTest do
 
   import Pleroma.Factory
 
-  setup_all do
-    config_path = [:instance, :federation_reachability_timeout_days]
-    initial_setting = Pleroma.Config.get(config_path)
-
-    Pleroma.Config.put(config_path, 1)
-    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
-
-    :ok
+  clear_config_all([:instance, :federation_reachability_timeout_days]) do
+    Pleroma.Config.put([:instance, :federation_reachability_timeout_days], 1)
   end
 
   describe "set_reachable/1" do
index f0d84edeadf7d38af19b46eb750745d65368cd11..dea8e2aea268d949413ac72344e79214f23397d8 100644 (file)
@@ -7,14 +7,8 @@ defmodule Pleroma.InstancesTest do
 
   use Pleroma.DataCase
 
-  setup_all do
-    config_path = [:instance, :federation_reachability_timeout_days]
-    initial_setting = Pleroma.Config.get(config_path)
-
-    Pleroma.Config.put(config_path, 1)
-    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
-
-    :ok
+  clear_config_all([:instance, :federation_reachability_timeout_days]) do
+    Pleroma.Config.put([:instance, :federation_reachability_timeout_days], 1)
   end
 
   describe "reachable?/1" do
index 112e272f925b7444821f5f82706d0e817951b1e9..77430e9c9b4e8af54fac695054dd346c7e78060f 100644 (file)
@@ -33,6 +33,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
     :ok
   end
 
+  clear_config([:instance, :public])
+  clear_config([:rich_media, :enabled])
+
   test "the home timeline", %{conn: conn} do
     user = insert(:user)
     following = insert(:user)
@@ -86,13 +89,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
   end
 
   test "the public timeline when public is set to false", %{conn: conn} do
-    public = Config.get([:instance, :public])
     Config.put([:instance, :public], false)
 
-    on_exit(fn ->
-      Config.put([:instance, :public], public)
-    end)
-
     assert conn
            |> get("/api/v1/timelines/public", %{"local" => "False"})
            |> json_response(403) == %{"error" => "This resource requires authentication."}
@@ -261,7 +259,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
 
       assert %{"id" => id, "card" => %{"title" => "The Rock"}} = json_response(conn, 200)
       assert Activity.get_by_id(id)
-      Config.put([:rich_media, :enabled], false)
     end
 
     test "posting a direct status", %{conn: conn} do
@@ -1634,14 +1631,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
 
   describe "media upload" do
     setup do
-      upload_config = Config.get([Pleroma.Upload])
-      proxy_config = Config.get([:media_proxy])
-
-      on_exit(fn ->
-        Config.put([Pleroma.Upload], upload_config)
-        Config.put([:media_proxy], proxy_config)
-      end)
-
       user = insert(:user)
 
       conn =
@@ -1657,6 +1646,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       [conn: conn, image: image]
     end
 
+    clear_config([:media_proxy])
+    clear_config([Pleroma.Upload])
+
     test "returns uploaded image", %{conn: conn, image: image} do
       desc = "Description of the image"
 
@@ -2667,14 +2659,16 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
 
   describe "pinned statuses" do
     setup do
-      Config.put([:instance, :max_pinned_statuses], 1)
-
       user = insert(:user)
       {:ok, activity} = CommonAPI.post(user, %{"status" => "HI!!!"})
 
       [user: user, activity: activity]
     end
 
+    clear_config([:instance, :max_pinned_statuses]) do
+      Config.put([:instance, :max_pinned_statuses], 1)
+    end
+
     test "returns pinned statuses", %{conn: conn, user: user, activity: activity} do
       {:ok, _} = CommonAPI.pin(activity.id, user)
 
@@ -2769,10 +2763,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
     setup do
       Config.put([:rich_media, :enabled], true)
 
-      on_exit(fn ->
-        Config.put([:rich_media, :enabled], false)
-      end)
-
       user = insert(:user)
       %{user: user}
     end
@@ -3127,15 +3117,12 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       conn: conn,
       path: path
     } do
-      is_public = Config.get([:instance, :public])
       Config.put([:instance, :public], false)
 
       conn = get(conn, path)
 
       assert conn.status == 302
       assert redirected_to(conn) == "/web/login"
-
-      Config.put([:instance, :public], is_public)
     end
 
     test "does not redirect logged in users to the login page", %{conn: conn, path: path} do
@@ -3910,13 +3897,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
 
   describe "POST /api/v1/pleroma/accounts/confirmation_resend" do
     setup do
-      setting = Config.get([:instance, :account_activation_required])
-
-      unless setting do
-        Config.put([:instance, :account_activation_required], true)
-        on_exit(fn -> Config.put([:instance, :account_activation_required], setting) end)
-      end
-
       user = insert(:user)
       info_change = User.Info.confirmation_changeset(user.info, need_confirmation: true)
 
@@ -3931,6 +3911,10 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       [user: user]
     end
 
+    clear_config([:instance, :account_activation_required]) do
+      Config.put([:instance, :account_activation_required], true)
+    end
+
     test "resend account confirmation email", %{conn: conn, user: user} do
       conn
       |> assign(:user, user)
@@ -3953,9 +3937,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
     setup do
       user = insert(:user)
       other_user = insert(:user)
-      config = Config.get(:suggestions)
-      on_exit(fn -> Config.put(:suggestions, config) end)
-
       host = Config.get([Pleroma.Web.Endpoint, :url, :host])
       url500 = "http://test500?#{host}&#{user.nickname}"
       url200 = "http://test200?#{host}&#{user.nickname}"
@@ -3977,6 +3958,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       [user: user, other_user: other_user]
     end
 
+    clear_config(:suggestions)
+
     test "returns empty result when suggestions disabled", %{conn: conn, user: user} do
       Config.put([:suggestions, :enabled], false)
 
index 0c94755df348a1c352f02f81fcc6b35cca2f820c..79699cac5bcd96e7f383f53f898528b4e1c2abd2 100644 (file)
@@ -4,14 +4,11 @@
 
 defmodule Pleroma.Web.MediaProxyTest do
   use ExUnit.Case
+  use Pleroma.Tests.Helpers
   import Pleroma.Web.MediaProxy
   alias Pleroma.Web.MediaProxy.MediaProxyController
 
-  setup do
-    enabled = Pleroma.Config.get([:media_proxy, :enabled])
-    on_exit(fn -> Pleroma.Config.put([:media_proxy, :enabled], enabled) end)
-    :ok
-  end
+  clear_config([:media_proxy, :enabled])
 
   describe "when enabled" do
     setup do
index 0eb191c76f4f47ddd47ba3a53bc6da471d12e2f9..1cbe133b7bbb2586d29bda3920b6c5e6e6e8ebd8 100644 (file)
@@ -12,21 +12,12 @@ defmodule Pleroma.Web.OAuth.LDAPAuthorizationTest do
 
   @skip if !Code.ensure_loaded?(:eldap), do: :skip
 
-  setup_all do
-    ldap_authenticator =
-      Pleroma.Config.get(Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.PleromaAuthenticator)
-
-    ldap_enabled = Pleroma.Config.get([:ldap, :enabled])
-
-    on_exit(fn ->
-      Pleroma.Config.put(Pleroma.Web.Auth.Authenticator, ldap_authenticator)
-      Pleroma.Config.put([:ldap, :enabled], ldap_enabled)
-    end)
-
-    Pleroma.Config.put(Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.LDAPAuthenticator)
+  clear_config_all([:ldap, :enabled]) do
     Pleroma.Config.put([:ldap, :enabled], true)
+  end
 
-    :ok
+  clear_config_all(Pleroma.Web.Auth.Authenticator) do
+    Pleroma.Config.put(Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.LDAPAuthenticator)
   end
 
   @tag @skip
index 92e1563470c10bcdfd43c29f7413fa250779ccec..b492c77942067d8d9db17811d10da2606ca0fd5f 100644 (file)
@@ -11,23 +11,15 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do
   alias Pleroma.Web.OAuth.OAuthController
   alias Pleroma.Web.OAuth.Token
 
-  @oauth_config_path [:oauth2, :issue_new_refresh_token]
   @session_opts [
     store: :cookie,
     key: "_test",
     signing_salt: "cooldude"
   ]
+  clear_config_all([:instance, :account_activation_required])
 
   describe "in OAuth consumer mode, " do
     setup do
-      oauth_consumer_strategies_path = [:auth, :oauth_consumer_strategies]
-      oauth_consumer_strategies = Pleroma.Config.get(oauth_consumer_strategies_path)
-      Pleroma.Config.put(oauth_consumer_strategies_path, ~w(twitter facebook))
-
-      on_exit(fn ->
-        Pleroma.Config.put(oauth_consumer_strategies_path, oauth_consumer_strategies)
-      end)
-
       [
         app: insert(:oauth_app),
         conn:
@@ -37,6 +29,13 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do
       ]
     end
 
+    clear_config([:auth, :oauth_consumer_strategies]) do
+      Pleroma.Config.put(
+        [:auth, :oauth_consumer_strategies],
+        ~w(twitter facebook)
+      )
+    end
+
     test "GET /oauth/authorize renders auth forms, including OAuth consumer form", %{
       app: app,
       conn: conn
@@ -775,12 +774,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do
     end
 
     test "rejects token exchange for valid credentials belonging to unconfirmed user and confirmation is required" do
-      setting = Pleroma.Config.get([:instance, :account_activation_required])
-
-      unless setting do
-        Pleroma.Config.put([:instance, :account_activation_required], true)
-        on_exit(fn -> Pleroma.Config.put([:instance, :account_activation_required], setting) end)
-      end
+      Pleroma.Config.put([:instance, :account_activation_required], true)
 
       password = "testpassword"
       user = insert(:user, password_hash: Comeonin.Pbkdf2.hashpwsalt(password))
@@ -857,16 +851,10 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do
   end
 
   describe "POST /oauth/token - refresh token" do
-    setup do
-      oauth_token_config = Pleroma.Config.get(@oauth_config_path)
-
-      on_exit(fn ->
-        Pleroma.Config.get(@oauth_config_path, oauth_token_config)
-      end)
-    end
+    clear_config([:oauth2, :issue_new_refresh_token])
 
     test "issues a new access token with keep fresh token" do
-      Pleroma.Config.put(@oauth_config_path, true)
+      Pleroma.Config.put([:oauth2, :issue_new_refresh_token], true)
       user = insert(:user)
       app = insert(:oauth_app, scopes: ["read", "write"])
 
@@ -906,7 +894,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do
     end
 
     test "issues a new access token with new fresh token" do
-      Pleroma.Config.put(@oauth_config_path, false)
+      Pleroma.Config.put([:oauth2, :issue_new_refresh_token], false)
       user = insert(:user)
       app = insert(:oauth_app, scopes: ["read", "write"])
 
index 9f756effb3820b955804e0a5fd4a04b3fab99b3c..095ae70415afbf07e4ce2eca408edfb3d70d4490 100644 (file)
@@ -15,16 +15,13 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do
 
   setup_all do
     Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
-
-    config_path = [:instance, :federating]
-    initial_setting = Pleroma.Config.get(config_path)
-
-    Pleroma.Config.put(config_path, true)
-    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
-
     :ok
   end
 
+  clear_config_all([:instance, :federating]) do
+    Pleroma.Config.put([:instance, :federating], true)
+  end
+
   describe "salmon_incoming" do
     test "decodes a salmon", %{conn: conn} do
       user = insert(:user)
index c01e0112460b38397c8c554cae5e50117b694015..bb2e1687ae4a5f7a87ddec349b85ad7f768f71e8 100644 (file)
@@ -4,15 +4,7 @@
 
 defmodule Pleroma.Web.FederatingPlugTest do
   use Pleroma.Web.ConnCase
-
-  setup_all do
-    config_path = [:instance, :federating]
-    initial_setting = Pleroma.Config.get(config_path)
-
-    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
-
-    :ok
-  end
+  clear_config_all([:instance, :federating])
 
   test "returns and halt the conn when federating is disabled" do
     Pleroma.Config.put([:instance, :federating], false)
index 92198f3d9b91abeb8851ae76cc4bbd8b4b136a2d..48884319d0cc2dbd7cb171ad61033ab8d0128ba0 100644 (file)
@@ -15,12 +15,12 @@ defmodule Pleroma.Web.RichMedia.HelpersTest do
 
   setup do
     mock(fn env -> apply(HttpRequestMock, :request, [env]) end)
-    rich_media = Config.get([:rich_media, :enabled])
-    on_exit(fn -> Config.put([:rich_media, :enabled], rich_media) end)
 
     :ok
   end
 
+  clear_config([:rich_media, :enabled])
+
   test "refuses to crawl incomplete URLs" do
     user = insert(:user)
 
index 5b7fe44d44a69793c745f0607b72bd44983ea19a..96fa7645f982b1f596af704dafb1d378a4db3706 100644 (file)
@@ -11,15 +11,7 @@ defmodule Pleroma.Web.StreamerTest do
   alias Pleroma.Web.Streamer
   import Pleroma.Factory
 
-  setup do
-    skip_thread_containment = Pleroma.Config.get([:instance, :skip_thread_containment])
-
-    on_exit(fn ->
-      Pleroma.Config.put([:instance, :skip_thread_containment], skip_thread_containment)
-    end)
-
-    :ok
-  end
+  clear_config_all([:instance, :skip_thread_containment])
 
   describe "user streams" do
     setup do
index 8bb8aa36d9d5eca967119e83f5a7f933a93bd475..8ef14b4c5156c3cc9224e58f7bb0500ae537d6ae 100644 (file)
@@ -151,6 +151,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
 
   describe "GET /statuses/public_timeline.json" do
     setup [:valid_user]
+    clear_config([:instance, :public])
 
     test "returns statuses", %{conn: conn} do
       user = insert(:user)
@@ -173,8 +174,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
       conn
       |> get("/api/statuses/public_timeline.json")
       |> json_response(403)
-
-      Pleroma.Config.put([:instance, :public], true)
     end
 
     test "returns 200 to authenticated request when the instance is not public",
@@ -185,8 +184,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
       |> with_credentials(user.nickname, "test")
       |> get("/api/statuses/public_timeline.json")
       |> json_response(200)
-
-      Pleroma.Config.put([:instance, :public], true)
     end
 
     test "returns 200 to unauthenticated request when the instance is public", %{conn: conn} do
@@ -220,6 +217,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
 
   describe "GET /statuses/public_and_external_timeline.json" do
     setup [:valid_user]
+    clear_config([:instance, :public])
 
     test "returns 403 to unauthenticated request when the instance is not public", %{conn: conn} do
       Pleroma.Config.put([:instance, :public], false)
@@ -227,8 +225,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
       conn
       |> get("/api/statuses/public_and_external_timeline.json")
       |> json_response(403)
-
-      Pleroma.Config.put([:instance, :public], true)
     end
 
     test "returns 200 to authenticated request when the instance is not public",
@@ -239,8 +235,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
       |> with_credentials(user.nickname, "test")
       |> get("/api/statuses/public_and_external_timeline.json")
       |> json_response(200)
-
-      Pleroma.Config.put([:instance, :public], true)
     end
 
     test "returns 200 to unauthenticated request when the instance is public", %{conn: conn} do
@@ -1176,13 +1170,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
 
   describe "POST /api/account/resend_confirmation_email" do
     setup do
-      setting = Pleroma.Config.get([:instance, :account_activation_required])
-
-      unless setting do
-        Pleroma.Config.put([:instance, :account_activation_required], true)
-        on_exit(fn -> Pleroma.Config.put([:instance, :account_activation_required], setting) end)
-      end
-
       user = insert(:user)
       info_change = User.Info.confirmation_changeset(user.info, need_confirmation: true)
 
@@ -1197,6 +1184,10 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
       [user: user]
     end
 
+    clear_config([:instance, :account_activation_required]) do
+      Pleroma.Config.put([:instance, :account_activation_required], true)
+    end
+
     test "it returns 204 No Content", %{conn: conn, user: user} do
       conn
       |> assign(:user, user)
index 640579c09fe49e4e962b838d77ece35afd52c1b3..fe4ffdb59dd5855cdf771b38a0f547cdb007903d 100644 (file)
@@ -14,20 +14,13 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do
 
   setup do
     Tesla.Mock.mock(fn env -> apply(HttpRequestMock, :request, [env]) end)
-
-    instance_config = Pleroma.Config.get([:instance])
-    pleroma_fe = Pleroma.Config.get([:frontend_configurations, :pleroma_fe])
-    deny_follow_blocked = Pleroma.Config.get([:user, :deny_follow_blocked])
-
-    on_exit(fn ->
-      Pleroma.Config.put([:instance], instance_config)
-      Pleroma.Config.put([:frontend_configurations, :pleroma_fe], pleroma_fe)
-      Pleroma.Config.put([:user, :deny_follow_blocked], deny_follow_blocked)
-    end)
-
     :ok
   end
 
+  clear_config([:instance])
+  clear_config([:frontend_configurations, :pleroma_fe])
+  clear_config([:user, :deny_follow_blocked])
+
   describe "POST /api/pleroma/follow_import" do
     test "it returns HTTP 200", %{conn: conn} do
       user1 = insert(:user)
@@ -260,7 +253,6 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do
     end
 
     test "returns the state of safe_dm_mentions flag", %{conn: conn} do
-      option = Pleroma.Config.get([:instance, :safe_dm_mentions])
       Pleroma.Config.put([:instance, :safe_dm_mentions], true)
 
       response =
@@ -278,8 +270,6 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do
         |> json_response(:ok)
 
       assert response["site"]["safeDMMentionsEnabled"] == "0"
-
-      Pleroma.Config.put([:instance, :safe_dm_mentions], option)
     end
 
     test "it returns the managed config", %{conn: conn} do
@@ -534,15 +524,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do
   end
 
   describe "GET /api/pleroma/healthcheck" do
-    setup do
-      config_healthcheck = Pleroma.Config.get([:instance, :healthcheck])
-
-      on_exit(fn ->
-        Pleroma.Config.put([:instance, :healthcheck], config_healthcheck)
-      end)
-
-      :ok
-    end
+    clear_config([:instance, :healthcheck])
 
     test "returns 503 when healthcheck disabled", %{conn: conn} do
       Pleroma.Config.put([:instance, :healthcheck], false)
index 7d861cbf5fac3de8cdc2a45ecbe2d0e341ce8709..e23086b2aeb7edf88402a360e220bf81beb5a7e3 100644 (file)
@@ -10,15 +10,13 @@ defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do
 
   setup do
     mock(fn env -> apply(HttpRequestMock, :request, [env]) end)
-
-    config_path = [:instance, :federating]
-    initial_setting = Pleroma.Config.get(config_path)
-
-    Pleroma.Config.put(config_path, true)
-    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
     :ok
   end
 
+  clear_config_all([:instance, :federating]) do
+    Pleroma.Config.put([:instance, :federating], true)
+  end
+
   test "GET host-meta" do
     response =
       build_conn()
index aa7262beb1eb3c6d2a0cec2dabdead769e2523c2..59cacbe682ec305547cd96610698f92a56646a84 100644 (file)
@@ -9,14 +9,8 @@ defmodule Pleroma.Web.Websub.WebsubControllerTest do
   alias Pleroma.Web.Websub
   alias Pleroma.Web.Websub.WebsubClientSubscription
 
-  setup_all do
-    config_path = [:instance, :federating]
-    initial_setting = Pleroma.Config.get(config_path)
-
-    Pleroma.Config.put(config_path, true)
-    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
-
-    :ok
+  clear_config_all([:instance, :federating]) do
+    Pleroma.Config.put([:instance, :federating], true)
   end
 
   test "websub subscription request", %{conn: conn} do