QA Smoke Tests
QA smoke test post-deploy
Section titled “QA smoke test post-deploy”Ejecuta estos pasos despues de cada despliegue production-like y antes de exponer usuarios reales. Usa usuarios QA ficticios y datos no reales.
El smoke test no busca probar todo el sistema. Busca responder rapidamente:
- el frontend carga;
- el backend responde;
- la autenticacion por cookies funciona sin exponer tokens;
- CSRF/CORS estan cerrados;
- logout, refresh, 401 y Super Admin close limpian correctamente;
- tenant restricted queda bloqueado como fue aprobado;
- el flujo clinico minimo no rompe.
Si una prueba toca password, OTP, token, cookie o dato clinico, registra solo el resultado. No pegues valores sensibles en tickets, logs ni capturas.
Evidencia aceptable
Section titled “Evidencia aceptable”| Evidencia | Permitida |
|---|---|
| Status HTTP, ruta, metodo, hora y resultado | Si |
| Nombres de cookies sin valor | Si |
| Flags de cookies | Si |
| Conteo de errores o requests | Si |
| Passwords, OTPs, tokens, cookies completas | No |
| Datos clinicos reales | No |
1. Backend basico
Section titled “1. Backend basico”GET /api/auth/sessionsin cookies devuelve no autenticado.GET /api/auth/csrfdesde origen permitido devuelve token CSRF.- Preflight CORS permitido devuelve 204 y credentials.
- Preflight desde origen no permitido devuelve 403.
- Logs no muestran secretos.
2. Frontend carga
Section titled “2. Frontend carga”https://app.<dominio>carga sin mixed content.- Assets cargan por HTTPS.
- Fallback SPA funciona al refrescar rutas internas.
- Build corresponde a version esperada.
3. Login con cookies
Section titled “3. Login con cookies”- Abrir DevTools Network/Application.
- Cargar
/auth/login. - Confirmar request a
/api/auth/csrf. - Hacer login con usuario QA.
- Confirmar
POST /api/auth/loginconX-CSRF-Token. - Confirmar respuesta JSON sin
tokennirefresh_token. - Confirmar cookies access/refresh
HttpOnly. - Confirmar
/api/auth/sessiondevuelveauthenticated:true.
4. Storage y cookies
Section titled “4. Storage y cookies”localStorageno contienetoken,refreshtoken,refresh_token,permissions,business,tenantOperational.sessionStorageno contiene access/refresh token.document.cookieno muestra access/refresh.document.cookiepuede mostrar cookie CSRF.- Solo
medsync.auth.rememberedIdentifier.v1puede persistir como auth-related long-lived.
5. CSRF
Section titled “5. CSRF”| Prueba | Resultado esperado |
|---|---|
| Mutacion con token valido | 2xx o respuesta de negocio. |
| Mutacion sin header | 403. |
| Mutacion con header invalido | 403. |
| Mutacion sin cookie CSRF | 403. |
| Origin no permitido | 403. |
6. CORS
Section titled “6. CORS”| Prueba | Resultado esperado |
|---|---|
Origin https://app.<dominio> | Allow-Origin exacto, credentials true. |
| Origin malicioso | No credentials, preflight 403. |
| Wildcard con credentials | No debe aparecer. |
7. Refresh
Section titled “7. Refresh”- Esperar expiracion o forzar flujo QA.
POST /api/auth/refreshTokenno envia token en body para navegador.- Refresh lee cookie
HttpOnly. - Cookies nuevas se setean.
/api/auth/sessionsigue autenticado.
Nota: el refresh cookie-only ya se corrigio y valido localmente; repetir este smoke en production-like.
8. Logout y 401
Section titled “8. Logout y 401”- Logout llama
/api/auth/close. - Cookies access/refresh/CSRF se expiran.
- Runtime Vuex queda anonimo.
- Session posterior devuelve no autenticado.
- 401 por sesion cerrada limpia storage/runtime y redirige a login.
9. Roles, tenant y Super Admin
Section titled “9. Roles, tenant y Super Admin”- Usuario bloqueado/inactivo hace hard-block en login: error generico, sin sesion, sin access cookie y sin refresh cookie.
- Tenant restricted/suspended/inactive hace hard-block en login: error generico, sin sesion, sin access cookie, sin refresh cookie y sin datos clinicos.
/tenant-restrictedse prueba solo con una sesion ya existente que luego recibetenantOperational.allowed=false, por cambio de estado del tenant o por/api/auth/session.- No debe existir login limitado para tenant restricted en el rollout inicial.
- Super Admin puede cerrar sesion individual QA.
- Super Admin puede cerrar sesiones masivas QA.
- Usuario afectado recibe 401 en siguiente request.
10. Reset password
Section titled “10. Reset password”sendOtpcon SMTP sandbox envia correo seguro.validateOtpacepta codigo valido.resetPasswordactualiza password.- Password anterior falla.
- Password nueva funciona.
- Sesiones y refresh tokens previos quedan invalidados.
11. Flujo clinico minimo
Section titled “11. Flujo clinico minimo”Con doctor QA y paciente QA ficticio:
- Abrir dashboard.
- Abrir paciente.
- Consultar historia clinica.
- Consultar documentos/firmas.
- Consultar treatment plan.
- Ejecutar una mutacion clinica no destructiva o fixture controlado con CSRF valido.
- Confirmar que no hay
Authorizationmanual ni tokens en storage.