added test
authorMaksim Pechnikov <parallel588@gmail.com>
Mon, 16 Nov 2020 19:23:28 +0000 (22:23 +0300)
committerMaksim Pechnikov <parallel588@gmail.com>
Mon, 16 Nov 2020 19:23:28 +0000 (22:23 +0300)
lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex
test/pleroma/web/pleroma_api/controllers/emoji_file_controller_test.exs

index a56641426961461f0dc4debb2b704c829d169131..747f17e7f30a97de8b35834178b518a3500c2833 100644 (file)
@@ -27,7 +27,8 @@ defmodule Pleroma.Web.ApiSpec.PleromaEmojiFileOperation do
         422 => Operation.response("Unprocessable Entity", "application/json", ApiError),
         404 => Operation.response("Not Found", "application/json", ApiError),
         400 => Operation.response("Bad Request", "application/json", ApiError),
-        409 => Operation.response("Conflict", "application/json", ApiError)
+        409 => Operation.response("Conflict", "application/json", ApiError),
+        500 => Operation.response("Error", "application/json", ApiError)
       }
     }
   end
index 82de86ee31e4031f3e094a2b9a8f04e57f09aa21..6fbdaec7a0bd9aafe048e55c24902e1ddb0159ac 100644 (file)
@@ -5,6 +5,7 @@
 defmodule Pleroma.Web.PleromaAPI.EmojiFileControllerTest do
   use Pleroma.Web.ConnCase
 
+  import Mock
   import Tesla.Mock
   import Pleroma.Factory
 
@@ -200,6 +201,31 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileControllerTest do
              }
     end
 
+    test "returns an error on add file when file system is not writable", %{
+      admin_conn: admin_conn
+    } do
+      pack_file = Path.join([@emoji_path, "not_loaded", "pack.json"])
+
+      with_mocks([
+        {File, [:passthrough], [stat: fn ^pack_file -> {:error, :eacces} end]}
+      ]) do
+        assert admin_conn
+               |> put_req_header("content-type", "multipart/form-data")
+               |> post("/api/pleroma/emoji/packs/files?name=not_loaded", %{
+                 shortcode: "blank3",
+                 filename: "dir/blank.png",
+                 file: %Plug.Upload{
+                   filename: "blank.png",
+                   path: "#{@emoji_path}/test_pack/blank.png"
+                 }
+               })
+               |> json_response_and_validate_schema(500) == %{
+                 "error" =>
+                   "Unexpected error occurred while adding file to pack. (POSIX error: Permission denied)"
+               }
+      end
+    end
+
     test "remove file with not loaded pack", %{admin_conn: admin_conn} do
       assert admin_conn
              |> delete("/api/pleroma/emoji/packs/files?name=not_loaded&shortcode=blank3")