akkoma/test/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs

82 lines
2.3 KiB
Elixir
Raw Normal View History

# Pleroma: A lightweight social networking server
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.PleromaAPI.MascotControllerTest do
use Pleroma.Web.ConnCase, async: false
alias Pleroma.User
setup do
clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
end
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"
}
2020-05-18 12:00:32 -06:00
ret_conn =
conn
|> put_req_header("content-type", "multipart/form-data")
|> put("/api/v1/pleroma/mascot", %{"file" => non_image_file})
2020-05-18 12:00:32 -06:00
assert json_response_and_validate_schema(ret_conn, 415)
file = %Plug.Upload{
2020-10-13 09:37:24 -06:00
content_type: "image/jpeg",
path: Path.absname("test/fixtures/image.jpg"),
filename: "an_image.jpg"
}
2020-05-18 12:00:32 -06:00
conn =
conn
|> put_req_header("content-type", "multipart/form-data")
|> put("/api/v1/pleroma/mascot", %{"file" => file})
2020-10-15 06:54:59 -06:00
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")
2020-05-18 12:00:32 -06:00
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{
2020-10-13 09:37:24 -06:00
content_type: "image/jpeg",
path: Path.absname("test/fixtures/image.jpg"),
filename: "an_image.jpg"
}
2020-05-18 12:00:32 -06:00
ret_conn =
conn
|> put_req_header("content-type", "multipart/form-data")
|> put("/api/v1/pleroma/mascot", %{"file" => file})
2020-05-18 12:00:32 -06:00
assert json_response_and_validate_schema(ret_conn, 200)
%{"url" => uploaded_url} = Jason.decode!(ret_conn.resp_body)
assert uploaded_url != nil and is_binary(uploaded_url)
user = User.get_cached_by_id(user.id)
conn =
conn
|> assign(:user, user)
|> get("/api/v1/pleroma/mascot")
2020-05-18 12:00:32 -06:00
assert %{"url" => url, "type" => "image"} = json_response_and_validate_schema(conn, 200)
assert url == uploaded_url
end
end