aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/emails/user_email_test.exs2
-rw-r--r--test/frontend_test.exs75
-rw-r--r--test/plugs/frontend_plug_test.exs21
-rw-r--r--test/plugs/frontend_static_test.exs2
-rw-r--r--test/plugs/instance_static_test.exs13
-rw-r--r--test/web/controllers/frontend/headless_controller_test.exs10
-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.exs12
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