diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/web/pleroma_api/controllers/emoji_api_controller_test.exs | 254 | 
1 files changed, 96 insertions, 158 deletions
diff --git a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs index 6a0d7dd11..d343256fe 100644 --- a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs @@ -41,7 +41,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      assert non_shared["pack"]["can-download"] == false    end -  describe "POST /api/pleroma/emoji/packs/list_from" do +  describe "GET /api/pleroma/emoji/packs/remote" do      test "shareable instance", %{admin_conn: admin_conn, conn: conn} do        resp =          conn @@ -60,8 +60,8 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        end)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/list_from", %{ -               instance_address: "https://example.com" +             |> get("/api/pleroma/emoji/packs/remote", %{ +               url: "https://example.com"               })               |> json_response(200) == resp      end @@ -76,20 +76,18 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        end)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/list_from", %{ -               instance_address: "https://example.com" -             }) +             |> get("/api/pleroma/emoji/packs/remote", %{url: "https://example.com"})               |> json_response(500) == %{                 "error" => "The requested instance does not support sharing emoji packs"               }      end    end -  describe "GET /api/pleroma/emoji/packs/:name/download_shared" do +  describe "GET /api/pleroma/emoji/packs/:name/archive" do      test "download shared pack", %{conn: conn} do        resp =          conn -        |> get("/api/pleroma/emoji/packs/test_pack/download_shared") +        |> get("/api/pleroma/emoji/packs/test_pack/archive")          |> response(200)        {:ok, arch} = :zip.unzip(resp, [:memory]) @@ -100,7 +98,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "non existing pack", %{conn: conn} do        assert conn -             |> get("/api/pleroma/emoji/packs/test_pack_for_import/download_shared") +             |> get("/api/pleroma/emoji/packs/test_pack_for_import/archive")               |> json_response(:not_found) == %{                 "error" => "Pack test_pack_for_import does not exist"               } @@ -108,7 +106,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "non downloadable pack", %{conn: conn} do        assert conn -             |> get("/api/pleroma/emoji/packs/test_pack_nonshared/download_shared") +             |> get("/api/pleroma/emoji/packs/test_pack_nonshared/archive")               |> json_response(:forbidden) == %{                 "error" =>                   "Pack test_pack_nonshared cannot be downloaded from this instance, either pack sharing was disabled for this pack or some files are missing" @@ -116,7 +114,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      end    end -  describe "POST /api/pleroma/emoji/packs/download_from" do +  describe "POST /api/pleroma/emoji/packs/download" do      test "shared pack from remote and non shared from fallback-src", %{        admin_conn: admin_conn,        conn: conn @@ -139,10 +137,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do          %{            method: :get, -          url: "https://example.com/api/pleroma/emoji/packs/test_pack/download_shared" +          url: "https://example.com/api/pleroma/emoji/packs/test_pack/archive"          } ->            conn -          |> get("/api/pleroma/emoji/packs/test_pack/download_shared") +          |> get("/api/pleroma/emoji/packs/test_pack/archive")            |> response(200)            |> text() @@ -163,9 +161,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        end)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/download_from", %{ -               instance_address: "https://example.com", -               pack_name: "test_pack", +             |> post("/api/pleroma/emoji/packs/download", %{ +               url: "https://example.com", +               name: "test_pack",                 as: "test_pack2"               })               |> json_response(200) == "ok" @@ -181,10 +179,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        assert admin_conn               |> post( -               "/api/pleroma/emoji/packs/download_from", +               "/api/pleroma/emoji/packs/download",                 %{ -                 instance_address: "https://example.com", -                 pack_name: "test_pack_nonshared", +                 url: "https://example.com", +                 name: "test_pack_nonshared",                   as: "test_pack_nonshared2"                 }               ) @@ -211,10 +209,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        assert admin_conn               |> post( -               "/api/pleroma/emoji/packs/download_from", +               "/api/pleroma/emoji/packs/download",                 %{ -                 instance_address: "https://old-instance", -                 pack_name: "test_pack", +                 url: "https://old-instance", +                 name: "test_pack",                   as: "test_pack2"                 }               ) @@ -242,7 +240,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do          %{            method: :get, -          url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha/download_shared" +          url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha/archive"          } ->            %Tesla.Env{              status: 200, @@ -251,9 +249,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        end)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/download_from", %{ -               instance_address: "https://example.com", -               pack_name: "pack_bad_sha", +             |> post("/api/pleroma/emoji/packs/download", %{ +               url: "https://example.com", +               name: "pack_bad_sha",                 as: "pack_bad_sha2"               })               |> json_response(:internal_server_error) == %{ @@ -275,23 +273,14 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do          } ->            %Tesla.Env{              status: 200, -            body: %{"test_pack" => Pleroma.Emoji.Pack.load_pack("test_pack")} |> Jason.encode!() -          } - -        %{ -          method: :get, -          url: "https://example.com/api/pleroma/emoji/packs/test_pack/download_shared" -        } -> -          %Tesla.Env{ -            status: 200, -            body: File.read!("test/instance_static/emoji/test_pack/pack.json") +            body: Pleroma.Emoji.Pack.load_pack("test_pack") |> Jason.encode!()            }        end)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/download_from", %{ -               instance_address: "https://example.com", -               pack_name: "test_pack", +             |> post("/api/pleroma/emoji/packs/download", %{ +               url: "https://example.com", +               name: "test_pack",                 as: "test_pack2"               })               |> json_response(:internal_server_error) == %{ @@ -301,7 +290,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      end    end -  describe "updating pack metadata" do +  describe "PATCH /api/pleroma/emoji/packs/:name" do      setup do        pack_file = "#{@emoji_path}/test_pack/pack.json"        original_content = File.read!(pack_file) @@ -322,12 +311,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "for a pack without a fallback source", ctx do        assert ctx[:admin_conn] -             |> post( -               "/api/pleroma/emoji/packs/test_pack/update_metadata", -               %{ -                 "new_data" => ctx[:new_data] -               } -             ) +             |> patch("/api/pleroma/emoji/packs/test_pack", %{"metadata" => ctx[:new_data]})               |> json_response(200) == ctx[:new_data]        assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == ctx[:new_data] @@ -352,12 +336,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do          )        assert ctx[:admin_conn] -             |> post( -               "/api/pleroma/emoji/packs/test_pack/update_metadata", -               %{ -                 "new_data" => new_data -               } -             ) +             |> patch("/api/pleroma/emoji/packs/test_pack", %{metadata: new_data})               |> json_response(200) == new_data_with_sha        assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == new_data_with_sha @@ -376,19 +355,14 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        new_data = Map.put(ctx[:new_data], "fallback-src", "https://nonshared-pack")        assert ctx[:admin_conn] -             |> post( -               "/api/pleroma/emoji/packs/test_pack/update_metadata", -               %{ -                 "new_data" => new_data -               } -             ) +             |> patch("/api/pleroma/emoji/packs/test_pack", %{metadata: new_data})               |> json_response(:bad_request) == %{                 "error" => "The fallback archive does not have all files specified in pack.json"               }      end    end -  describe "POST /api/pleroma/emoji/packs/:pack_name/update_file" do +  describe "POST/PATCH/DELETE /api/pleroma/emoji/packs/:name/files" do      setup do        pack_file = "#{@emoji_path}/test_pack/pack.json"        original_content = File.read!(pack_file) @@ -402,11 +376,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "create shortcode exists", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "add", -               "shortcode" => "blank", -               "filename" => "dir/blank.png", -               "file" => %Plug.Upload{ +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank", +               filename: "dir/blank.png", +               file: %Plug.Upload{                   filename: "blank.png",                   path: "#{@emoji_path}/test_pack/blank.png"                 } @@ -420,11 +393,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir/") end)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "add", -               "shortcode" => "blank2", -               "filename" => "dir/blank.png", -               "file" => %Plug.Upload{ +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank2", +               filename: "dir/blank.png", +               file: %Plug.Upload{                   filename: "blank.png",                   path: "#{@emoji_path}/test_pack/blank.png"                 } @@ -434,11 +406,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png")        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "update", -               "shortcode" => "blank", -               "new_shortcode" => "blank2", -               "new_filename" => "dir_2/blank_3.png" +             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank", +               new_shortcode: "blank2", +               new_filename: "dir_2/blank_3.png"               })               |> json_response(:conflict) == %{                 "error" => @@ -450,11 +421,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir_2/") end)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "add", -               "shortcode" => "blank2", -               "filename" => "dir/blank.png", -               "file" => %Plug.Upload{ +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank2", +               filename: "dir/blank.png", +               file: %Plug.Upload{                   filename: "blank.png",                   path: "#{@emoji_path}/test_pack/blank.png"                 } @@ -464,12 +434,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png")        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "update", -               "shortcode" => "blank2", -               "new_shortcode" => "blank3", -               "new_filename" => "dir_2/blank_3.png", -               "force" => true +             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank2", +               new_shortcode: "blank3", +               new_filename: "dir_2/blank_3.png", +               force: true               })               |> json_response(200) == %{                 "blank" => "blank.png", @@ -481,11 +450,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "with empty filename", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "add", -               "shortcode" => "blank2", -               "filename" => "", -               "file" => %Plug.Upload{ +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank2", +               filename: "", +               file: %Plug.Upload{                   filename: "blank.png",                   path: "#{@emoji_path}/test_pack/blank.png"                 } @@ -497,11 +465,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "add file with not loaded pack", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ -               "action" => "add", -               "shortcode" => "blank2", -               "filename" => "dir/blank.png", -               "file" => %Plug.Upload{ +             |> post("/api/pleroma/emoji/packs/not_loaded/files", %{ +               shortcode: "blank2", +               filename: "dir/blank.png", +               file: %Plug.Upload{                   filename: "blank.png",                   path: "#{@emoji_path}/test_pack/blank.png"                 } @@ -513,19 +480,13 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "remove file with not loaded pack", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ -               "action" => "remove", -               "shortcode" => "blank3" -             }) +             |> delete("/api/pleroma/emoji/packs/not_loaded/files", %{shortcode: "blank3"})               |> json_response(:bad_request) == %{"error" => "pack \"not_loaded\" is not found"}      end      test "remove file with empty shortcode", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ -               "action" => "remove", -               "shortcode" => "" -             }) +             |> delete("/api/pleroma/emoji/packs/not_loaded/files", %{shortcode: ""})               |> json_response(:bad_request) == %{                 "error" => "pack name or shortcode cannot be empty"               } @@ -533,22 +494,20 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "update file with not loaded pack", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ -               "action" => "update", -               "shortcode" => "blank4", -               "new_shortcode" => "blank3", -               "new_filename" => "dir_2/blank_3.png" +             |> patch("/api/pleroma/emoji/packs/not_loaded/files", %{ +               shortcode: "blank4", +               new_shortcode: "blank3", +               new_filename: "dir_2/blank_3.png"               })               |> json_response(:bad_request) == %{"error" => "pack \"not_loaded\" is not found"}      end      test "new with shortcode as file with update", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "add", -               "shortcode" => "blank4", -               "filename" => "dir/blank.png", -               "file" => %Plug.Upload{ +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank4", +               filename: "dir/blank.png", +               file: %Plug.Upload{                   filename: "blank.png",                   path: "#{@emoji_path}/test_pack/blank.png"                 } @@ -558,11 +517,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png")        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "update", -               "shortcode" => "blank4", -               "new_shortcode" => "blank3", -               "new_filename" => "dir_2/blank_3.png" +             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank4", +               new_shortcode: "blank3", +               new_filename: "dir_2/blank_3.png"               })               |> json_response(200) == %{"blank3" => "dir_2/blank_3.png", "blank" => "blank.png"} @@ -570,10 +528,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png")        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "remove", -               "shortcode" => "blank3" -             }) +             |> delete("/api/pleroma/emoji/packs/test_pack/files", %{shortcode: "blank3"})               |> json_response(200) == %{"blank" => "blank.png"}        refute File.exists?("#{@emoji_path}/test_pack/dir_2/") @@ -591,10 +546,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        end)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "add", -               "shortcode" => "blank_url", -               "file" => "https://test-blank/blank_url.png" +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank_url", +               file: "https://test-blank/blank_url.png"               })               |> json_response(200) == %{                 "blank_url" => "blank_url.png", @@ -610,9 +564,8 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/shortcode.png") end)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "add", -               "file" => %Plug.Upload{ +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               file: %Plug.Upload{                   filename: "shortcode.png",                   path: "#{Pleroma.Config.get([:instance, :static_dir])}/add/shortcode.png"                 } @@ -622,51 +575,36 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "remove", -               "shortcode" => "blank2" -             }) +             |> delete("/api/pleroma/emoji/packs/test_pack/files", %{shortcode: "blank2"})               |> json_response(:bad_request) == %{"error" => "Emoji \"blank2\" does not exist"}      end      test "update non existing emoji", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "update", -               "shortcode" => "blank2", -               "new_shortcode" => "blank3", -               "new_filename" => "dir_2/blank_3.png" +             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank2", +               new_shortcode: "blank3", +               new_filename: "dir_2/blank_3.png"               })               |> json_response(:bad_request) == %{"error" => "Emoji \"blank2\" does not exist"}      end      test "update with empty shortcode", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "update", -               "shortcode" => "blank", -               "new_filename" => "dir_2/blank_3.png" +             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank", +               new_filename: "dir_2/blank_3.png"               })               |> json_response(:bad_request) == %{                 "error" => "new_shortcode or new_filename cannot be empty"               }      end - -    test "undefined action", %{admin_conn: admin_conn} do -      assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ -               "action" => "undefined" -             }) -             |> json_response(:bad_request) == %{ -               "error" => "Unknown action: undefined" -             } -    end    end -  describe "PUT /api/pleroma/emoji/packs/:name" do +  describe "POST/DELETE /api/pleroma/emoji/packs/:name" do      test "creating and deleting a pack", %{admin_conn: admin_conn} do        assert admin_conn -             |> put("/api/pleroma/emoji/packs/test_created") +             |> post("/api/pleroma/emoji/packs/test_created")               |> json_response(200) == "ok"        assert File.exists?("#{@emoji_path}/test_created/pack.json") @@ -690,7 +628,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do        File.write!(Path.join(path, "pack.json"), pack_file)        assert admin_conn -             |> put("/api/pleroma/emoji/packs/test_created") +             |> post("/api/pleroma/emoji/packs/test_created")               |> json_response(:conflict) == %{                 "error" => "A pack named \"test_created\" already exists"               } @@ -700,7 +638,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      test "with empty name", %{admin_conn: admin_conn} do        assert admin_conn -             |> put("/api/pleroma/emoji/packs/ ") +             |> post("/api/pleroma/emoji/packs/ ")               |> json_response(:bad_request) == %{"error" => "pack name cannot be empty"}      end    end @@ -728,7 +666,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      refute Map.has_key?(resp, "test_pack_for_import")      assert admin_conn -           |> post("/api/pleroma/emoji/packs/import_from_fs") +           |> get("/api/pleroma/emoji/packs/import")             |> json_response(200) == ["test_pack_for_import"]      resp = conn |> get("/api/pleroma/emoji/packs") |> json_response(200) @@ -747,7 +685,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do      File.write!("#{@emoji_path}/test_pack_for_import/emoji.txt", emoji_txt_content)      assert admin_conn -           |> post("/api/pleroma/emoji/packs/import_from_fs") +           |> get("/api/pleroma/emoji/packs/import")             |> json_response(200) == ["test_pack_for_import"]      resp = conn |> get("/api/pleroma/emoji/packs") |> json_response(200)  | 
