Mix Task Frontend: Add tests.
authorlain <lain@soykaf.club>
Fri, 7 Aug 2020 13:10:34 +0000 (15:10 +0200)
committerlain <lain@soykaf.club>
Fri, 7 Aug 2020 13:10:34 +0000 (15:10 +0200)
test/fixtures/tesla_mock/frontend.zip [new file with mode: 0644]
test/fixtures/test.txt [deleted file]
test/tasks/frontend_test.exs [new file with mode: 0644]

diff --git a/test/fixtures/tesla_mock/frontend.zip b/test/fixtures/tesla_mock/frontend.zip
new file mode 100644 (file)
index 0000000..114d576
Binary files /dev/null and b/test/fixtures/tesla_mock/frontend.zip differ
diff --git a/test/fixtures/test.txt b/test/fixtures/test.txt
deleted file mode 100644 (file)
index e9ea42a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-this is a text file
diff --git a/test/tasks/frontend_test.exs b/test/tasks/frontend_test.exs
new file mode 100644 (file)
index 0000000..5cd4594
--- /dev/null
@@ -0,0 +1,69 @@
+# 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
+
+  @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}",
+        "build_dir" => ""
+      }
+    })
+
+    Tesla.Mock.mock(fn %{url: "http://gensokyo.2hu/builds/fantasy"} ->
+      %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/frontend.zip")}
+    end)
+
+    Frontend.run(["install", "pleroma"])
+    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" => ""
+      }
+    })
+
+    Frontend.run(["install", "pleroma", "--file", "test/fixtures/tesla_mock/frontend.zip"])
+    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)
+
+    Frontend.run([
+      "install",
+      "unknown",
+      "--ref",
+      "baka",
+      "--build-url",
+      "http://gensokyo.2hu/madeup.zip",
+      "--build-dir",
+      ""
+    ])
+
+    assert File.exists?(Path.join([@dir, "frontends", "unknown", "baka", "test.txt"]))
+  end
+end