diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/emails/user_email_test.exs | 2 | ||||
-rw-r--r-- | test/frontend_test.exs | 75 | ||||
-rw-r--r-- | test/plugs/frontend_plug_test.exs | 21 | ||||
-rw-r--r-- | test/plugs/frontend_static_test.exs | 2 | ||||
-rw-r--r-- | test/plugs/instance_static_test.exs | 13 | ||||
-rw-r--r-- | test/web/controllers/frontend/headless_controller_test.exs | 10 | ||||
-rw-r--r-- | test/web/controllers/frontend/pleroma_controller_test.exs (renamed from test/web/fallback_test.exs) | 20 | ||||
-rw-r--r-- | test/web/feed/user_controller_test.exs | 12 |
8 files changed, 128 insertions, 27 deletions
diff --git a/test/emails/user_email_test.exs b/test/emails/user_email_test.exs index a75623bb4..c6044a8a5 100644 --- a/test/emails/user_email_test.exs +++ b/test/emails/user_email_test.exs @@ -31,7 +31,7 @@ defmodule Pleroma.Emails.UserEmailTest do assert email.to == [{"Jonh", "test@test.com"}] assert email.html_body =~ - Router.Helpers.redirect_url(Endpoint, :registration_page, token.token) + Router.Helpers.frontend_url(Endpoint, :registration_page, token.token) end test "build account confirmation email" do diff --git a/test/frontend_test.exs b/test/frontend_test.exs new file mode 100644 index 000000000..ad8568092 --- /dev/null +++ b/test/frontend_test.exs @@ -0,0 +1,75 @@ +defmodule Pleroma.FrontendTest do + use ExUnit.Case + use Pleroma.Tests.Helpers + + describe "get_config/1" do + test "Primary config" do + config = %{"name" => "monsta", "ref" => "pika"} + + clear_config([:frontends, :primary], config) + + fe_config = Pleroma.Frontend.get_config() + assert fe_config["config"] == config + assert fe_config["controller"] == Pleroma.Web.Frontend.MonstaController + end + + test "Headless" do + config = %{"name" => "none", "ref" => "void"} + + clear_config([:frontends, :primary], config) + + fe_config = Pleroma.Frontend.get_config() + assert fe_config["config"] == %{} + assert fe_config["controller"] == Pleroma.Web.Frontend.HeadlessController + end + end + + describe "file_path/2" do + @dir "test/tmp/instance_static" + @filename "gif.bat" + + setup do + File.mkdir_p!(@dir) + + config = %{"name" => "monsta", "ref" => "mew"} + + clear_config([:frontends, :primary], config) + clear_config([:instance, :static_dir], @dir) + + fe_path = Path.join([@dir, "frontends", config["name"], config["ref"]]) + File.mkdir_p!(fe_path) + priv_path = Application.app_dir(:pleroma, ["priv", "static"]) + + on_exit(fn -> + File.rm_rf(@dir) + File.rm(Path.join(priv_path, @filename)) + end) + + {:ok, %{frontend_path: fe_path, priv_path: priv_path}} + end + + test "instance static path priority", %{frontend_path: fp, priv_path: pp} do + Enum.each([@dir, fp, pp], &File.write!(Path.join(&1, @filename), "sup")) + + assert Pleroma.Frontend.file_path(@filename) == {:ok, Path.join(@dir, @filename)} + end + + test "frontend path priority", %{frontend_path: fp, priv_path: pp} do + Enum.each([fp, pp], &File.write!(Path.join(&1, @filename), "sup")) + + assert Pleroma.Frontend.file_path(@filename) == {:ok, Path.join(fp, @filename)} + end + + test "priv path fallback", %{priv_path: pp} do + File.write!(Path.join(pp, @filename), "sup") + + assert Pleroma.Frontend.file_path(@filename) == {:ok, Path.join(pp, @filename)} + end + + test "non-existing file" do + assert {:error, error} = Pleroma.Frontend.file_path("miseeen.jgp.pgn.mp5.avee") + + assert String.valid?(error) + end + end +end diff --git a/test/plugs/frontend_plug_test.exs b/test/plugs/frontend_plug_test.exs new file mode 100644 index 000000000..d75c7a54b --- /dev/null +++ b/test/plugs/frontend_plug_test.exs @@ -0,0 +1,21 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FrontendPlugTest do + use Pleroma.Web.ConnCase + + test "Puts correct conn.private.frontend", %{conn: conn} do + config = %{"name" => "sake", "ref" => "beer"} + + clear_config([:frontends, :primary], config) + + plug = Pleroma.Plugs.FrontendPlug.init(nil) + conn = Pleroma.Plugs.FrontendPlug.call(conn, plug) + + frontend = Map.get(conn.private, :frontend, %{}) + + assert frontend["controller"] == Pleroma.Web.Frontend.SakeController + assert frontend["config"] == config + end +end diff --git a/test/plugs/frontend_static_test.exs b/test/plugs/frontend_static_test.exs index d11d91d78..c0ffc9bda 100644 --- a/test/plugs/frontend_static_test.exs +++ b/test/plugs/frontend_static_test.exs @@ -15,7 +15,7 @@ defmodule Pleroma.Web.FrontendStaticPlugTest do setup do: clear_config([:instance, :static_dir], @dir) test "overrides existing static files", %{conn: conn} do - name = "pelmora" + name = "pleroma" ref = "uguu" clear_config([:frontends, :primary], %{"name" => name, "ref" => ref}) diff --git a/test/plugs/instance_static_test.exs b/test/plugs/instance_static_test.exs index d42ba817e..c4c5e948e 100644 --- a/test/plugs/instance_static_test.exs +++ b/test/plugs/instance_static_test.exs @@ -6,14 +6,16 @@ defmodule Pleroma.Web.InstanceStaticPlugTest do use Pleroma.Web.ConnCase @dir "test/tmp/instance_static" + @fe_name "pleroma" + @fe_ref "uguu" setup do File.mkdir_p!(@dir) on_exit(fn -> File.rm_rf(@dir) end) + clear_config([:instance, :static_dir], @dir) + clear_config([:frontends, :primary], %{"name" => @fe_name, "ref" => @fe_ref}) end - setup do: clear_config([:instance, :static_dir], @dir) - test "overrides index" do bundled_index = get(build_conn(), "/") refute html_response(bundled_index, 200) == "hello world" @@ -25,15 +27,10 @@ defmodule Pleroma.Web.InstanceStaticPlugTest do end test "also overrides frontend files", %{conn: conn} do - name = "pelmora" - ref = "uguu" - - clear_config([:frontends, :primary], %{"name" => name, "ref" => ref}) - bundled_index = get(conn, "/") refute html_response(bundled_index, 200) == "from frontend plug" - path = "#{@dir}/frontends/#{name}/#{ref}" + path = "#{@dir}/frontends/#{@fe_name}/#{@fe_ref}" File.mkdir_p!(path) File.write!("#{path}/index.html", "from frontend plug") diff --git a/test/web/controllers/frontend/headless_controller_test.exs b/test/web/controllers/frontend/headless_controller_test.exs new file mode 100644 index 000000000..b3245c9ee --- /dev/null +++ b/test/web/controllers/frontend/headless_controller_test.exs @@ -0,0 +1,10 @@ +defmodule Pleroma.Web.Frontend.HeadlessControllerTest do + use Pleroma.Web.ConnCase + + setup do: clear_config([:frontends, :primary], %{"name" => "none", "ref" => "none"}) + + test "Returns 404", %{conn: conn} do + conn = get(conn, "/") + assert text_response(conn, 404) == "" + end +end diff --git a/test/web/fallback_test.exs b/test/web/controllers/frontend/pleroma_controller_test.exs index a65865860..515b7b3b2 100644 --- a/test/web/fallback_test.exs +++ b/test/web/controllers/frontend/pleroma_controller_test.exs @@ -1,14 +1,14 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.FallbackTest do +defmodule Pleroma.Web.Frontend.PleromaControllerTest do use Pleroma.Web.ConnCase import Pleroma.Factory + test "GET /pleroma/admin -> /pleroma/admin/", %{conn: conn} do + assert redirected_to(get(conn, "/pleroma/admin")) =~ "/pleroma/admin/" + end + describe "neither preloaded data nor metadata attached to" do test "GET /registration/:token", %{conn: conn} do - response = get(conn, "/registration/foo") + response = get(conn, frontend_path(conn, :registration_page, "foo")) assert html_response(response, 200) =~ "<!--server-generated-meta-->" end @@ -23,8 +23,8 @@ defmodule Pleroma.Web.FallbackTest do describe "preloaded data and metadata attached to" do test "GET /:maybe_nickname_or_id", %{conn: conn} do user = insert(:user) - user_missing = get(conn, "/foo") - user_present = get(conn, "/#{user.nickname}") + user_missing = get(conn, frontend_path(conn, :index_with_meta, "foo")) + user_present = get(conn, frontend_path(conn, :index_with_meta, user.nickname)) assert(html_response(user_missing, 200) =~ "<!--server-generated-meta-->") refute html_response(user_present, 200) =~ "<!--server-generated-meta-->" @@ -64,10 +64,6 @@ defmodule Pleroma.Web.FallbackTest do |> json_response(404) == %{"error" => "Not implemented"} end - test "GET /pleroma/admin -> /pleroma/admin/", %{conn: conn} do - assert redirected_to(get(conn, "/pleroma/admin")) =~ "/pleroma/admin/" - end - test "OPTIONS /*path", %{conn: conn} do assert conn |> options("/foo") diff --git a/test/web/feed/user_controller_test.exs b/test/web/feed/user_controller_test.exs index 0d2a61967..fb7f66551 100644 --- a/test/web/feed/user_controller_test.exs +++ b/test/web/feed/user_controller_test.exs @@ -205,11 +205,13 @@ defmodule Pleroma.Web.Feed.UserControllerTest do |> get("/users/#{user.nickname}") |> response(200) - assert response == - Fallback.RedirectController.redirector_with_meta( - conn, - %{user: user} - ).resp_body + expected = + conn + |> Map.put(:params, %{user: user}) + |> Pleroma.Web.FrontendController.call(:index_with_meta) + |> Map.get(:resp_body) + + assert response == expected end test "with html format, it returns error when user is not found", %{conn: conn} do |