Add tests for emoji pack sharing

This commit is contained in:
Ekaterina Vaartis 2019-08-12 10:35:34 +03:00
parent 7fb7dd9e0e
commit 7e4c8b56ea
5 changed files with 126 additions and 1 deletions

View File

@ -30,7 +30,8 @@ config :pleroma, :instance,
notify_email: "noreply@example.com", notify_email: "noreply@example.com",
skip_thread_containment: false, skip_thread_containment: false,
federating: false, federating: false,
external_user_synchronization: false external_user_synchronization: false,
static_dir: "test/instance_static/"
config :pleroma, :activitypub, sign_object_fetches: false config :pleroma, :activitypub, sign_object_fetches: false

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

View File

@ -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

View File

@ -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

View File

@ -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