Upload: Fix uploading with a : in the filename
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Tue, 15 Jan 2019 06:57:48 +0000 (07:57 +0100)
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Tue, 15 Jan 2019 06:57:48 +0000 (07:57 +0100)
lib/pleroma/upload.ex
test/upload_test.exs

index 1d8b073afc5db34f88865becefc38b6611fa7487..b19920dff72cb6bd667c450fcd5f2723c640897a 100644 (file)
@@ -219,6 +219,7 @@ defmodule Pleroma.Upload do
       path
       |> URI.encode()
       |> String.replace("?", "%3F")
+      |> String.replace(":", "%3A")
 
     [base_url, "media", path]
     |> Path.join()
index ffef74270a1cf71f0784d302f816589ebc0be3c4..b2d9eca381ae0d38851c9ec151138040c31d5d75 100644 (file)
@@ -153,19 +153,19 @@ defmodule Pleroma.UploadTest 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