Granting a permission to a user id with no account answers 500 instead of 404

Abierto Apto para principiantes
#1,002 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
Medio día
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
api, backend

Línea de trabajo

Empieza por el controlador de la ruta de concesión RBAC para POST /api/v1/rbac/users/{user_id}/grant y por la búsqueda de usuario utilizada por la ruta hermana de permisos que ya devuelve 404. Añade la búsqueda que falta antes de insertar la concesión para que un UUID inexistente devuelva 404 en lugar de un error de base de datos, y decide si se descarta el user_id del cuerpo o si se rechaza cuando no coincide con el ID de la ruta. Ejecuta las pruebas de la API RBAC sobre concessiones de usuario y permisos para confirmar el nuevo 404 y que las concessiones existentes sigan funcionando.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug post-launch
  • Sent: POST /api/v1/rbac/users/{user_id}/grant with a valid body, where {user_id} is a well-formed UUID that
    belongs to no account.
  • Comes back: 500 with the generic error body. The grant is inserted without looking the user up, and the database
    refuses the row. Nothing is saved.
  • Expected: 404 "User not found", as GET /api/v1/rbac/users/{user_id}/permissions answers for the same id.
  • Also: the body's required user_id is not used (the path's id is); either drop it or refuse a body whose
    user_id differs from the path, as the counter routes do (#95).
  • Reproduction (ADMIN):
    curl -X POST -H "Authorization: Bearer <ADMIN token>" -H 'Content-Type: application/json' \
         -d '{"user_id":"00000000-0000-0000-0000-000000000001","resource":"experiment","actions":["read"]}' \
         http://localhost:8000/api/v1/rbac/users/00000000-0000-0000-0000-000000000001/grant
    

Found by API fuzzing (a local run), reproduced by hand.

Lenguaje dominante
Python
Estrellas
0
Forks
4
Merge medio
5 h 19 min
PR fusionados (30 d)
503

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Controlvar/controlvar

Todos los issues de Controlvar/controlvar

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.