Update base image in Dockerfile to newer elixir version
[akkoma] / test / pleroma / config / transfer_task_test.exs
index 30cb92fa7e746f56963535527193b95a2101c553..6491d10fbdafc51bb13160508a37d0c7085ff1d7 100644 (file)
@@ -17,14 +17,12 @@ defmodule Pleroma.Config.TransferTaskTest do
   test "transfer config values from db to env" do
     refute Application.get_env(:pleroma, :test_key)
     refute Application.get_env(:idna, :test_key)
   test "transfer config values from db to env" do
     refute Application.get_env(:pleroma, :test_key)
     refute Application.get_env(:idna, :test_key)
-    refute Application.get_env(:quack, :test_key)
     refute Application.get_env(:postgrex, :test_key)
 
     initial = Application.get_env(:logger, :level)
 
     insert(:config, key: :test_key, value: [live: 2, com: 3])
     insert(:config, group: :idna, key: :test_key, value: [live: 15, com: 35])
     refute Application.get_env(:postgrex, :test_key)
 
     initial = Application.get_env(:logger, :level)
 
     insert(:config, key: :test_key, value: [live: 2, com: 3])
     insert(:config, group: :idna, key: :test_key, value: [live: 15, com: 35])
-    insert(:config, group: :quack, key: :test_key, value: [:test_value1, :test_value2])
     insert(:config, group: :postgrex, key: :test_key, value: :value)
     insert(:config, group: :logger, key: :level, value: :debug)
     insert(:config, group: :pleroma, key: :instance, value: [static_dir: "static_dir_from_db"])
     insert(:config, group: :postgrex, key: :test_key, value: :value)
     insert(:config, group: :logger, key: :level, value: :debug)
     insert(:config, group: :pleroma, key: :instance, value: [static_dir: "static_dir_from_db"])
@@ -32,7 +30,6 @@ defmodule Pleroma.Config.TransferTaskTest do
 
     assert Application.get_env(:pleroma, :test_key) == [live: 2, com: 3]
     assert Application.get_env(:idna, :test_key) == [live: 15, com: 35]
 
     assert Application.get_env(:pleroma, :test_key) == [live: 2, com: 3]
     assert Application.get_env(:idna, :test_key) == [live: 15, com: 35]
-    assert Application.get_env(:quack, :test_key) == [:test_value1, :test_value2]
     assert Application.get_env(:logger, :level) == :debug
     assert Application.get_env(:postgrex, :test_key) == :value
     assert Application.get_env(:pleroma, :instance)[:static_dir] == "static_dir_from_db"
     assert Application.get_env(:logger, :level) == :debug
     assert Application.get_env(:postgrex, :test_key) == :value
     assert Application.get_env(:pleroma, :instance)[:static_dir] == "static_dir_from_db"
@@ -40,7 +37,6 @@ defmodule Pleroma.Config.TransferTaskTest do
     on_exit(fn ->
       Application.delete_env(:pleroma, :test_key)
       Application.delete_env(:idna, :test_key)
     on_exit(fn ->
       Application.delete_env(:pleroma, :test_key)
       Application.delete_env(:idna, :test_key)
-      Application.delete_env(:quack, :test_key)
       Application.delete_env(:postgrex, :test_key)
       Application.put_env(:logger, :level, initial)
       System.delete_env("RELEASE_NAME")
       Application.delete_env(:postgrex, :test_key)
       Application.put_env(:logger, :level, initial)
       System.delete_env("RELEASE_NAME")
@@ -82,26 +78,6 @@ defmodule Pleroma.Config.TransferTaskTest do
     end)
   end
 
     end)
   end
 
-  test "transfer config values for 1 group and some keys" do
-    level = Application.get_env(:quack, :level)
-    meta = Application.get_env(:quack, :meta)
-
-    insert(:config, group: :quack, key: :level, value: :info)
-    insert(:config, group: :quack, key: :meta, value: [:none])
-
-    TransferTask.start_link([])
-
-    assert Application.get_env(:quack, :level) == :info
-    assert Application.get_env(:quack, :meta) == [:none]
-    default = Pleroma.Config.Holder.default_config(:quack, :webhook_url)
-    assert Application.get_env(:quack, :webhook_url) == default
-
-    on_exit(fn ->
-      Application.put_env(:quack, :level, level)
-      Application.put_env(:quack, :meta, meta)
-    end)
-  end
-
   test "transfer config values with full subkey update" do
     clear_config(:emoji)
     clear_config(:assets)
   test "transfer config values with full subkey update" do
     clear_config(:emoji)
     clear_config(:assets)
