with :ok <- validate_shareable_packs_available(uri),
{:ok, remote_pack} <-
- uri |> URI.merge("/api/v1/pleroma/emoji/pack?name=#{name}") |> http_get(),
+ uri |> URI.merge("/api/v1/pleroma/emoji/pack?name=#{URI.encode(name)}") |> http_get(),
{:ok, %{sha: sha, url: url} = pack_info} <- fetch_pack_info(remote_pack, uri, name),
{:ok, archive} <- download_archive(url, sha),
pack <- copy_as(remote_pack, as || name),
{:ok,
%{
sha: sha,
- url: URI.merge(uri, "/api/v1/pleroma/emoji/packs/archive?name=#{name}") |> to_string()
+ url:
+ URI.merge(uri, "/api/v1/pleroma/emoji/packs/archive?name=#{URI.encode(name)}")
+ |> to_string()
}}
%{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) ->
|> get("/api/v1/pleroma/emoji/packs")
|> json_response_and_validate_schema(200)
- assert resp["count"] == 4
+ assert resp["count"] == 5
assert resp["packs"]
|> Map.keys()
- |> length() == 4
+ |> length() == 5
shared = resp["packs"]["test_pack"]
assert shared["files"] == %{"blank" => "blank.png", "blank2" => "blank2.png"}
|> get("/api/v1/pleroma/emoji/packs?page_size=1")
|> json_response_and_validate_schema(200)
- assert resp["count"] == 4
+ assert resp["count"] == 5
packs = Map.keys(resp["packs"])
|> get("/api/v1/pleroma/emoji/packs?page_size=1&page=2")
|> json_response_and_validate_schema(200)
- assert resp["count"] == 4
+ assert resp["count"] == 5
packs = Map.keys(resp["packs"])
assert length(packs) == 1
[pack2] = packs
|> get("/api/v1/pleroma/emoji/packs?page_size=1&page=3")
|> json_response_and_validate_schema(200)
- assert resp["count"] == 4
+ assert resp["count"] == 5
packs = Map.keys(resp["packs"])
assert length(packs) == 1
[pack3] = packs
|> get("/api/v1/pleroma/emoji/packs?page_size=1&page=4")
|> json_response_and_validate_schema(200)
- assert resp["count"] == 4
+ assert resp["count"] == 5
packs = Map.keys(resp["packs"])
assert length(packs) == 1
[pack4] = packs
url: "https://nonshared-pack"
} ->
text(File.read!("#{@emoji_path}/test_pack_nonshared/nonshared.zip"))
+
+ %{
+ method: :get,
+ url: "https://example.com/api/v1/pleroma/emoji/pack?name=test%20with%20spaces"
+ } ->
+ conn
+ |> get("/api/v1/pleroma/emoji/pack?name=test%20with%20spaces")
+ |> json_response_and_validate_schema(200)
+ |> json()
+
+ %{
+ method: :get,
+ url: "https://example.com/api/v1/pleroma/emoji/packs/archive?name=test%20with%20spaces"
+ } ->
+ conn
+ |> get("/api/v1/pleroma/emoji/packs/archive?name=test%20with%20spaces")
+ |> response(200)
+ |> text()
end)
assert admin_conn
|> json_response_and_validate_schema(200) == "ok"
refute File.exists?("#{@emoji_path}/test_pack_nonshared2")
+
+ assert admin_conn
+ |> put_req_header("content-type", "multipart/form-data")
+ |> post("/api/v1/pleroma/emoji/packs/download", %{
+ url: "https://example.com",
+ name: "test with spaces",
+ as: "test with spaces"
+ })
+ |> json_response_and_validate_schema(200) == "ok"
+
+ assert File.exists?("#{@emoji_path}/test with spaces/pack.json")
+ assert File.exists?("#{@emoji_path}/test with spaces/blank.png")
end
test "nonshareable instance", %{admin_conn: admin_conn} do