diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/pleroma/web/mastodon_api/controllers/media_controller_test.exs | 55 | 
1 files changed, 55 insertions, 0 deletions
diff --git a/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs index 39d7f99f6..ff988a7fd 100644 --- a/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs @@ -5,6 +5,8 @@  defmodule Pleroma.Web.MastodonAPI.MediaControllerTest do    use Pleroma.Web.ConnCase +  import ExUnit.CaptureLog +    alias Pleroma.Object    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub @@ -67,6 +69,59 @@ defmodule Pleroma.Web.MastodonAPI.MediaControllerTest do        object = Object.get_by_id(media["id"])        assert object.data["actor"] == user.ap_id      end + +    test "/api/v2/media, upload_limit", %{conn: conn, user: user} do +      desc = "Description of the binary" + +      upload_limit = Config.get([:instance, :upload_limit]) * 8 + 8 + +      assert :ok == +               File.write(Path.absname("test/tmp/large_binary.data"), <<0::size(upload_limit)>>) + +      large_binary = %Plug.Upload{ +        content_type: nil, +        path: Path.absname("test/tmp/large_binary.data"), +        filename: "large_binary.data" +      } + +      assert capture_log(fn -> +               assert %{"error" => "file_too_large"} = +                        conn +                        |> put_req_header("content-type", "multipart/form-data") +                        |> post("/api/v2/media", %{ +                          "file" => large_binary, +                          "description" => desc +                        }) +                        |> json_response_and_validate_schema(400) +             end) =~ +               "[error] Elixir.Pleroma.Upload store (using Pleroma.Uploaders.Local) failed: :file_too_large" + +      clear_config([:instance, :upload_limit], upload_limit) + +      assert response = +               conn +               |> put_req_header("content-type", "multipart/form-data") +               |> post("/api/v2/media", %{ +                 "file" => large_binary, +                 "description" => desc +               }) +               |> json_response_and_validate_schema(202) + +      assert media_id = response["id"] + +      %{conn: conn} = oauth_access(["read:media"], user: user) + +      media = +        conn +        |> get("/api/v1/media/#{media_id}") +        |> json_response_and_validate_schema(200) + +      assert media["type"] == "unknown" +      assert media["description"] == desc +      assert media["id"] + +      assert :ok == File.rm(Path.absname("test/tmp/large_binary.data")) +    end    end    describe "Update media description" do  | 