@@ -119,44 +95,87 @@ defmodule Pleroma.Config.TransferTaskTest do
 
   describe "pleroma restart" do
     setup do
 
   describe "pleroma restart" do
     setup do
-      on_exit(fn -> Restarter.Pleroma.refresh() end)
+      on_exit(fn ->
+        Restarter.Pleroma.refresh()
+
+        # Restarter.Pleroma.refresh/0 is an asynchronous call.
+        # A GenServer will first finish the previous call before starting a new one.
+        # Here we do a synchronous call.
+        # That way we are sure that the previous call has finished before we continue.
+        # See https://stackoverflow.com/questions/51361856/how-to-use-task-await-with-genserver
+        Restarter.Pleroma.rebooted?()
+      end)
     end
 
     end
 
-    @tag :erratic
     test "don't restart if no reboot time settings were changed" do
       clear_config(:emoji)
       insert(:config, key: :emoji, value: [groups: [a: 1, b: 2]])
 
       refute String.contains?(
     test "don't restart if no reboot time settings were changed" do
       clear_config(:emoji)
       insert(:config, key: :emoji, value: [groups: [a: 1, b: 2]])
 
       refute String.contains?(
-               capture_log(fn -> TransferTask.start_link([]) end),
+               capture_log(fn ->
+                 TransferTask.start_link([])
+
+                 # TransferTask.start_link/1 is an asynchronous call.
+                 # A GenServer will first finish the previous call before starting a new one.
+                 # Here we do a synchronous call.
+                 # That way we are sure that the previous call has finished before we continue.
+                 Restarter.Pleroma.rebooted?()
+               end),
                "pleroma restarted"
              )
     end
 
                "pleroma restarted"
              )
     end
 
-    @tag :erratic
     test "on reboot time key" do
     test "on reboot time key" do
-      clear_config([:pleroma, :rate_limit])
-      insert(:config, key: {:pleroma, :rate_limit}, value: [enabled: false])
-      assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted"
+      clear_config(:rate_limit)
+      insert(:config, key: :rate_limit, value: [enabled: false])
+
+      # Note that we don't actually restart Pleroma.
+      # See module Restarter.Pleroma
+      assert capture_log(fn ->
+               TransferTask.start_link([])
+
+               # TransferTask.start_link/1 is an asynchronous call.
+               # A GenServer will first finish the previous call before starting a new one.
+               # Here we do a synchronous call.
+               # That way we are sure that the previous call has finished before we continue.
+               Restarter.Pleroma.rebooted?()
+             end) =~ "pleroma restarted"
     end
 
     end
 
-    @tag :erratic
     test "on reboot time subkey" do
       clear_config(Pleroma.Captcha)
       insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])
     test "on reboot time subkey" do
       clear_config(Pleroma.Captcha)
       insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])
-      assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted"
+
+      # Note that we don't actually restart Pleroma.
+      # See module Restarter.Pleroma
+      assert capture_log(fn ->
+               TransferTask.start_link([])
+
+               # TransferTask.start_link/1 is an asynchronous call.
+               # A GenServer will first finish the previous call before starting a new one.
+               # Here we do a synchronous call.
+               # That way we are sure that the previous call has finished before we continue.
+               Restarter.Pleroma.rebooted?()
+             end) =~ "pleroma restarted"
     end
 
     end
 
-    @tag :erratic
     test "don't restart pleroma on reboot time key and subkey if there is false flag" do
     test "don't restart pleroma on reboot time key and subkey if there is false flag" do
-      clear_config([:pleroma, :rate_limit])
+      clear_config(:rate_limit)
       clear_config(Pleroma.Captcha)
 
       clear_config(Pleroma.Captcha)
 
-      insert(:config, key: {:pleroma, :rate_limit}, value: [enabled: false])
+      insert(:config, key: :rate_limit, value: [enabled: false])
       insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])
 
       refute String.contains?(
       insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])
 
       refute String.contains?(
-               capture_log(fn -> TransferTask.load_and_update_env([], false) end),
+               capture_log(fn ->
+                 TransferTask.load_and_update_env([], false)
+
+                 # TransferTask.start_link/1 is an asynchronous call.
+                 # A GenServer will first finish the previous call before starting a new one.
+                 # Here we do a synchronous call.
+                 # That way we are sure that the previous call has finished before we continue.
+                 Restarter.Pleroma.rebooted?()
+               end),
                "pleroma restarted"
              )
     end
                "pleroma restarted"
              )
     end