Merge branch 'develop' into feature/gen-magic
[akkoma] / test / upload_test.exs
index 060a940bbaaa88e77042b903f1cbd0471cc63def..4280bfcacca7147e4b05d3ef551c448346d8ebdc 100644 (file)
@@ -11,7 +11,7 @@ defmodule Pleroma.UploadTest do
   alias Pleroma.Uploaders.Uploader
 
   @upload_file %Plug.Upload{
-    content_type: "image/jpg",
+    content_type: "image/jpeg",
     path: Path.absname("test/fixtures/image_tmp.jpg"),
     filename: "image.jpg"
   }
@@ -54,6 +54,7 @@ defmodule Pleroma.UploadTest do
                 %{
                   "name" => "image.jpg",
                   "type" => "Document",
+                  "mediaType" => "image/jpeg",
                   "url" => [
                     %{
                       "href" => "http://localhost:4001/media/post-process-file.jpg",
@@ -106,7 +107,8 @@ defmodule Pleroma.UploadTest do
   describe "Storing a file with the Local uploader" do
     setup [:ensure_local_uploader]
 
-    test "returns a media url" do
+    test "does not allow descriptions longer than the post limit" do
+      clear_config([:instance, :description_limit], 2)
       File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
 
       file = %Plug.Upload{
@@ -115,6 +117,18 @@ defmodule Pleroma.UploadTest do
         filename: "image.jpg"
       }
 
+      {:error, :description_too_long} = Upload.store(file, description: "123")
+    end
+
+    test "returns a media url" 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: "image.jpg"
+      }
+
       {:ok, data} = Upload.store(file)
 
       assert %{"url" => [%{"href" => url}]} = data
@@ -126,7 +140,7 @@ defmodule Pleroma.UploadTest do
       File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
 
       file = %Plug.Upload{
-        content_type: "image/jpg",
+        content_type: "image/jpeg",
         path: Path.absname("test/fixtures/image_tmp.jpg"),
         filename: "an [image.jpg"
       }
@@ -142,7 +156,7 @@ defmodule Pleroma.UploadTest do
       File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
 
       file = %Plug.Upload{
-        content_type: "image/jpg",
+        content_type: "image/jpeg",
         path: Path.absname("test/fixtures/image_tmp.jpg"),
         filename: "an [image.jpg"
       }
@@ -151,63 +165,31 @@ defmodule Pleroma.UploadTest do
       assert data["name"] == "an [image.jpg"
     end
 
-    test "fixes incorrect content type" do
-      File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
-
-      file = %Plug.Upload{
-        content_type: "application/octet-stream",
-        path: Path.absname("test/fixtures/image_tmp.jpg"),
-        filename: "an [image.jpg"
+    test "fixes incorrect content type when base64 is given" do
+      params = %{
+        img: "data:image/png;base64,#{Base.encode64(File.read!("test/fixtures/image.jpg"))}"
       }
 
-      {:ok, data} = Upload.store(file, filters: [Pleroma.Upload.Filter.Dedupe])
+      {:ok, data} = Upload.store(params)
       assert hd(data["url"])["mediaType"] == "image/jpeg"
     end
 
-    test "adds missing extension" 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"
-      }
-
-      {:ok, data} = Upload.store(file)
-      assert data["name"] == "an [image.jpg"
-    end
-
-    test "fixes incorrect file extension" do
+    test "adds extension when base64 is given" 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.blah"
+      params = %{
+        img: "data:image/png;base64,#{Base.encode64(File.read!("test/fixtures/image.jpg"))}"
       }
 
-      {:ok, data} = Upload.store(file)
-      assert data["name"] == "an [image.jpg"
-    end
-
-    test "don't modify filename of an unknown type" do
-      File.cp("test/fixtures/test.txt", "test/fixtures/test_tmp.txt")
-
-      file = %Plug.Upload{
-        content_type: "text/plain",
-        path: Path.absname("test/fixtures/test_tmp.txt"),
-        filename: "test.txt"
-      }
-
-      {:ok, data} = Upload.store(file)
-      assert data["name"] == "test.txt"
+      {:ok, data} = Upload.store(params)
+      assert String.ends_with?(data["name"], ".jpg")
     end
 
     test "copies the file to the configured folder with anonymizing filename" do
       File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
 
       file = %Plug.Upload{
-        content_type: "image/jpg",
+        content_type: "image/jpeg",
         path: Path.absname("test/fixtures/image_tmp.jpg"),
         filename: "an [image.jpg"
       }
@@ -221,7 +203,7 @@ defmodule Pleroma.UploadTest do
       File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
 
       file = %Plug.Upload{
-        content_type: "image/jpg",
+        content_type: "image/jpeg",
         path: Path.absname("test/fixtures/image_tmp.jpg"),
         filename: "an… image.jpg"
       }
@@ -236,7 +218,7 @@ defmodule Pleroma.UploadTest do
       File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
 
       file = %Plug.Upload{
-        content_type: "image/jpg",
+        content_type: "image/jpeg",
         path: Path.absname("test/fixtures/image_tmp.jpg"),
         filename: ":?#[]@!$&\\'()*+,;=.jpg"
       }
@@ -258,7 +240,7 @@ defmodule Pleroma.UploadTest do
       File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
 
       file = %Plug.Upload{
-        content_type: "image/jpg",
+        content_type: "image/jpeg",
         path: Path.absname("test/fixtures/image_tmp.jpg"),
         filename: "image.jpg"
       }