Return a 422 when trying to reply to a deleted status
This commit is contained in:
parent
895eea5c75
commit
d4769b076a
|
@ -0,0 +1 @@
|
||||||
|
A 422 error is returned when attempting to reply to a deleted status
|
|
@ -129,8 +129,22 @@ defp attachments(%{params: params} = draft) do
|
||||||
|
|
||||||
defp in_reply_to(%{params: %{in_reply_to_status_id: ""}} = draft), do: draft
|
defp in_reply_to(%{params: %{in_reply_to_status_id: ""}} = draft), do: draft
|
||||||
|
|
||||||
defp in_reply_to(%{params: %{in_reply_to_status_id: id}} = draft) when is_binary(id) do
|
defp in_reply_to(%{params: %{in_reply_to_status_id: :deleted}} = draft) do
|
||||||
%__MODULE__{draft | in_reply_to: Activity.get_by_id(id)}
|
add_error(draft, dgettext("errors", "Cannot reply to a deleted status"))
|
||||||
|
end
|
||||||
|
|
||||||
|
defp in_reply_to(%{params: %{in_reply_to_status_id: id} = params} = draft) when is_binary(id) do
|
||||||
|
activity = Activity.get_by_id(id)
|
||||||
|
|
||||||
|
params =
|
||||||
|
if is_nil(activity) do
|
||||||
|
# Deleted activities are returned as nil
|
||||||
|
Map.put(params, :in_reply_to_status_id, :deleted)
|
||||||
|
else
|
||||||
|
Map.put(params, :in_reply_to_status_id, activity)
|
||||||
|
end
|
||||||
|
|
||||||
|
in_reply_to(%{draft | params: params})
|
||||||
end
|
end
|
||||||
|
|
||||||
defp in_reply_to(%{params: %{in_reply_to_status_id: %Activity{} = in_reply_to}} = draft) do
|
defp in_reply_to(%{params: %{in_reply_to_status_id: %Activity{} = in_reply_to}} = draft) do
|
||||||
|
|
|
@ -235,6 +235,16 @@ test "replying to a status", %{user: user, conn: conn} do
|
||||||
assert Activity.get_in_reply_to_activity(activity).id == replied_to.id
|
assert Activity.get_in_reply_to_activity(activity).id == replied_to.id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "replying to a deleted status", %{user: user, conn: conn} do
|
||||||
|
{:ok, status} = CommonAPI.post(user, %{status: "cofe"})
|
||||||
|
{:ok, _deleted_status} = CommonAPI.delete(status.id, user)
|
||||||
|
|
||||||
|
conn
|
||||||
|
|> put_req_header("content-type", "application/json")
|
||||||
|
|> post("/api/v1/statuses", %{"status" => "xD", "in_reply_to_id" => status.id})
|
||||||
|
|> json_response_and_validate_schema(422)
|
||||||
|
end
|
||||||
|
|
||||||
test "replying to a direct message with visibility other than direct", %{
|
test "replying to a direct message with visibility other than direct", %{
|
||||||
user: user,
|
user: user,
|
||||||
conn: conn
|
conn: conn
|
||||||
|
|
Loading…
Reference in New Issue