Saltar al contenido principal

RF62: Administrador actualiza curso

Descripción

Como administrador, quiero actualizar la información de un curso (título, descripción, categoría, nivel, lecciones, estado de publicación) para mantener el catálogo correcto y actualizado.

Operación restringida por RBAC (rol admin). Las validaciones de contenido son las mismas que al crear (RF60).

CampoValor
MóduloCourses Module (administración)
ActorAdministrador (rol admin)
EndpointPUT /admin/courses/:id
PrecondicionesSesión activa con rol admin; el curso existe
PrioridadBaja (post-MVP)
EtapaMBI 1
Requisitos relacionadosRF60, RF61

Reglas de negocio

  • RN-62.1 — Solo el rol admin (validado en backend) puede actualizar cursos.
  • RN-62.2 — Cambiar el estado a "publicado" exige que el curso tenga los campos obligatorios completos (título, descripción, al menos una lección).
  • RN-62.3 — Reemplazar videos sube los nuevos a S3 privado y actualiza referencias; los anteriores se archivan/eliminan según política.
  • RN-62.4 — Los cambios se registran en auditoría.
  • RN-62.5 — Actualizar un curso no afecta retroactivamente los certificados ya emitidos.

Validaciones de entrada

CampoReglasMensaje de error
idObligatorio. Curso existente."Curso no encontrado." (404)
titleSi se envía: 3–120 caracteres."El título no es válido."
category/levelValores de catálogo."Categoría/nivel no válido."
statusEnum (draft, published, archived)."Estado no válido."
RolDebe ser admin."No tienes permisos para esta acción." (403)

Entrada sanitizada y consultas parametrizadas; no se aceptan inyecciones SQL. Archivos validados por tipo y tamaño.

Criterios de aceptación

Escenario 1: Actualización exitosa

Dado que soy administrador y envío cambios válidos, Cuando guardo, Entonces el sistema actualiza el curso, Y responde 200 OK, Y registra el cambio en auditoría.

Escenario 2: Publicar curso incompleto

Dado que intento publicar un curso sin campos obligatorios, Cuando cambio su estado a "publicado", Entonces el sistema responde 400 indicando los campos faltantes.

Escenario 3: Usuario sin rol admin (seguridad)

Dado que no tengo rol admin, Cuando intento actualizar un curso, Entonces el sistema responde 403 Forbidden.

Escenario 4: Datos inválidos o maliciosos

Dado que envío campos fuera de catálogo o con inyección SQL, Cuando el backend valida, Entonces rechaza la entrada (400) y no la ejecuta.

Criterios no funcionales

  • RBAC en backend; auditoría obligatoria.
  • Reemplazo de archivos a S3 privado; comunicación TLS 1.2+.

Diagrama de secuencia