summaryrefslogtreecommitdiff
path: root/test/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs
diff options
context:
space:
mode:
Diffstat (limited to 'test/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs')
-rw-r--r--test/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs73
1 files changed, 73 insertions, 0 deletions
diff --git a/test/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs
new file mode 100644
index 000000000..289119d45
--- /dev/null
+++ b/test/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs
@@ -0,0 +1,73 @@
+# 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.MascotControllerTest do
+ use Pleroma.Web.ConnCase
+
+ alias Pleroma.User
+
+ test "mascot upload" do
+ %{conn: conn} = oauth_access(["write:accounts"])
+
+ non_image_file = %Plug.Upload{
+ content_type: "audio/mpeg",
+ path: Path.absname("test/fixtures/sound.mp3"),
+ filename: "sound.mp3"
+ }
+
+ ret_conn =
+ conn
+ |> put_req_header("content-type", "multipart/form-data")
+ |> put("/api/v1/pleroma/mascot", %{"file" => non_image_file})
+
+ assert json_response_and_validate_schema(ret_conn, 415)
+
+ file = %Plug.Upload{
+ content_type: "image/jpeg",
+ path: Path.absname("test/fixtures/image.jpg"),
+ filename: "an_image.jpg"
+ }
+
+ conn =
+ conn
+ |> put_req_header("content-type", "multipart/form-data")
+ |> put("/api/v1/pleroma/mascot", %{"file" => file})
+
+ assert %{"id" => _, "type" => _image} = json_response_and_validate_schema(conn, 200)
+ end
+
+ test "mascot retrieving" do
+ %{user: user, conn: conn} = oauth_access(["read:accounts", "write:accounts"])
+
+ # When user hasn't set a mascot, we should just get pleroma tan back
+ ret_conn = get(conn, "/api/v1/pleroma/mascot")
+
+ assert %{"url" => url} = json_response_and_validate_schema(ret_conn, 200)
+ assert url =~ "pleroma-fox-tan-smol"
+
+ # When a user sets their mascot, we should get that back
+ file = %Plug.Upload{
+ content_type: "image/jpeg",
+ path: Path.absname("test/fixtures/image.jpg"),
+ filename: "an_image.jpg"
+ }
+
+ ret_conn =
+ conn
+ |> put_req_header("content-type", "multipart/form-data")
+ |> put("/api/v1/pleroma/mascot", %{"file" => file})
+
+ assert json_response_and_validate_schema(ret_conn, 200)
+
+ user = User.get_cached_by_id(user.id)
+
+ conn =
+ conn
+ |> assign(:user, user)
+ |> get("/api/v1/pleroma/mascot")
+
+ assert %{"url" => url, "type" => "image"} = json_response_and_validate_schema(conn, 200)
+ assert url =~ "an_image"
+ end
+end