@@ -6,6 +6,7 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do | |||||
alias OpenApiSpex.Operation | alias OpenApiSpex.Operation | ||||
alias OpenApiSpex.Schema | alias OpenApiSpex.Schema | ||||
alias Pleroma.Web.ApiSpec.Schemas.Account | alias Pleroma.Web.ApiSpec.Schemas.Account | ||||
alias Pleroma.Web.ApiSpec.Schemas.ApiError | |||||
alias Pleroma.Web.ApiSpec.Schemas.FlakeID | alias Pleroma.Web.ApiSpec.Schemas.FlakeID | ||||
alias Pleroma.Web.ApiSpec.Schemas.Status | alias Pleroma.Web.ApiSpec.Schemas.Status | ||||
@@ -46,7 +47,8 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do | |||||
security: [%{"oAuth" => ["write:statuses"]}], | security: [%{"oAuth" => ["write:statuses"]}], | ||||
operationId: "EmojiReactionController.create", | operationId: "EmojiReactionController.create", | ||||
responses: %{ | responses: %{ | ||||
200 => Operation.response("Status", "application/json", Status) | |||||
200 => Operation.response("Status", "application/json", Status), | |||||
400 => Operation.response("Bad Request", "application/json", ApiError) | |||||
} | } | ||||
} | } | ||||
end | end | ||||
@@ -22,6 +22,8 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionController do | |||||
defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.EmojiReactionOperation | defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.EmojiReactionOperation | ||||
action_fallback(Pleroma.Web.MastodonAPI.FallbackController) | |||||
def index(%{assigns: %{user: user}} = conn, %{id: activity_id} = params) do | def index(%{assigns: %{user: user}} = conn, %{id: activity_id} = params) do | ||||
with %Activity{} = activity <- Activity.get_by_id_with_object(activity_id), | with %Activity{} = activity <- Activity.get_by_id_with_object(activity_id), | ||||
%Object{data: %{"reactions" => reactions}} when is_list(reactions) <- | %Object{data: %{"reactions" => reactions}} when is_list(reactions) <- | ||||
@@ -33,6 +33,13 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do | |||||
assert result["pleroma"]["emoji_reactions"] == [ | assert result["pleroma"]["emoji_reactions"] == [ | ||||
%{"name" => "☕", "count" => 1, "me" => true} | %{"name" => "☕", "count" => 1, "me" => true} | ||||
] | ] | ||||
# Reacting with a non-emoji | |||||
assert conn | |||||
|> assign(:user, other_user) | |||||
|> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) | |||||
|> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/x") | |||||
|> json_response_and_validate_schema(400) | |||||
end | end | ||||
test "DELETE /api/v1/pleroma/statuses/:id/reactions/:emoji", %{conn: conn} do | test "DELETE /api/v1/pleroma/statuses/:id/reactions/:emoji", %{conn: conn} do | ||||