diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/fixtures/tesla_mock/dist/test.txt | 1 | ||||
-rw-r--r-- | test/fixtures/tesla_mock/frontend.zip | bin | 0 -> 186 bytes | |||
-rw-r--r-- | test/fixtures/tesla_mock/frontend_dist.zip | bin | 0 -> 334 bytes | |||
-rw-r--r-- | test/plugs/frontend_static_test.exs | 27 | ||||
-rw-r--r-- | test/tasks/frontend_test.exs | 78 |
5 files changed, 106 insertions, 0 deletions
diff --git a/test/fixtures/tesla_mock/dist/test.txt b/test/fixtures/tesla_mock/dist/test.txt new file mode 100644 index 000000000..e9ea42a12 --- /dev/null +++ b/test/fixtures/tesla_mock/dist/test.txt @@ -0,0 +1 @@ +this is a text file diff --git a/test/fixtures/tesla_mock/frontend.zip b/test/fixtures/tesla_mock/frontend.zip Binary files differnew file mode 100644 index 000000000..114d576a3 --- /dev/null +++ b/test/fixtures/tesla_mock/frontend.zip diff --git a/test/fixtures/tesla_mock/frontend_dist.zip b/test/fixtures/tesla_mock/frontend_dist.zip Binary files differnew file mode 100644 index 000000000..20d7952a4 --- /dev/null +++ b/test/fixtures/tesla_mock/frontend_dist.zip diff --git a/test/plugs/frontend_static_test.exs b/test/plugs/frontend_static_test.exs index d11d91d78..6f4923048 100644 --- a/test/plugs/frontend_static_test.exs +++ b/test/plugs/frontend_static_test.exs @@ -3,6 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.FrontendStaticPlugTest do + alias Pleroma.Plugs.FrontendStatic use Pleroma.Web.ConnCase @dir "test/tmp/instance_static" @@ -14,6 +15,18 @@ defmodule Pleroma.Web.FrontendStaticPlugTest do setup do: clear_config([:instance, :static_dir], @dir) + test "init will give a static plug config + the frontend type" do + opts = + [ + at: "/admin", + frontend_type: :admin + ] + |> FrontendStatic.init() + + assert opts[:at] == ["admin"] + assert opts[:frontend_type] == :admin + end + test "overrides existing static files", %{conn: conn} do name = "pelmora" ref = "uguu" @@ -27,4 +40,18 @@ defmodule Pleroma.Web.FrontendStaticPlugTest do index = get(conn, "/") assert html_response(index, 200) == "from frontend plug" end + + test "overrides existing static files for the `pleroma/admin` path", %{conn: conn} do + name = "pelmora" + ref = "uguu" + + clear_config([:frontends, :admin], %{"name" => name, "ref" => ref}) + path = "#{@dir}/frontends/#{name}/#{ref}" + + File.mkdir_p!(path) + File.write!("#{path}/index.html", "from frontend plug") + + index = get(conn, "/pleroma/admin/") + assert html_response(index, 200) == "from frontend plug" + end end diff --git a/test/tasks/frontend_test.exs b/test/tasks/frontend_test.exs new file mode 100644 index 000000000..0ca2b9a28 --- /dev/null +++ b/test/tasks/frontend_test.exs @@ -0,0 +1,78 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.FrontendTest do + use Pleroma.DataCase + alias Mix.Tasks.Pleroma.Frontend + + import ExUnit.CaptureIO, only: [capture_io: 1] + + @dir "test/frontend_static_test" + + setup do + File.mkdir_p!(@dir) + clear_config([:instance, :static_dir], @dir) + + on_exit(fn -> + File.rm_rf(@dir) + end) + end + + test "it downloads and unzips a known frontend" do + clear_config([:frontends, :available], %{ + "pleroma" => %{ + "ref" => "fantasy", + "name" => "pleroma", + "build_url" => "http://gensokyo.2hu/builds/${ref}" + } + }) + + Tesla.Mock.mock(fn %{url: "http://gensokyo.2hu/builds/fantasy"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/frontend_dist.zip")} + end) + + capture_io(fn -> + Frontend.run(["install", "pleroma"]) + end) + + assert File.exists?(Path.join([@dir, "frontends", "pleroma", "fantasy", "test.txt"])) + end + + test "it also works given a file" do + clear_config([:frontends, :available], %{ + "pleroma" => %{ + "ref" => "fantasy", + "name" => "pleroma", + "build_dir" => "" + } + }) + + capture_io(fn -> + Frontend.run(["install", "pleroma", "--file", "test/fixtures/tesla_mock/frontend.zip"]) + end) + + assert File.exists?(Path.join([@dir, "frontends", "pleroma", "fantasy", "test.txt"])) + end + + test "it downloads and unzips unknown frontends" do + Tesla.Mock.mock(fn %{url: "http://gensokyo.2hu/madeup.zip"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/frontend.zip")} + end) + + capture_io(fn -> + Frontend.run([ + "install", + "unknown", + "--ref", + "baka", + "--build-url", + "http://gensokyo.2hu/madeup.zip", + "--build-dir", + "" + ]) + end) + + assert File.exists?(Path.join([@dir, "frontends", "unknown", "baka", "test.txt"])) + end +end |