Merge branch 'fix_for_migrate_to_db_test' into 'develop'
authorfeld <feld@feld.me>
Fri, 24 Jan 2020 00:25:38 +0000 (00:25 +0000)
committerfeld <feld@feld.me>
Fri, 24 Jan 2020 00:25:38 +0000 (00:25 +0000)
Fix for migrate to db test

See merge request pleroma/pleroma!2133

CHANGELOG.md
lib/mix/tasks/pleroma/config.ex
lib/pleroma/config/config_db.ex
test/config/config_db_test.exs
test/tasks/config_test.exs

index 3f691463894dee8c889cd96fbb8b329a70df96a9..861312e18e488c8ab357f654c2c318f3bbc8d713 100644 (file)
@@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 - Store status data inside Flag activity
 - Deprecated (reorganized as `UserRelationship` entity) User fields with user AP IDs (`blocks`, `mutes`, `muted_reblogs`, `muted_notifications`, `subscribers`).
 - Logger: default log level changed from `warn` to `info`.
+- Config mix task `migrate_to_db` truncates `config` table before migrating the config file.
 <details>
   <summary>API Changes</summary>
 
index 861832451bb272e43c63385f895fff85af54b681..3e76d2c970977b2fea15bdb5df97aa33ee8d2894 100644 (file)
@@ -52,6 +52,9 @@ defmodule Mix.Tasks.Pleroma.Config do
 
   defp do_migrate_to_db(config_file) do
     if File.exists?(config_file) do
+      Ecto.Adapters.SQL.query!(Repo, "TRUNCATE config;")
+      Ecto.Adapters.SQL.query!(Repo, "ALTER SEQUENCE config_id_seq RESTART;")
+
       custom_config =
         config_file
         |> read_file()
index 91a1aa0cc2cf3781bf0b759ed2382418bea8a492..be66880951b57cefcfed87564f5c4b6f9abf5923 100644 (file)
@@ -416,7 +416,7 @@ defmodule Pleroma.ConfigDB do
 
   @spec is_module_name?(String.t()) :: boolean()
   def is_module_name?(string) do
-    Regex.match?(~r/^(Pleroma|Phoenix|Tesla|Quack|Ueberauth)\./, string) or
+    Regex.match?(~r/^(Pleroma|Phoenix|Tesla|Quack|Ueberauth|Swoosh)\./, string) or
       string in ["Oban", "Ueberauth", "ExSyslogger"]
   end
 end
index 61a0b1d5d5e5cf734049b60ef3119910dc626335..812709fd87b029c87c3d84f5a00b3029135ca3a4 100644 (file)
@@ -307,6 +307,15 @@ defmodule Pleroma.ConfigDBTest do
       assert ConfigDB.from_binary(binary) == Quack.Logger
     end
 
+    test "Swoosh.Adapters modules" do
+      binary = ConfigDB.transform("Swoosh.Adapters.SMTP")
+      assert binary == :erlang.term_to_binary(Swoosh.Adapters.SMTP)
+      assert ConfigDB.from_binary(binary) == Swoosh.Adapters.SMTP
+      binary = ConfigDB.transform("Swoosh.Adapters.AmazonSES")
+      assert binary == :erlang.term_to_binary(Swoosh.Adapters.AmazonSES)
+      assert ConfigDB.from_binary(binary) == Swoosh.Adapters.AmazonSES
+    end
+
     test "sigil" do
       binary = ConfigDB.transform("~r[comp[lL][aA][iI][nN]er]")
       assert binary == :erlang.term_to_binary(~r/comp[lL][aA][iI][nN]er/)
index e7bb6e7144f9154bd49a701a037d51ef1ccdc7ed..d79d34276db85673d0da3b951f20a1faddbd663a 100644 (file)
@@ -34,21 +34,41 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do
                    15
   end
 
-  test "settings are migrated to db" do
-    initial = Application.get_env(:quack, :level)
-    on_exit(fn -> Application.put_env(:quack, :level, initial) end)
-    assert Repo.all(ConfigDB) == []
+  describe "migrate_to_db/1" do
+    setup do
+      initial = Application.get_env(:quack, :level)
+      on_exit(fn -> Application.put_env(:quack, :level, initial) end)
+    end
+
+    test "settings are migrated to db" do
+      assert Repo.all(ConfigDB) == []
+
+      Mix.Tasks.Pleroma.Config.migrate_to_db("test/fixtures/config/temp.secret.exs")
+
+      config1 = ConfigDB.get_by_params(%{group: ":pleroma", key: ":first_setting"})
+      config2 = ConfigDB.get_by_params(%{group: ":pleroma", key: ":second_setting"})
+      config3 = ConfigDB.get_by_params(%{group: ":quack", key: ":level"})
+      refute ConfigDB.get_by_params(%{group: ":pleroma", key: "Pleroma.Repo"})
+
+      assert ConfigDB.from_binary(config1.value) == [key: "value", key2: [Repo]]
+      assert ConfigDB.from_binary(config2.value) == [key: "value2", key2: ["Activity"]]
+      assert ConfigDB.from_binary(config3.value) == :info
+    end
 
-    Mix.Tasks.Pleroma.Config.migrate_to_db("test/fixtures/config/temp.secret.exs")
+    test "config table is truncated before migration" do
+      ConfigDB.create(%{
+        group: ":pleroma",
+        key: ":first_setting",
+        value: [key: "value", key2: ["Activity"]]
+      })
+
+      assert Repo.aggregate(ConfigDB, :count, :id) == 1
 
-    config1 = ConfigDB.get_by_params(%{group: ":pleroma", key: ":first_setting"})
-    config2 = ConfigDB.get_by_params(%{group: ":pleroma", key: ":second_setting"})
-    config3 = ConfigDB.get_by_params(%{group: ":quack", key: ":level"})
-    refute ConfigDB.get_by_params(%{group: ":pleroma", key: "Pleroma.Repo"})
+      Mix.Tasks.Pleroma.Config.migrate_to_db("test/fixtures/config/temp.secret.exs")
 
-    assert ConfigDB.from_binary(config1.value) == [key: "value", key2: [Repo]]
-    assert ConfigDB.from_binary(config2.value) == [key: "value2", key2: ["Activity"]]
-    assert ConfigDB.from_binary(config3.value) == :info
+      config = ConfigDB.get_by_params(%{group: ":pleroma", key: ":first_setting"})
+      assert ConfigDB.from_binary(config.value) == [key: "value", key2: [Repo]]
+    end
   end
 
   describe "with deletion temp file" do