PleromaAPI: Change EmojiReact to invisible post response from 400 to 404
This commit is contained in:
parent
293628fb24
commit
73a3f06f71
5 changed files with 36 additions and 18 deletions
|
|
@ -7,6 +7,7 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do
|
||||||
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.ApiError
|
||||||
|
alias Pleroma.Web.ApiSpec.Schemas.ApiNotFoundError
|
||||||
alias Pleroma.Web.ApiSpec.Schemas.FlakeID
|
alias Pleroma.Web.ApiSpec.Schemas.FlakeID
|
||||||
alias Pleroma.Web.ApiSpec.Schemas.Status
|
alias Pleroma.Web.ApiSpec.Schemas.Status
|
||||||
|
|
||||||
|
|
@ -36,7 +37,7 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do
|
||||||
operationId: "EmojiReactionController.index",
|
operationId: "EmojiReactionController.index",
|
||||||
responses: %{
|
responses: %{
|
||||||
200 => array_of_reactions_response(),
|
200 => array_of_reactions_response(),
|
||||||
403 => Operation.response("Access denied", "application/json", ApiError)
|
404 => Operation.response("Access denied", "application/json", ApiError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
@ -55,7 +56,8 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do
|
||||||
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)
|
400 => Operation.response("Bad Request", "application/json", ApiError),
|
||||||
|
404 => Operation.response("Not Found", "application/json", ApiNotFoundError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
||||||
19
lib/pleroma/web/api_spec/schemas/api_not_found_error.ex
Normal file
19
lib/pleroma/web/api_spec/schemas/api_not_found_error.ex
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.ApiSpec.Schemas.ApiNotFoundError do
|
||||||
|
alias OpenApiSpex.Schema
|
||||||
|
|
||||||
|
require OpenApiSpex
|
||||||
|
|
||||||
|
OpenApiSpex.schema(%{
|
||||||
|
title: "Not Found",
|
||||||
|
description: "Response schema for 404 API errors",
|
||||||
|
type: :object,
|
||||||
|
properties: %{error: %Schema{type: :string}},
|
||||||
|
example: %{
|
||||||
|
"error" => "Record not found"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
@ -322,7 +322,7 @@ defmodule Pleroma.Web.CommonAPI do
|
||||||
{:ok, activity}
|
{:ok, activity}
|
||||||
else
|
else
|
||||||
{:visible, _} ->
|
{:visible, _} ->
|
||||||
{:error, dgettext("errors", "Must be able to access post to interact with it")}
|
{:error, :not_found}
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
{:error, dgettext("errors", "Could not add reaction emoji")}
|
{:error, dgettext("errors", "Could not add reaction emoji")}
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionController do
|
||||||
|
|
||||||
render(conn, "index.json", emoji_reactions: reactions, user: user)
|
render(conn, "index.json", emoji_reactions: reactions, user: user)
|
||||||
else
|
else
|
||||||
{:visible, _} -> {:error, :forbidden}
|
{:visible, _} -> {:error, :not_found}
|
||||||
_e -> json(conn, [])
|
_e -> json(conn, [])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -182,9 +182,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do
|
||||||
resp =
|
resp =
|
||||||
prepare_conn_of_user(conn, stranger)
|
prepare_conn_of_user(conn, stranger)
|
||||||
|> put("/api/v1/pleroma/statuses/#{activity_id}/reactions/🐈")
|
|> put("/api/v1/pleroma/statuses/#{activity_id}/reactions/🐈")
|
||||||
|> json_response_and_validate_schema(400)
|
|> json_response_and_validate_schema(404)
|
||||||
|
|
||||||
assert match?(%{"error" => _}, resp)
|
assert match?(%{"error" => "Record not found"}, resp)
|
||||||
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
|
||||||
|
|
@ -408,12 +408,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do
|
||||||
assert match?([%{"name" => _, "count" => _} | _], resp)
|
assert match?([%{"name" => _, "count" => _} | _], resp)
|
||||||
|
|
||||||
# Fails for stranger
|
# Fails for stranger
|
||||||
resp =
|
assert prepare_conn_of_user(conn, stranger)
|
||||||
prepare_conn_of_user(conn, stranger)
|
|> get("/api/v1/pleroma/statuses/#{activity_id}/reactions")
|
||||||
|> get("/api/v1/pleroma/statuses/#{activity_id}/reactions")
|
|> json_response_and_validate_schema(404) == %{"error" => "Record not found"}
|
||||||
|> json_response_and_validate_schema(403)
|
|
||||||
|
|
||||||
assert match?(%{"error" => _}, resp)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "GET /api/v1/pleroma/statuses/:id/reactions with :show_reactions disabled", %{conn: conn} do
|
test "GET /api/v1/pleroma/statuses/:id/reactions with :show_reactions disabled", %{conn: conn} do
|
||||||
|
|
@ -471,13 +468,13 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do
|
||||||
{%{id: activity_id} = _activity, _author, follower, stranger} = prepare_reacted_post()
|
{%{id: activity_id} = _activity, _author, follower, stranger} = prepare_reacted_post()
|
||||||
|
|
||||||
# Works for follower
|
# Works for follower
|
||||||
prepare_conn_of_user(conn, follower)
|
assert prepare_conn_of_user(conn, follower)
|
||||||
|> get("/api/v1/pleroma/statuses/#{activity_id}/reactions/🐈")
|
|> get("/api/v1/pleroma/statuses/#{activity_id}/reactions/🐈")
|
||||||
|> json_response_and_validate_schema(200)
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
# Fails for stranger
|
# Fails for stranger
|
||||||
prepare_conn_of_user(conn, stranger)
|
assert prepare_conn_of_user(conn, stranger)
|
||||||
|> get("/api/v1/pleroma/statuses/#{activity_id}/reactions/🐈")
|
|> get("/api/v1/pleroma/statuses/#{activity_id}/reactions/🐈")
|
||||||
|> json_response_and_validate_schema(403)
|
|> json_response_and_validate_schema(404) == %{"error" => "Record not found"}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue