diff options
Diffstat (limited to 'test/web/admin_api')
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 175 | ||||
| -rw-r--r-- | test/web/admin_api/config_test.exs | 95 | 
2 files changed, 257 insertions, 13 deletions
| diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 2a5912645..4278ac59d 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -1343,6 +1343,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          Application.delete_env(:pleroma, :key4)          Application.delete_env(:pleroma, :keyaa1)          Application.delete_env(:pleroma, :keyaa2) +        Application.delete_env(:pleroma, Pleroma.Web.Endpoint.NotReal) +        Application.delete_env(:pleroma, Pleroma.Captcha.NotReal)          :ok = File.rm(temp_file)        end) @@ -1361,8 +1363,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          post(conn, "/api/pleroma/admin/config", %{            configs: [ -            %{key: "key1", value: "value1"}, +            %{group: "pleroma", key: "key1", value: "value1"},              %{ +              group: "pleroma",                key: "key2",                value: %{                  "nested_1" => "nested_value1", @@ -1373,6 +1376,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                }              },              %{ +              group: "pleroma",                key: "key3",                value: [                  %{"nested_3" => ":nested_3", "nested_33" => "nested_33"}, @@ -1380,8 +1384,14 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                ]              },              %{ +              group: "pleroma",                key: "key4",                value: %{"nested_5" => ":upload", "endpoint" => "https://example.com"} +            }, +            %{ +              group: "idna", +              key: "key5", +              value: %{"tuple" => ["string", "Pleroma.Captcha.NotReal", []]}              }            ]          }) @@ -1389,10 +1399,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert json_response(conn, 200) == %{                 "configs" => [                   %{ +                   "group" => "pleroma",                     "key" => "key1",                     "value" => "value1"                   },                   %{ +                   "group" => "pleroma",                     "key" => "key2",                     "value" => [                       %{"nested_1" => "nested_value1"}, @@ -1405,6 +1417,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     ]                   },                   %{ +                   "group" => "pleroma",                     "key" => "key3",                     "value" => [                       [%{"nested_3" => "nested_3"}, %{"nested_33" => "nested_33"}], @@ -1412,8 +1425,14 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     ]                   },                   %{ +                   "group" => "pleroma",                     "key" => "key4",                     "value" => [%{"endpoint" => "https://example.com"}, %{"nested_5" => "upload"}] +                 }, +                 %{ +                   "group" => "idna", +                   "key" => "key5", +                   "value" => %{"tuple" => ["string", "Pleroma.Captcha.NotReal", []]}                   }                 ]               } @@ -1437,6 +1456,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 endpoint: "https://example.com",                 nested_5: :upload               ] + +      assert Application.get_env(:idna, :key5) == {"string", Pleroma.Captcha.NotReal, []}      end      test "update config setting & delete", %{conn: conn} do @@ -1446,14 +1467,15 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          post(conn, "/api/pleroma/admin/config", %{            configs: [ -            %{key: config1.key, value: "another_value"}, -            %{key: config2.key, delete: "true"} +            %{group: config1.group, key: config1.key, value: "another_value"}, +            %{group: config2.group, key: config2.key, delete: "true"}            ]          })        assert json_response(conn, 200) == %{                 "configs" => [                   %{ +                   "group" => "pleroma",                     "key" => config1.key,                     "value" => "another_value"                   } @@ -1463,5 +1485,152 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert Application.get_env(:pleroma, :keyaa1) == "another_value"        refute Application.get_env(:pleroma, :keyaa2)      end + +    test "common config example", %{conn: conn} do +      conn = +        post(conn, "/api/pleroma/admin/config", %{ +          configs: [ +            %{ +              "group" => "pleroma", +              "key" => "Pleroma.Captcha.NotReal", +              "value" => %{ +                "enabled" => ":false", +                "method" => "Pleroma.Captcha.Kocaptcha", +                "seconds_valid" => "i:60" +              } +            } +          ] +        }) + +      assert json_response(conn, 200) == %{ +               "configs" => [ +                 %{ +                   "group" => "pleroma", +                   "key" => "Pleroma.Captcha.NotReal", +                   "value" => [ +                     %{"enabled" => false}, +                     %{"method" => "Pleroma.Captcha.Kocaptcha"}, +                     %{"seconds_valid" => 60} +                   ] +                 } +               ] +             } +    end + +    test "tuples with more than two values", %{conn: conn} do +      conn = +        post(conn, "/api/pleroma/admin/config", %{ +          configs: [ +            %{ +              "group" => "pleroma", +              "key" => "Pleroma.Web.Endpoint.NotReal", +              "value" => [ +                %{ +                  "http" => %{ +                    "dispatch" => [ +                      %{ +                        "tuple" => [ +                          ":_", +                          [ +                            %{ +                              "tuple" => [ +                                "/api/v1/streaming", +                                "Pleroma.Web.MastodonAPI.WebsocketHandler", +                                [] +                              ] +                            }, +                            %{ +                              "tuple" => [ +                                "/websocket", +                                "Phoenix.Endpoint.CowboyWebSocket", +                                %{ +                                  "tuple" => [ +                                    "Phoenix.Transports.WebSocket", +                                    %{ +                                      "tuple" => [ +                                        "Pleroma.Web.Endpoint", +                                        "Pleroma.Web.UserSocket", +                                        [] +                                      ] +                                    } +                                  ] +                                } +                              ] +                            }, +                            %{ +                              "tuple" => [ +                                ":_", +                                "Phoenix.Endpoint.Cowboy2Handler", +                                %{ +                                  "tuple" => ["Pleroma.Web.Endpoint", []] +                                } +                              ] +                            } +                          ] +                        ] +                      } +                    ] +                  } +                } +              ] +            } +          ] +        }) + +      assert json_response(conn, 200) == %{ +               "configs" => [ +                 %{ +                   "group" => "pleroma", +                   "key" => "Pleroma.Web.Endpoint.NotReal", +                   "value" => [ +                     %{ +                       "http" => %{ +                         "dispatch" => %{ +                           "_" => [ +                             %{ +                               "tuple" => [ +                                 "/api/v1/streaming", +                                 "Pleroma.Web.MastodonAPI.WebsocketHandler", +                                 [] +                               ] +                             }, +                             %{ +                               "tuple" => [ +                                 "/websocket", +                                 "Phoenix.Endpoint.CowboyWebSocket", +                                 %{ +                                   "Elixir.Phoenix.Transports.WebSocket" => %{ +                                     "tuple" => [ +                                       "Pleroma.Web.Endpoint", +                                       "Pleroma.Web.UserSocket", +                                       [] +                                     ] +                                   } +                                 } +                               ] +                             }, +                             %{ +                               "tuple" => [ +                                 "_", +                                 "Phoenix.Endpoint.Cowboy2Handler", +                                 %{"Elixir.Pleroma.Web.Endpoint" => []} +                               ] +                             } +                           ] +                         } +                       } +                     } +                   ] +                 } +               ] +             } +    end    end  end + +# Needed for testing +defmodule Pleroma.Web.Endpoint.NotReal do +end + +defmodule Pleroma.Captcha.NotReal do +end diff --git a/test/web/admin_api/config_test.exs b/test/web/admin_api/config_test.exs index a2fedca40..10cb3b68a 100644 --- a/test/web/admin_api/config_test.exs +++ b/test/web/admin_api/config_test.exs @@ -7,18 +7,18 @@ defmodule Pleroma.Web.AdminAPI.ConfigTest do      config = insert(:config)      insert(:config) -    assert config == Config.get_by_key(config.key) +    assert config == Config.get_by_params(%{group: config.group, key: config.key})    end    test "create/1" do -    {:ok, config} = Config.create(%{key: "some_key", value: "some_value"}) -    assert config == Config.get_by_key("some_key") +    {:ok, config} = Config.create(%{group: "pleroma", key: "some_key", value: "some_value"}) +    assert config == Config.get_by_params(%{group: "pleroma", key: "some_key"})    end    test "update/1" do      config = insert(:config)      {:ok, updated} = Config.update(config, %{value: "some_value"}) -    loaded = Config.get_by_key(config.key) +    loaded = Config.get_by_params(%{group: config.group, key: config.key})      assert loaded == updated    end @@ -27,8 +27,8 @@ defmodule Pleroma.Web.AdminAPI.ConfigTest do      key2 = "another_key"      params = [ -      %{key: key2, value: "another_value"}, -      %{key: config.key, value: "new_value"} +      %{group: "pleroma", key: key2, value: "another_value"}, +      %{group: config.group, key: config.key, value: "new_value"}      ]      assert Repo.all(Config) |> length() == 1 @@ -37,8 +37,8 @@ defmodule Pleroma.Web.AdminAPI.ConfigTest do      assert Repo.all(Config) |> length() == 2 -    config1 = Config.get_by_key(config.key) -    config2 = Config.get_by_key(key2) +    config1 = Config.get_by_params(%{group: config.group, key: config.key}) +    config2 = Config.get_by_params(%{group: "pleroma", key: key2})      assert config1.value == Config.transform("new_value")      assert config2.value == Config.transform("another_value") @@ -46,8 +46,8 @@ defmodule Pleroma.Web.AdminAPI.ConfigTest do    test "delete/1" do      config = insert(:config) -    {:ok, _} = Config.delete(config.key) -    refute Config.get_by_key(config.key) +    {:ok, _} = Config.delete(%{key: config.key, group: config.group}) +    refute Config.get_by_params(%{key: config.key, group: config.group})    end    describe "transform/1" do @@ -179,5 +179,80 @@ defmodule Pleroma.Web.AdminAPI.ConfigTest do        assert Config.from_binary(binary) ==                 [federated_timeline_removal: [], reject: [~r/comp[lL][aA][iI][nN]er/], replace: []]      end + +    test "complex map with tuples with more than 2 values" do +      binary = +        Config.transform(%{ +          "http" => %{ +            "dispatch" => [ +              %{ +                "tuple" => [ +                  ":_", +                  [ +                    %{ +                      "tuple" => [ +                        "/api/v1/streaming", +                        "Pleroma.Web.MastodonAPI.WebsocketHandler", +                        [] +                      ] +                    }, +                    %{ +                      "tuple" => [ +                        "/websocket", +                        "Phoenix.Endpoint.CowboyWebSocket", +                        %{ +                          "tuple" => [ +                            "Phoenix.Transports.WebSocket", +                            %{"tuple" => ["Pleroma.Web.Endpoint", "Pleroma.Web.UserSocket", []]} +                          ] +                        } +                      ] +                    }, +                    %{ +                      "tuple" => [ +                        ":_", +                        "Phoenix.Endpoint.Cowboy2Handler", +                        %{ +                          "tuple" => ["Pleroma.Web.Endpoint", []] +                        } +                      ] +                    } +                  ] +                ] +              } +            ] +          } +        }) + +      assert binary == +               :erlang.term_to_binary( +                 http: [ +                   dispatch: [ +                     _: [ +                       {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []}, +                       {"/websocket", Phoenix.Endpoint.CowboyWebSocket, +                        {Phoenix.Transports.WebSocket, +                         {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, []}}}, +                       {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}} +                     ] +                   ] +                 ] +               ) + +      assert Config.from_binary(binary) == [ +               http: [ +                 dispatch: [ +                   {:_, +                    [ +                      {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []}, +                      {"/websocket", Phoenix.Endpoint.CowboyWebSocket, +                       {Phoenix.Transports.WebSocket, +                        {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, []}}}, +                      {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}} +                    ]} +                 ] +               ] +             ] +    end    end  end | 
