mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-18 05:02:15 +03:00
fix(providers): add PATCH handler to provider connection route (CLI rotate 405) (#10366)
* fix(providers): add PATCH handler to provider connection route The OpenAPI spec and the CLI (omniroute providers rotate, generated api-commands) both use PATCH /api/providers/[id], but the route only implemented PUT — PATCH requests returned 405 and key rotation via the CLI silently failed while reporting success (the DB-write fallback only catches thrown exceptions, not non-OK HTTP responses). Add a PATCH handler delegating to the PUT handler: both apply the same partial-update schema, so the semantics are identical. Regression test proves the PATCH export exists and delegates into the shared auth path; verified to fail without the fix. * docs(changelog): note PATCH provider route fix (PR #10366) * fix(providers): make PATCH delegation test environment-robust The 'PATCH delegates to PUT' assertion hardcoded a 401, which only holds when management auth is enforced (dev). In the CI unit-test env auth is not required, so the flow falls through to 'Connection not found' (404) for an unknown id — the test failed on the status code while the PATCH->PUT delegation itself is correct. Assert on delegation equivalence instead: PATCH must never 405 (the regression) and must return the same status as PUT for the same input. Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com> * test(providers): use fresh Request per handler in PATCH delegation test The same Request was passed to both PATCH and PUT — PUT consumes the body via request.json(), so the second call got an empty body (400 validation) vs the first (404 not-found): a false status mismatch on bases where management auth is bypassed in the test env (release v3.8.50). Fresh Request per invocation makes identical inputs produce identical statuses. --------- Co-authored-by: benzntech <benzntech@users.noreply.github.com> Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com>
This commit is contained in:
@@ -376,6 +376,15 @@ export async function PUT(request: Request, { params }: { params: Promise<{ id:
|
||||
}
|
||||
}
|
||||
|
||||
// PATCH /api/providers/[id] - Update connection (partial)
|
||||
// The OpenAPI spec and the CLI (`omniroute providers rotate`, generated
|
||||
// api-commands) both use PATCH, but only PUT was implemented — PATCH requests
|
||||
// 405'd. PATCH and PUT share the same update semantics here (the schema only
|
||||
// applies provided fields), so delegate to the PUT handler.
|
||||
export async function PATCH(request: Request, ctx: { params: Promise<{ id: string }> }) {
|
||||
return PUT(request, ctx);
|
||||
}
|
||||
|
||||
// DELETE /api/providers/[id] - Delete connection
|
||||
export async function DELETE(request: Request, { params }: { params: Promise<{ id: string }> }) {
|
||||
const authError = await requireManagementAuth(request);
|
||||
|
||||
Reference in New Issue
Block a user