feat(tests): Añadido soporte de autenticación con access token en tests GET de todos los módulos de reference_data. Ahora los tests usan un fixture access_token y envían el header Authorization. Módulos actualizados: containers, countries, currency_types, material_types, states, valuation_methods, incoterms, payment_methods, sectors, customs_sections, customs_warehouses, invoice_types, pedimento_codes, pedimento_regimens, code_pedimento_regimens, transport_modes, transport_types.
This commit is contained in:
@@ -4,7 +4,7 @@ Configuración de base de datos con soporte multi-tenant
|
||||
- Bases de datos dedicadas para clientes enterprise
|
||||
"""
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker, Session
|
||||
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
|
||||
from typing import Generator, Dict, Optional, AsyncGenerator
|
||||
|
||||
@@ -25,26 +25,24 @@ class TenantMiddleware(BaseHTTPMiddleware):
|
||||
|
||||
async def dispatch(self, request: Request, call_next: Callable):
|
||||
# Rutas públicas que no requieren tenant
|
||||
public_paths = [
|
||||
"/api/docs",
|
||||
# Permitir acceso sin autenticación a rutas de documentación y salud
|
||||
doc_prefixes = [
|
||||
"/api/redoc",
|
||||
"/api/openapi.json",
|
||||
"/api/v1/auth",
|
||||
"/api/v1/auth",
|
||||
"/api/v1/status",
|
||||
"/api/openapi.json"
|
||||
]
|
||||
public_prefixes = [
|
||||
"/api/v1/auth",
|
||||
"/api/v1/status",
|
||||
"/api/health",
|
||||
"/api/"
|
||||
]
|
||||
|
||||
# Verificar si la ruta es pública (comparación exacta o prefijo)
|
||||
is_public = False
|
||||
for path in public_paths:
|
||||
if request.url.path == path or (path != "/" and request.url.path.startswith(path)):
|
||||
is_public = True
|
||||
break
|
||||
|
||||
if is_public:
|
||||
|
||||
path = request.url.path
|
||||
# Permitir cualquier subruta de docs/redoc/openapi.json (por ejemplo, /api/docs, /api/docs/, /api/docs/oauth2-redirect)
|
||||
if any(path == prefix or path.startswith(prefix + "/") for prefix in doc_prefixes):
|
||||
return await call_next(request)
|
||||
# Permitir rutas públicas exactas o con prefijo
|
||||
if any(path == prefix or (prefix != "/" and path.startswith(prefix)) for prefix in public_prefixes):
|
||||
return await call_next(request)
|
||||
|
||||
# Extraer token y obtener tenant
|
||||
|
||||
Reference in New Issue
Block a user