diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index 1d8b073af..b19920dff 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -219,6 +219,7 @@ defp url_from_spec(base_url, {:file, path}) do path |> URI.encode() |> String.replace("?", "%3F") + |> String.replace(":", "%3A") [base_url, "media", path] |> Path.join() diff --git a/test/upload_test.exs b/test/upload_test.exs index ffef74270..b2d9eca38 100644 --- a/test/upload_test.exs +++ b/test/upload_test.exs @@ -153,19 +153,19 @@ test "escapes invalid characters in url" do assert Path.basename(attachment_url["href"]) == "an%E2%80%A6%20image.jpg" end - test "replaces ? (question-mark) to %3f" do + test "replaces : (colon) and ? (question-mark) to %3A and %3F (respectively)" do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") file = %Plug.Upload{ content_type: "image/jpg", path: Path.absname("test/fixtures/image_tmp.jpg"), - filename: "an?image.jpg" + filename: "is:an?image.jpg" } {:ok, data} = Upload.store(file) [attachment_url | _] = data["url"] - assert Path.basename(attachment_url["href"]) == "an%3Fimage.jpg" + assert Path.basename(attachment_url["href"]) == "is%3Aan%3Fimage.jpg" end end end