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",
|
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
|
||||||
|
|
||||||
|
|
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