summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEkaterina Vaartis <vaartis@cock.li>2019-08-12 10:35:34 +0300
committerEkaterina Vaartis <vaartis@cock.li>2019-09-19 00:16:33 +0300
commit7e4c8b56eab0e92b98efbf27e373d68758de540f (patch)
tree10e5c08c7c9693c0c7c56b3f4c382a2f6ae51331 /test
parent7fb7dd9e0e0135af467477a66692990bdaecdbe9 (diff)
downloadpleroma-7e4c8b56eab0e92b98efbf27e373d68758de540f.tar.gz
pleroma-7e4c8b56eab0e92b98efbf27e373d68758de540f.zip
Add tests for emoji pack sharing
Diffstat (limited to 'test')
-rw-r--r--test/instance_static/emoji/test_pack/blank.pngbin0 -> 95 bytes
-rw-r--r--test/instance_static/emoji/test_pack/pack.yml13
-rw-r--r--test/instance_static/emoji/test_pack_nonshared/pack.yml13
-rw-r--r--test/web/emoji_api_controller_test.exs98
4 files changed, 124 insertions, 0 deletions
diff --git a/test/instance_static/emoji/test_pack/blank.png b/test/instance_static/emoji/test_pack/blank.png
new file mode 100644
index 000000000..8f50fa023
--- /dev/null
+++ b/test/instance_static/emoji/test_pack/blank.png
Binary files differ
diff --git a/test/instance_static/emoji/test_pack/pack.yml b/test/instance_static/emoji/test_pack/pack.yml
new file mode 100644
index 000000000..851b06d17
--- /dev/null
+++ b/test/instance_static/emoji/test_pack/pack.yml
@@ -0,0 +1,13 @@
+pack:
+ license: Test license
+ homepage: https://pleroma.social
+ description: Test description
+
+ fallblack-src: https://example.com
+ # SHA256 of the fallback-src
+ fallback-src-sha256: 65CDCCBCA9388A68023519F997367783BE69ED42864398CAC568E56F65CE0E75
+
+ share-files: true
+
+files:
+ blank: blank.png
diff --git a/test/instance_static/emoji/test_pack_nonshared/pack.yml b/test/instance_static/emoji/test_pack_nonshared/pack.yml
new file mode 100644
index 000000000..45c340415
--- /dev/null
+++ b/test/instance_static/emoji/test_pack_nonshared/pack.yml
@@ -0,0 +1,13 @@
+pack:
+ license: Test license
+ homepage: https://pleroma.social
+ description: Test description
+
+ fallblack-src: https://example.com
+ # SHA256 of the fallback-src
+ fallback-src-sha256: 65CDCCBCA9388A68023519F997367783BE69ED42864398CAC568E56F65CE0E75
+
+ share-files: false
+
+files:
+ blank: blank.png
diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs
new file mode 100644
index 000000000..c037883ee
--- /dev/null
+++ b/test/web/emoji_api_controller_test.exs
@@ -0,0 +1,98 @@
+defmodule Pleroma.Web.EmojiAPI.EmojiAPIControllerTest do
+ use Pleroma.Web.ConnCase
+
+ import Tesla.Mock
+
+ import Pleroma.Factory
+
+ test "shared & non-shared pack information in list_packs is ok" do
+ conn = build_conn()
+ resp = conn |> get(emoji_api_path(conn, :list_packs)) |> json_response(200)
+
+ assert Map.has_key?(resp, "test_pack")
+
+ pack = resp["test_pack"]
+
+ assert Map.has_key?(pack["pack"], "download-sha256")
+ assert pack["pack"]["can-download"]
+
+ assert pack["files"] == %{"blank" => "blank.png"}
+
+ # Non-shared pack
+
+ assert Map.has_key?(resp, "test_pack_nonshared")
+
+ pack = resp["test_pack_nonshared"]
+
+ refute pack["pack"]["shared"]
+ refute pack["pack"]["can-download"]
+ end
+
+ test "downloading a shared pack from download_shared" do
+ conn = build_conn()
+
+ resp =
+ conn
+ |> get(emoji_api_path(conn, :download_shared, "test_pack"))
+ |> response(200)
+
+ {:ok, arch} = :zip.unzip(resp, [:memory])
+
+ assert Enum.find(arch, fn {n, _} -> n == 'pack.yml' end)
+ assert Enum.find(arch, fn {n, _} -> n == 'blank.png' end)
+ end
+
+ test "downloading a shared pack from another instance via download_from" do
+ on_exit(fn ->
+ File.rm_rf!("test/instance_static/emoji/test_pack2")
+ end)
+
+ mock(fn
+ %{
+ method: :get,
+ url: "https://example.com/api/pleroma/emoji/packs/list"
+ } ->
+ conn = build_conn()
+
+ conn
+ |> get(emoji_api_path(conn, :list_packs))
+ |> json_response(200)
+ |> json()
+
+ %{
+ method: :get,
+ url: "https://example.com/api/pleroma/emoji/packs/download_shared/test_pack"
+ } ->
+ conn = build_conn()
+
+ conn
+ |> get(emoji_api_path(conn, :download_shared, "test_pack"))
+ |> response(200)
+ |> text()
+ end)
+
+ admin = insert(:user, info: %{is_admin: true})
+
+ conn = build_conn()
+
+ assert conn
+ |> put_req_header("content-type", "application/json")
+ |> assign(:user, admin)
+ |> post(
+ emoji_api_path(
+ conn,
+ :download_from
+ ),
+ %{
+ instance_address: "https://example.com",
+ pack_name: "test_pack",
+ as: "test_pack2"
+ }
+ |> Jason.encode!()
+ )
+ |> text_response(200) == "ok"
+
+ assert File.exists?("test/instance_static/emoji/test_pack2/pack.yml")
+ assert File.exists?("test/instance_static/emoji/test_pack2/blank.png")
+ end
+end