Add tests for emoji pack sharing
This commit is contained in:
parent
7fb7dd9e0e
commit
7e4c8b56ea
5 changed files with 126 additions and 1 deletions
|
@ -30,7 +30,8 @@ config :pleroma, :instance,
|
|||
notify_email: "noreply@example.com",
|
||||
skip_thread_containment: false,
|
||||
federating: false,
|
||||
external_user_synchronization: false
|
||||
external_user_synchronization: false,
|
||||
static_dir: "test/instance_static/"
|
||||
|
||||
config :pleroma, :activitypub, sign_object_fetches: false
|
||||
|
||||
|
|
BIN
test/instance_static/emoji/test_pack/blank.png
Normal file
BIN
test/instance_static/emoji/test_pack/blank.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 95 B |
13
test/instance_static/emoji/test_pack/pack.yml
Normal file
13
test/instance_static/emoji/test_pack/pack.yml
Normal 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
|
13
test/instance_static/emoji/test_pack_nonshared/pack.yml
Normal file
13
test/instance_static/emoji/test_pack_nonshared/pack.yml
Normal 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
|
98
test/web/emoji_api_controller_test.exs
Normal file
98
test/web/emoji_api_controller_test.exs
Normal 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
|
Loading…
Reference in a new issue