diff options
Diffstat (limited to 'test/web')
7 files changed, 423 insertions, 314 deletions
| diff --git a/test/web/activity_pub/transmogrifier/question_handling_test.exs b/test/web/activity_pub/transmogrifier/question_handling_test.exs index 74ee79543..d2822ce75 100644 --- a/test/web/activity_pub/transmogrifier/question_handling_test.exs +++ b/test/web/activity_pub/transmogrifier/question_handling_test.exs @@ -157,12 +157,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.QuestionHandlingTest do             }    end -  test "returns an error if received a second time" do +  test "returns same activity if received a second time" do      data = File.read!("test/fixtures/mastodon-question-activity.json") |> Poison.decode!()      assert {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) -    assert {:error, {:validate_object, {:error, _}}} = Transmogrifier.handle_incoming(data) +    assert {:ok, ^activity} = Transmogrifier.handle_incoming(data)    end    test "accepts a Question with no content" do diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index e4d3512de..cba6b43d3 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -1977,7 +1977,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 }"        ObanHelpers.perform_all() -      assert_email_sent(Pleroma.Emails.UserEmail.account_confirmation_email(first_user)) + +      Pleroma.Emails.UserEmail.account_confirmation_email(first_user) +      # temporary hackney fix until hackney max_connections bug is fixed +      # https://git.pleroma.social/pleroma/pleroma/-/issues/2101 +      |> Swoosh.Email.put_private(:hackney_options, ssl_options: [versions: [:"tlsv1.2"]]) +      |> assert_email_sent()      end    end diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 2eab64e8b..e34f5a49b 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -29,6 +29,23 @@ defmodule Pleroma.Web.CommonAPITest do    setup do: clear_config([:instance, :limit])    setup do: clear_config([:instance, :max_pinned_statuses]) +  describe "posting polls" do +    test "it posts a poll" do +      user = insert(:user) + +      {:ok, activity} = +        CommonAPI.post(user, %{ +          status: "who is the best", +          poll: %{expires_in: 600, options: ["reimu", "marisa"]} +        }) + +      object = Object.normalize(activity) + +      assert object.data["type"] == "Question" +      assert object.data["oneOf"] |> length() == 2 +    end +  end +    describe "blocking" do      setup do        blocker = insert(:user) diff --git a/test/web/mastodon_api/controllers/auth_controller_test.exs b/test/web/mastodon_api/controllers/auth_controller_test.exs index 4fa95fce1..bf2438fe2 100644 --- a/test/web/mastodon_api/controllers/auth_controller_test.exs +++ b/test/web/mastodon_api/controllers/auth_controller_test.exs @@ -61,7 +61,7 @@ defmodule Pleroma.Web.MastodonAPI.AuthControllerTest do      end      test "it returns 204", %{conn: conn} do -      assert json_response(conn, :no_content) +      assert empty_json_response(conn)      end      test "it creates a PasswordResetToken record for user", %{user: user} do @@ -91,7 +91,7 @@ defmodule Pleroma.Web.MastodonAPI.AuthControllerTest do        assert conn               |> post("/auth/password?nickname=#{user.nickname}") -             |> json_response(:no_content) +             |> empty_json_response()        ObanHelpers.perform_all()        token_record = Repo.get_by(Pleroma.PasswordResetToken, user_id: user.id) @@ -112,7 +112,7 @@ defmodule Pleroma.Web.MastodonAPI.AuthControllerTest do        assert conn               |> post("/auth/password?nickname=#{user.nickname}") -             |> json_response(:no_content) +             |> empty_json_response()      end    end @@ -125,24 +125,21 @@ defmodule Pleroma.Web.MastodonAPI.AuthControllerTest do      test "it returns 204 when user is not found", %{conn: conn, user: user} do        conn = post(conn, "/auth/password?email=nonexisting_#{user.email}") -      assert conn -             |> json_response(:no_content) +      assert empty_json_response(conn)      end      test "it returns 204 when user is not local", %{conn: conn, user: user} do        {:ok, user} = Repo.update(Ecto.Changeset.change(user, local: false))        conn = post(conn, "/auth/password?email=#{user.email}") -      assert conn -             |> json_response(:no_content) +      assert empty_json_response(conn)      end      test "it returns 204 when user is deactivated", %{conn: conn, user: user} do        {:ok, user} = Repo.update(Ecto.Changeset.change(user, deactivated: true, local: true))        conn = post(conn, "/auth/password?email=#{user.email}") -      assert conn -             |> json_response(:no_content) +      assert empty_json_response(conn)      end    end diff --git a/test/web/pleroma_api/controllers/chat_controller_test.exs b/test/web/pleroma_api/controllers/chat_controller_test.exs index 44a78a738..11d5ba373 100644 --- a/test/web/pleroma_api/controllers/chat_controller_test.exs +++ b/test/web/pleroma_api/controllers/chat_controller_test.exs @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do -  use Pleroma.Web.ConnCase, async: true +  use Pleroma.Web.ConnCase    alias Pleroma.Chat    alias Pleroma.Chat.MessageReference @@ -201,17 +201,39 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do        chat = Chat.get(user.id, recipient.ap_id) -      result = -        conn -        |> get("/api/v1/pleroma/chats/#{chat.id}/messages") -        |> json_response_and_validate_schema(200) +      response = get(conn, "/api/v1/pleroma/chats/#{chat.id}/messages") +      result = json_response_and_validate_schema(response, 200) + +      [next, prev] = get_resp_header(response, "link") |> hd() |> String.split(", ") +      api_endpoint = "/api/v1/pleroma/chats/" + +      assert String.match?( +               next, +               ~r(#{api_endpoint}.*/messages\?id=.*&limit=\d+&max_id=.*; rel=\"next\"$) +             ) + +      assert String.match?( +               prev, +               ~r(#{api_endpoint}.*/messages\?id=.*&limit=\d+&min_id=.*; rel=\"prev\"$) +             )        assert length(result) == 20 -      result = -        conn -        |> get("/api/v1/pleroma/chats/#{chat.id}/messages?max_id=#{List.last(result)["id"]}") -        |> json_response_and_validate_schema(200) +      response = +        get(conn, "/api/v1/pleroma/chats/#{chat.id}/messages?max_id=#{List.last(result)["id"]}") + +      result = json_response_and_validate_schema(response, 200) +      [next, prev] = get_resp_header(response, "link") |> hd() |> String.split(", ") + +      assert String.match?( +               next, +               ~r(#{api_endpoint}.*/messages\?id=.*&limit=\d+&max_id=.*; rel=\"next\"$) +             ) + +      assert String.match?( +               prev, +               ~r(#{api_endpoint}.*/messages\?id=.*&limit=\d+&max_id=.*&min_id=.*; rel=\"prev\"$) +             )        assert length(result) == 10      end @@ -240,12 +262,10 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do        assert length(result) == 3        # Trying to get the chat of a different user -      result = -        conn -        |> assign(:user, other_user) -        |> get("/api/v1/pleroma/chats/#{chat.id}/messages") - -      assert result |> json_response(404) +      conn +      |> assign(:user, other_user) +      |> get("/api/v1/pleroma/chats/#{chat.id}/messages") +      |> json_response_and_validate_schema(404)      end    end diff --git a/test/web/pleroma_api/controllers/emoji_file_controller_test.exs b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs new file mode 100644 index 000000000..39b4e1dac --- /dev/null +++ b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs @@ -0,0 +1,357 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.EmojiFileControllerTest do +  use Pleroma.Web.ConnCase + +  import Tesla.Mock +  import Pleroma.Factory + +  @emoji_path Path.join( +                Pleroma.Config.get!([:instance, :static_dir]), +                "emoji" +              ) +  setup do: clear_config([:auth, :enforce_oauth_admin_scope_usage], false) + +  setup do: clear_config([:instance, :public], true) + +  setup do +    admin = insert(:user, is_admin: true) +    token = insert(:oauth_admin_token, user: admin) + +    admin_conn = +      build_conn() +      |> assign(:user, admin) +      |> assign(:token, token) + +    Pleroma.Emoji.reload() +    {:ok, %{admin_conn: admin_conn}} +  end + +  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) + +      on_exit(fn -> +        File.write!(pack_file, original_content) +      end) + +      :ok +    end + +    test "upload zip file with emojies", %{admin_conn: admin_conn} do +      on_exit(fn -> +        [ +          "128px/a_trusted_friend-128.png", +          "auroraborealis.png", +          "1000px/baby_in_a_box.png", +          "1000px/bear.png", +          "128px/bear-128.png" +        ] +        |> Enum.each(fn path -> File.rm_rf!("#{@emoji_path}/test_pack/#{path}") end) +      end) + +      resp = +        admin_conn +        |> put_req_header("content-type", "multipart/form-data") +        |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +          file: %Plug.Upload{ +            content_type: "application/zip", +            filename: "emojis.zip", +            path: Path.absname("test/fixtures/emojis.zip") +          } +        }) +        |> json_response_and_validate_schema(200) + +      assert resp == %{ +               "a_trusted_friend-128" => "128px/a_trusted_friend-128.png", +               "auroraborealis" => "auroraborealis.png", +               "baby_in_a_box" => "1000px/baby_in_a_box.png", +               "bear" => "1000px/bear.png", +               "bear-128" => "128px/bear-128.png", +               "blank" => "blank.png", +               "blank2" => "blank2.png" +             } + +      Enum.each(Map.values(resp), fn path -> +        assert File.exists?("#{@emoji_path}/test_pack/#{path}") +      end) +    end + +    test "create shortcode exists", %{admin_conn: admin_conn} do +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> 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" +               } +             }) +             |> json_response_and_validate_schema(:conflict) == %{ +               "error" => "An emoji with the \"blank\" shortcode already exists" +             } +    end + +    test "don't rewrite old emoji", %{admin_conn: admin_conn} do +      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir/") end) + +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank3", +               filename: "dir/blank.png", +               file: %Plug.Upload{ +                 filename: "blank.png", +                 path: "#{@emoji_path}/test_pack/blank.png" +               } +             }) +             |> json_response_and_validate_schema(200) == %{ +               "blank" => "blank.png", +               "blank2" => "blank2.png", +               "blank3" => "dir/blank.png" +             } + +      assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") + +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank", +               new_shortcode: "blank2", +               new_filename: "dir_2/blank_3.png" +             }) +             |> json_response_and_validate_schema(:conflict) == %{ +               "error" => +                 "New shortcode \"blank2\" is already used. If you want to override emoji use 'force' option" +             } +    end + +    test "rewrite old emoji with force option", %{admin_conn: admin_conn} do +      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir_2/") end) + +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank3", +               filename: "dir/blank.png", +               file: %Plug.Upload{ +                 filename: "blank.png", +                 path: "#{@emoji_path}/test_pack/blank.png" +               } +             }) +             |> json_response_and_validate_schema(200) == %{ +               "blank" => "blank.png", +               "blank2" => "blank2.png", +               "blank3" => "dir/blank.png" +             } + +      assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") + +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank3", +               new_shortcode: "blank4", +               new_filename: "dir_2/blank_3.png", +               force: true +             }) +             |> json_response_and_validate_schema(200) == %{ +               "blank" => "blank.png", +               "blank2" => "blank2.png", +               "blank4" => "dir_2/blank_3.png" +             } + +      assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") +    end + +    test "with empty filename", %{admin_conn: admin_conn} do +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank2", +               filename: "", +               file: %Plug.Upload{ +                 filename: "blank.png", +                 path: "#{@emoji_path}/test_pack/blank.png" +               } +             }) +             |> json_response_and_validate_schema(422) == %{ +               "error" => "pack name, shortcode or filename cannot be empty" +             } +    end + +    test "add file with not loaded pack", %{admin_conn: admin_conn} do +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> post("/api/pleroma/emoji/packs/not_loaded/files", %{ +               shortcode: "blank3", +               filename: "dir/blank.png", +               file: %Plug.Upload{ +                 filename: "blank.png", +                 path: "#{@emoji_path}/test_pack/blank.png" +               } +             }) +             |> json_response_and_validate_schema(:not_found) == %{ +               "error" => "pack \"not_loaded\" is not found" +             } +    end + +    test "remove file with not loaded pack", %{admin_conn: admin_conn} do +      assert admin_conn +             |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=blank3") +             |> json_response_and_validate_schema(:not_found) == %{ +               "error" => "pack \"not_loaded\" is not found" +             } +    end + +    test "remove file with empty shortcode", %{admin_conn: admin_conn} do +      assert admin_conn +             |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=") +             |> json_response_and_validate_schema(:not_found) == %{ +               "error" => "pack \"not_loaded\" is not found" +             } +    end + +    test "update file with not loaded pack", %{admin_conn: admin_conn} do +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> patch("/api/pleroma/emoji/packs/not_loaded/files", %{ +               shortcode: "blank4", +               new_shortcode: "blank3", +               new_filename: "dir_2/blank_3.png" +             }) +             |> json_response_and_validate_schema(:not_found) == %{ +               "error" => "pack \"not_loaded\" is not found" +             } +    end + +    test "new with shortcode as file with update", %{admin_conn: admin_conn} do +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> 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" +               } +             }) +             |> json_response_and_validate_schema(200) == %{ +               "blank" => "blank.png", +               "blank4" => "dir/blank.png", +               "blank2" => "blank2.png" +             } + +      assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") + +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank4", +               new_shortcode: "blank3", +               new_filename: "dir_2/blank_3.png" +             }) +             |> json_response_and_validate_schema(200) == %{ +               "blank3" => "dir_2/blank_3.png", +               "blank" => "blank.png", +               "blank2" => "blank2.png" +             } + +      refute File.exists?("#{@emoji_path}/test_pack/dir/") +      assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") + +      assert admin_conn +             |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") +             |> json_response_and_validate_schema(200) == %{ +               "blank" => "blank.png", +               "blank2" => "blank2.png" +             } + +      refute File.exists?("#{@emoji_path}/test_pack/dir_2/") + +      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir") end) +    end + +    test "new with shortcode from url", %{admin_conn: admin_conn} do +      mock(fn +        %{ +          method: :get, +          url: "https://test-blank/blank_url.png" +        } -> +          text(File.read!("#{@emoji_path}/test_pack/blank.png")) +      end) + +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank_url", +               file: "https://test-blank/blank_url.png" +             }) +             |> json_response_and_validate_schema(200) == %{ +               "blank_url" => "blank_url.png", +               "blank" => "blank.png", +               "blank2" => "blank2.png" +             } + +      assert File.exists?("#{@emoji_path}/test_pack/blank_url.png") + +      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/blank_url.png") end) +    end + +    test "new without shortcode", %{admin_conn: admin_conn} do +      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/shortcode.png") end) + +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ +               file: %Plug.Upload{ +                 filename: "shortcode.png", +                 path: "#{Pleroma.Config.get([:instance, :static_dir])}/add/shortcode.png" +               } +             }) +             |> json_response_and_validate_schema(200) == %{ +               "shortcode" => "shortcode.png", +               "blank" => "blank.png", +               "blank2" => "blank2.png" +             } +    end + +    test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do +      assert admin_conn +             |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") +             |> json_response_and_validate_schema(:bad_request) == %{ +               "error" => "Emoji \"blank3\" does not exist" +             } +    end + +    test "update non existing emoji", %{admin_conn: admin_conn} do +      assert admin_conn +             |> put_req_header("content-type", "multipart/form-data") +             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +               shortcode: "blank3", +               new_shortcode: "blank4", +               new_filename: "dir_2/blank_3.png" +             }) +             |> json_response_and_validate_schema(:bad_request) == %{ +               "error" => "Emoji \"blank3\" does not exist" +             } +    end + +    test "update with empty shortcode", %{admin_conn: admin_conn} do +      assert %{ +               "error" => "Missing field: new_shortcode." +             } = +               admin_conn +               |> put_req_header("content-type", "multipart/form-data") +               |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ +                 shortcode: "blank", +                 new_filename: "dir_2/blank_3.png" +               }) +               |> json_response_and_validate_schema(:bad_request) +    end +  end +end diff --git a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs index e113bb15f..a34df2c18 100644 --- a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs @@ -411,293 +411,6 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do      end    end -  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) - -      on_exit(fn -> -        File.write!(pack_file, original_content) -      end) - -      :ok -    end - -    test "create shortcode exists", %{admin_conn: admin_conn} do -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> 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" -               } -             }) -             |> json_response_and_validate_schema(:conflict) == %{ -               "error" => "An emoji with the \"blank\" shortcode already exists" -             } -    end - -    test "don't rewrite old emoji", %{admin_conn: admin_conn} do -      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir/") end) - -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ -               shortcode: "blank3", -               filename: "dir/blank.png", -               file: %Plug.Upload{ -                 filename: "blank.png", -                 path: "#{@emoji_path}/test_pack/blank.png" -               } -             }) -             |> json_response_and_validate_schema(200) == %{ -               "blank" => "blank.png", -               "blank2" => "blank2.png", -               "blank3" => "dir/blank.png" -             } - -      assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") - -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ -               shortcode: "blank", -               new_shortcode: "blank2", -               new_filename: "dir_2/blank_3.png" -             }) -             |> json_response_and_validate_schema(:conflict) == %{ -               "error" => -                 "New shortcode \"blank2\" is already used. If you want to override emoji use 'force' option" -             } -    end - -    test "rewrite old emoji with force option", %{admin_conn: admin_conn} do -      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir_2/") end) - -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ -               shortcode: "blank3", -               filename: "dir/blank.png", -               file: %Plug.Upload{ -                 filename: "blank.png", -                 path: "#{@emoji_path}/test_pack/blank.png" -               } -             }) -             |> json_response_and_validate_schema(200) == %{ -               "blank" => "blank.png", -               "blank2" => "blank2.png", -               "blank3" => "dir/blank.png" -             } - -      assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") - -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ -               shortcode: "blank3", -               new_shortcode: "blank4", -               new_filename: "dir_2/blank_3.png", -               force: true -             }) -             |> json_response_and_validate_schema(200) == %{ -               "blank" => "blank.png", -               "blank2" => "blank2.png", -               "blank4" => "dir_2/blank_3.png" -             } - -      assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") -    end - -    test "with empty filename", %{admin_conn: admin_conn} do -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ -               shortcode: "blank2", -               filename: "", -               file: %Plug.Upload{ -                 filename: "blank.png", -                 path: "#{@emoji_path}/test_pack/blank.png" -               } -             }) -             |> json_response_and_validate_schema(:bad_request) == %{ -               "error" => "pack name, shortcode or filename cannot be empty" -             } -    end - -    test "add file with not loaded pack", %{admin_conn: admin_conn} do -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> post("/api/pleroma/emoji/packs/not_loaded/files", %{ -               shortcode: "blank3", -               filename: "dir/blank.png", -               file: %Plug.Upload{ -                 filename: "blank.png", -                 path: "#{@emoji_path}/test_pack/blank.png" -               } -             }) -             |> json_response_and_validate_schema(:bad_request) == %{ -               "error" => "pack \"not_loaded\" is not found" -             } -    end - -    test "remove file with not loaded pack", %{admin_conn: admin_conn} do -      assert admin_conn -             |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=blank3") -             |> json_response_and_validate_schema(:bad_request) == %{ -               "error" => "pack \"not_loaded\" is not found" -             } -    end - -    test "remove file with empty shortcode", %{admin_conn: admin_conn} do -      assert admin_conn -             |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=") -             |> json_response_and_validate_schema(:bad_request) == %{ -               "error" => "pack name or shortcode cannot be empty" -             } -    end - -    test "update file with not loaded pack", %{admin_conn: admin_conn} do -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> patch("/api/pleroma/emoji/packs/not_loaded/files", %{ -               shortcode: "blank4", -               new_shortcode: "blank3", -               new_filename: "dir_2/blank_3.png" -             }) -             |> json_response_and_validate_schema(: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 -             |> put_req_header("content-type", "multipart/form-data") -             |> 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" -               } -             }) -             |> json_response_and_validate_schema(200) == %{ -               "blank" => "blank.png", -               "blank4" => "dir/blank.png", -               "blank2" => "blank2.png" -             } - -      assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") - -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ -               shortcode: "blank4", -               new_shortcode: "blank3", -               new_filename: "dir_2/blank_3.png" -             }) -             |> json_response_and_validate_schema(200) == %{ -               "blank3" => "dir_2/blank_3.png", -               "blank" => "blank.png", -               "blank2" => "blank2.png" -             } - -      refute File.exists?("#{@emoji_path}/test_pack/dir/") -      assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") - -      assert admin_conn -             |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") -             |> json_response_and_validate_schema(200) == %{ -               "blank" => "blank.png", -               "blank2" => "blank2.png" -             } - -      refute File.exists?("#{@emoji_path}/test_pack/dir_2/") - -      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir") end) -    end - -    test "new with shortcode from url", %{admin_conn: admin_conn} do -      mock(fn -        %{ -          method: :get, -          url: "https://test-blank/blank_url.png" -        } -> -          text(File.read!("#{@emoji_path}/test_pack/blank.png")) -      end) - -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ -               shortcode: "blank_url", -               file: "https://test-blank/blank_url.png" -             }) -             |> json_response_and_validate_schema(200) == %{ -               "blank_url" => "blank_url.png", -               "blank" => "blank.png", -               "blank2" => "blank2.png" -             } - -      assert File.exists?("#{@emoji_path}/test_pack/blank_url.png") - -      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/blank_url.png") end) -    end - -    test "new without shortcode", %{admin_conn: admin_conn} do -      on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/shortcode.png") end) - -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> post("/api/pleroma/emoji/packs/test_pack/files", %{ -               file: %Plug.Upload{ -                 filename: "shortcode.png", -                 path: "#{Pleroma.Config.get([:instance, :static_dir])}/add/shortcode.png" -               } -             }) -             |> json_response_and_validate_schema(200) == %{ -               "shortcode" => "shortcode.png", -               "blank" => "blank.png", -               "blank2" => "blank2.png" -             } -    end - -    test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do -      assert admin_conn -             |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") -             |> json_response_and_validate_schema(:bad_request) == %{ -               "error" => "Emoji \"blank3\" does not exist" -             } -    end - -    test "update non existing emoji", %{admin_conn: admin_conn} do -      assert admin_conn -             |> put_req_header("content-type", "multipart/form-data") -             |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ -               shortcode: "blank3", -               new_shortcode: "blank4", -               new_filename: "dir_2/blank_3.png" -             }) -             |> json_response_and_validate_schema(:bad_request) == %{ -               "error" => "Emoji \"blank3\" does not exist" -             } -    end - -    test "update with empty shortcode", %{admin_conn: admin_conn} do -      assert %{ -               "error" => "Missing field: new_shortcode." -             } = -               admin_conn -               |> put_req_header("content-type", "multipart/form-data") -               |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ -                 shortcode: "blank", -                 new_filename: "dir_2/blank_3.png" -               }) -               |> json_response_and_validate_schema(:bad_request) -    end -  end -    describe "POST/DELETE /api/pleroma/emoji/packs/:name" do      test "creating and deleting a pack", %{admin_conn: admin_conn} do        assert admin_conn | 
