fix(api_spec): pass cast options on the first permissive cast
Without them replace_params: false was ignored when strict is off, so conn.params got atom keys and RateLimiter params: ["id"] buckets collapsed to one per user.
This commit is contained in:
parent
3e9dc477c9
commit
163c49c649
3 changed files with 6 additions and 3 deletions
1
changelog.d/cast-and-validate-cast-opts.fix
Normal file
1
changelog.d/cast-and-validate-cast-opts.fix
Normal file
|
|
@ -0,0 +1 @@
|
|||
Fix per-status and per-account rate limits when `Pleroma.Web.ApiSpec.CastAndValidate` `strict` is off (the production default)
|
||||
|
|
@ -114,7 +114,7 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do
|
|||
false = _strict,
|
||||
cast_opts
|
||||
) do
|
||||
case OpenApiSpex.cast_and_validate(spec, operation, conn, content_type) do
|
||||
case OpenApiSpex.cast_and_validate(spec, operation, conn, content_type, cast_opts) do
|
||||
{:ok, conn} ->
|
||||
{:ok, conn}
|
||||
|
||||
|
|
|
|||
|
|
@ -2248,8 +2248,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
|
|||
setup do: clear_config([:rate_limit, :statuses_actions], {60_000, 100})
|
||||
setup do: oauth_access(["write:statuses", "write:favourites"])
|
||||
|
||||
for {action, undo} <- [{"favourite", "unfavourite"}, {"reblog", "unreblog"}] do
|
||||
test "#{action} is limited per status, not per user", %{conn: conn} do
|
||||
for {action, undo} <- [{"favourite", "unfavourite"}, {"reblog", "unreblog"}],
|
||||
strict <- [true, false] do
|
||||
test "#{action} is limited per status, not per user (strict: #{strict})", %{conn: conn} do
|
||||
clear_config([Pleroma.Web.ApiSpec.CastAndValidate, :strict], unquote(strict))
|
||||
conn = put_req_header(conn, "content-type", "application/json")
|
||||
statuses = insert_list(3, :note_activity)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue