diff options
| author | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-01-22 15:14:11 +0300 | 
|---|---|---|
| committer | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-01-22 15:14:11 +0300 | 
| commit | d5f8a88a37cb4a2341f11d5e39adfaba024e3486 (patch) | |
| tree | bdceda8a2bff68eb6c4535177b041e92b30f0fe5 /test | |
| parent | 32a643a159df2b2af4263ebfb7f7c9fd245d3a6a (diff) | |
| download | pleroma-d5f8a88a37cb4a2341f11d5e39adfaba024e3486.tar.gz pleroma-d5f8a88a37cb4a2341f11d5e39adfaba024e3486.zip | |
support for updating env after settings deletion
Diffstat (limited to 'test')
| -rw-r--r-- | test/config/config_db_test.exs | 63 | ||||
| -rw-r--r-- | test/config/transfer_task_test.exs | 2 | ||||
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 57 | 
3 files changed, 96 insertions, 26 deletions
| diff --git a/test/config/config_db_test.exs b/test/config/config_db_test.exs index 19619620e..61a0b1d5d 100644 --- a/test/config/config_db_test.exs +++ b/test/config/config_db_test.exs @@ -27,7 +27,7 @@ defmodule Pleroma.ConfigDBTest do    end    test "get_all_as_keyword/0" do -    insert(:config) +    saved = insert(:config)      insert(:config, group: ":quack", key: ":level", value: ConfigDB.to_binary(:info))      insert(:config, group: ":quack", key: ":meta", value: ConfigDB.to_binary([:none])) @@ -37,14 +37,17 @@ defmodule Pleroma.ConfigDBTest do        value: ConfigDB.to_binary("https://hooks.slack.com/services/KEY/some_val")      ) -    assert [ -             pleroma: [{_, %{another: _, another_key: _}}], -             quack: [ -               level: :info, -               meta: [:none], -               webhook_url: "https://hooks.slack.com/services/KEY/some_val" -             ] -           ] = ConfigDB.get_all_as_keyword() +    config = ConfigDB.get_all_as_keyword() + +    assert config[:pleroma] == [ +             {ConfigDB.from_string(saved.key), ConfigDB.from_binary(saved.value)} +           ] + +    assert config[:quack] == [ +             level: :info, +             meta: [:none], +             webhook_url: "https://hooks.slack.com/services/KEY/some_val" +           ]    end    describe "update_or_create/1" do @@ -191,10 +194,44 @@ defmodule Pleroma.ConfigDBTest do      end    end -  test "delete/1" do -    config = insert(:config) -    {:ok, _} = ConfigDB.delete(%{key: config.key, group: config.group}) -    refute ConfigDB.get_by_params(%{key: config.key, group: config.group}) +  describe "delete/1" do +    test "error on deleting non existing setting" do +      {:error, error} = ConfigDB.delete(%{group: ":pleroma", key: ":key"}) +      assert error =~ "Config with params %{group: \":pleroma\", key: \":key\"} not found" +    end + +    test "full delete" do +      config = insert(:config) +      {:ok, deleted} = ConfigDB.delete(%{group: config.group, key: config.key}) +      assert Ecto.get_meta(deleted, :state) == :deleted +      refute ConfigDB.get_by_params(%{group: config.group, key: config.key}) +    end + +    test "partial subkeys delete" do +      config = insert(:config, value: ConfigDB.to_binary(groups: [a: 1, b: 2], key: [a: 1])) + +      {:ok, deleted} = +        ConfigDB.delete(%{group: config.group, key: config.key, subkeys: [":groups"]}) + +      assert Ecto.get_meta(deleted, :state) == :loaded + +      assert deleted.value == ConfigDB.to_binary(key: [a: 1]) + +      updated = ConfigDB.get_by_params(%{group: config.group, key: config.key}) + +      assert updated.value == deleted.value +    end + +    test "full delete if remaining value after subkeys deletion is empty list" do +      config = insert(:config, value: ConfigDB.to_binary(groups: [a: 1, b: 2])) + +      {:ok, deleted} = +        ConfigDB.delete(%{group: config.group, key: config.key, subkeys: [":groups"]}) + +      assert Ecto.get_meta(deleted, :state) == :deleted + +      refute ConfigDB.get_by_params(%{group: config.group, key: config.key}) +    end    end    describe "transform/1" do diff --git a/test/config/transfer_task_test.exs b/test/config/transfer_task_test.exs index 20dc06863..b9072e0fc 100644 --- a/test/config/transfer_task_test.exs +++ b/test/config/transfer_task_test.exs @@ -116,6 +116,6 @@ defmodule Pleroma.Config.TransferTaskTest do      assert ExUnit.CaptureLog.capture_log(fn ->               TransferTask.start_link([])             end) =~ -             "updating env causes error, group: \":pleroma\", key: \":undefined_atom_key\", value: [live: 2, com: 3], error: %ArgumentError{message: \"argument error\"}" +             "updating env causes error, group: \":pleroma\" key: \":undefined_atom_key\" value: [live: 2, com: 3] error: %ArgumentError{message: \"argument error\"}"    end  end diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index f4cdaebf9..5c767219a 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -2053,6 +2053,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      @tag capture_log: true      test "create new config setting in db", %{conn: conn} do +      ueberauth = Application.get_env(:ueberauth, Ueberauth) +      on_exit(fn -> Application.put_env(:ueberauth, Ueberauth, ueberauth) end) +        conn =          post(conn, "/api/pleroma/admin/config", %{            configs: [ @@ -2420,25 +2423,26 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               }      end -    test "update config setting & delete", %{conn: conn} do +    test "update config setting & delete with fallback to default value", %{ +      conn: conn, +      admin: admin, +      token: token +    } do +      ueberauth = Application.get_env(:ueberauth, Ueberauth)        config1 = insert(:config, key: ":keyaa1")        config2 = insert(:config, key: ":keyaa2") -      insert(:config, -        group: "ueberauth", -        key: "Ueberauth.Strategy.Microsoft.OAuth" -      ) +      config3 = +        insert(:config, +          group: ":ueberauth", +          key: "Ueberauth" +        )        conn =          post(conn, "/api/pleroma/admin/config", %{            configs: [              %{group: config1.group, key: config1.key, value: "another_value"}, -            %{group: config2.group, key: config2.key, delete: true}, -            %{ -              group: "ueberauth", -              key: "Ueberauth.Strategy.Microsoft.OAuth", -              delete: true -            } +            %{group: config2.group, key: config2.key, value: "another_value"}            ]          }) @@ -2449,12 +2453,41 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "key" => config1.key,                     "value" => "another_value",                     "db" => [":keyaa1"] +                 }, +                 %{ +                   "group" => ":pleroma", +                   "key" => config2.key, +                   "value" => "another_value", +                   "db" => [":keyaa2"]                   }                 ]               }        assert Application.get_env(:pleroma, :keyaa1) == "another_value" -      refute Application.get_env(:pleroma, :keyaa2) +      assert Application.get_env(:pleroma, :keyaa2) == "another_value" +      assert Application.get_env(:ueberauth, Ueberauth) == ConfigDB.from_binary(config3.value) + +      conn = +        build_conn() +        |> assign(:user, admin) +        |> assign(:token, token) +        |> post("/api/pleroma/admin/config", %{ +          configs: [ +            %{group: config2.group, key: config2.key, delete: true}, +            %{ +              group: ":ueberauth", +              key: "Ueberauth", +              delete: true +            } +          ] +        }) + +      assert json_response(conn, 200) == %{ +               "configs" => [] +             } + +      assert Application.get_env(:ueberauth, Ueberauth) == ueberauth +      refute Keyword.has_key?(Application.get_all_env(:pleroma), :keyaa2)      end      test "common config example", %{conn: conn} do | 
