RF43: Usuario activa renovación automática
Descripción
Como usuario autenticado con suscripción de pago, quiero activar la renovación automática para mantener mi acceso premium sin tener que renovar manualmente cada periodo.
Reactiva el ciclo automático en Stripe (deshace una cancelación programada: cancel_at_period_end: false). Requiere un método de pago válido.
| Campo | Valor |
|---|---|
| Módulo | Subscription Module |
| Actor | Usuario autenticado |
| Endpoint | POST /subscription/auto-renew ({ enabled: true }) |
| Precondiciones | Sesión activa; suscripción existente; método de pago válido |
| Prioridad | Media (MVP) |
| Etapa | MVP |
| Requisitos relacionados | RF44, RF39, RF46 |
Reglas de negocio
- RN-43.1 — Activar la renovación requiere un método de pago válido (RF46); si no hay, se solicita registrarlo (RF35).
- RN-43.2 — Activar equivale a
subscriptions.update({ cancel_at_period_end: false })cuando había una cancelación programada. - RN-43.3 — La operación es idempotente: activar cuando ya está activa no cambia el estado.
Validaciones de entrada
| Campo | Reglas | Mensaje de error |
|---|---|---|
Authorization | Bearer válido. | "Sesión no válida." (401) |
| Método de pago | Debe existir uno válido. | "Registra un método de pago válido para activar la renovación." |
Criterios de aceptación
Escenario 1: Activación exitosa
Dado que tengo una suscripción con renovación desactivada y un método de pago válido,
Cuando activo la renovación automática,
Entonces el sistema la reactiva en Stripe,
Y responde 200 OK confirmando la próxima fecha de renovación.
Escenario 2: Sin método de pago válido
Dado que no tengo un método de pago válido,
Cuando intento activar la renovación,
Entonces el sistema responde 400 pidiendo registrar uno (RF35).
Escenario 3: Ya estaba activa (idempotencia)
Dado que la renovación ya está activa,
Cuando la activo de nuevo,
Entonces el sistema responde 200 OK sin cambios.
Criterios no funcionales
- Idempotencia en la llamada a Stripe; comunicación TLS 1.2+.