diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 120 | ||||
| -rw-r--r-- | test/web/admin_api/config_test.exs | 75 | 
2 files changed, 193 insertions, 2 deletions
| diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 17a872b21..49889d6d7 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) @@ -1469,7 +1471,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          post(conn, "/api/pleroma/admin/config", %{            configs: [              %{ -              "key" => "Pleroma.Captcha", +              "key" => "Pleroma.Captcha.NotReal",                "value" => %{                  "enabled" => ":false",                  "method" => "Pleroma.Captcha.Kocaptcha", @@ -1482,7 +1484,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert json_response(conn, 200) == %{                 "configs" => [                   %{ -                   "key" => "Pleroma.Captcha", +                   "key" => "Pleroma.Captcha.NotReal",                     "value" => [                       %{"enabled" => false},                       %{"method" => "Pleroma.Captcha.Kocaptcha"}, @@ -1492,5 +1494,119 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 ]               }      end + +    test "tuples with more than two values", %{conn: conn} do +      conn = +        post(conn, "/api/pleroma/admin/config", %{ +          configs: [ +            %{ +              "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" => [ +                 %{ +                   "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..39050c276 100644 --- a/test/web/admin_api/config_test.exs +++ b/test/web/admin_api/config_test.exs @@ -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 | 
