diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index 8f75a1d57..de8949848 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -241,7 +241,8 @@ defmodule Pleroma.Upload do path = HTTP.encode_url(path, encode_opts) <> if Pleroma.Config.get([__MODULE__, :link_name], false) do - "?name=#{URI.encode_query(name)}" + enum = %{name: name} + "?#{URI.encode_query(enum)}" else "" end diff --git a/test/pleroma/upload_test.exs b/test/pleroma/upload_test.exs index 91c7f49ea..9a51c612b 100644 --- a/test/pleroma/upload_test.exs +++ b/test/pleroma/upload_test.exs @@ -282,4 +282,23 @@ defmodule Pleroma.UploadTest do refute String.starts_with?(url, base_url <> "/media/") end end + + describe "Setting a link_name for uploaded media" do + setup do: clear_config([Pleroma.Upload, :link_name], true) + + test "encodes name parameter in query" do + File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") + + file = %Plug.Upload{ + content_type: "image/jpeg", + path: Path.absname("test/fixtures/image_tmp.jpg"), + filename: "test file.jpg" + } + + {:ok, data} = Upload.store(file) + [attachment_url | _] = data["url"] + + assert Path.basename(attachment_url["href"]) == "test%20file.jpg?name=test+file.jpg" + end + end end