Saltar al contenido principal

RF52: Usuario accede al curso

Descripción

Como usuario autenticado, quiero abrir un curso y ver su contenido (lecciones, progreso) para comenzar o continuar mi aprendizaje.

Al acceder se valida el derecho de acceso (cursos premium requieren plan premium) y se devuelve el temario con el progreso del usuario. El contenido de video se entrega al reproducir cada lección (RF53).

CampoValor
MóduloCourses Module
ActorUsuario autenticado
EndpointGET /courses/:id
PrecondicionesSesión activa; el curso existe y está publicado
PrioridadMedia (MVP)
EtapaMBI 1
Requisitos relacionadosRF47, RF53, RF57

Reglas de negocio

  • RN-52.1 — Si el curso es premium y el usuario está en Free, se bloquea el acceso al contenido con invitación a suscribirse.
  • RN-52.2 — Al acceder por primera vez se registra la inscripción/inicio del curso para llevar el progreso.
  • RN-52.3 — Se devuelve el temario con el estado de cada lección (no vista / en progreso / completada).
  • RN-52.4 — El acceso se valida siempre en el backend (no se confía en el cliente).

Validaciones de entrada

CampoReglasMensaje de error
idObligatorio. Curso publicado existente."Curso no encontrado." (404)
AuthorizationBearer válido."Sesión no válida." (401)

Criterios de aceptación

Escenario 1: Acceso exitoso

Dado que tengo derecho de acceso al curso, Cuando lo abro, Entonces el sistema registra/recupera mi progreso, Y devuelve el temario con el estado de cada lección con 200 OK.

Escenario 2: Curso premium sin plan premium

Dado que el curso es premium y estoy en Free, Cuando intento acceder al contenido, Entonces el sistema responde 403 Forbidden, Y muestra una invitación a suscribirse (RF33).

Escenario 3: Curso inexistente

Dado que envío un id que no existe o no está publicado, Cuando intento acceder, Entonces el sistema responde 404 Not Found.

Escenario 4: Validación de acceso en backend (seguridad)

Dado que se manipula el cliente para saltar la validación, Cuando se solicita el contenido, Entonces el backend valida el derecho de acceso y bloquea si no corresponde.

Criterios no funcionales

  • Respuesta < 1.5 s.
  • El contenido de video no se entrega aquí, solo el temario.
  • Comunicación TLS 1.2+.

Diagrama de secuencia