import io import sys import urllib.request import json import ssl if sys.platform == 'win32': sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace') ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE API_URL = "https://pacifictrans.almeira.com.co" print("1. Consultando tarifas activas...") req = urllib.request.Request(f"{API_URL}/api/tariffs") with urllib.request.urlopen(req, context=ctx, timeout=10) as res: data = json.loads(res.read().decode("utf-8")) config = data.get("config", {}) print(f" Tarifa Pasajero: ${config.get('tarifaPasajeroFija'):,} COP") print(f" Precio Base Paquete: ${config.get('precioBasePaquete'):,} COP") print(f" Recargo Envio Urgente: ${config.get('recargoEnvioUrgente', 0):,} COP") assert "recargoEnvioUrgente" in config, "recargoEnvioUrgente debe estar en la configuracion de tarifas" print("\n2. Simulando despacho de paquete urgente...") payload_urgent = { "remitenteNombre": "Carlos Almeira", "remitenteTelefono": "3167455877", "destinatarioNombre": "Destinatario Test", "destinatarioTelefono": "3101234567", "tipoBulto": "SOBRE", "descripcion": "Documentos urgentes de prueba", "direccionRecogida": "Calle 5 #66-20, Cali", "coordenadasRecogida": [-76.5320, 3.4215], "ciudadOrigen": "CALI", "direccionEntrega": "Terminal Buenaventura", "coordenadasEntrega": [-77.0250, 3.8820], "ciudadDestino": "BUENAVENTURA", "esEnvioUrgente": True, "modalidadTiempo": "INMEDIATO" } req_flete = urllib.request.Request( f"{API_URL}/api/trips/package", data=json.dumps(payload_urgent).encode("utf-8"), headers={"Content-Type": "application/json"} ) with urllib.request.urlopen(req_flete, context=ctx, timeout=10) as res: cotizacion = json.loads(res.read().decode("utf-8")) print(f" Resultado paquete: success={cotizacion.get('success')}") trip = cotizacion.get('trip', {}) print(f" Total flete urgente: ${trip.get('precio', 0):,} COP") print(f" Modalidad tiempo: {trip.get('modalidadTiempo')}") print(f" Es urgente: {trip.get('esEnvioUrgente')}") print(f" Recargo urgencia aplicado: ${trip.get('recargoUrgencia', 0):,} COP") print("\n3. Simulando reserva de pasajero programada (Llegada en destino)...") payload_pool = { "sentido": "CALI_A_BUENAVENTURA", "direccionTexto": "Calle 5 #66-20, Cali", "coordenadas": [-76.5320, 3.4215], "puntoFijoBuenaventura": { "nombre": "Terminal de Transportes de Buenaventura", "coordenadas": [-77.0250, 3.8820] }, "cantidadPasajeros": 1, "pasajeros": [ { "nombre": "Carlos Almeira", "telefono": "3167455877", "direccionRecogida": "Calle 5 #66-20, Cali" } ], "metodoPago": "EFECTIVO", "modalidadTiempo": "PROGRAMADO", "tipoProgramacion": "HORA_LLEGADA_DESTINO", "fechaProgramada": "2026-10-25", "horaProgramada": "14:00", "horaSugeridaRecogida": "11:00" } req_pool = urllib.request.Request( f"{API_URL}/api/trips/pool", data=json.dumps(payload_pool).encode("utf-8"), headers={"Content-Type": "application/json"} ) with urllib.request.urlopen(req_pool, context=ctx, timeout=10) as res: pool_res = json.loads(res.read().decode("utf-8")) print(f" Resultado pooling: success={pool_res.get('success')}") trip_p = pool_res.get('trip', {}) print(f" Modalidad viaje: {trip_p.get('modalidadTiempo')}") print(f" Tipo programacion: {trip_p.get('tipoProgramacion')}") print(f" Fecha programada: {trip_p.get('fechaProgramada')}") print(f" Hora en destino: {trip_p.get('horaProgramada')}") print(f" Hora sugerida recogida: {trip_p.get('horaSugeridaRecogida')}") print("\n4. Verificando que index.html contenga los selectores de modalidad de tiempo...") req_html = urllib.request.Request(f"{API_URL}/") with urllib.request.urlopen(req_html, context=ctx, timeout=10) as res: html = res.read().decode("utf-8") assert "time-modality-container" in html, "Falta time-modality-container en HTML" assert "smart-eta-box" in html, "Falta smart-eta-box en HTML" assert "cfg-recargo-urgente" in html, "Falta cfg-recargo-urgente en HTML" print(" [OK] Elementos visuales y selectores de tiempo presentes en el frontend.") print("\n[OK] Verificacion completa de modalidades de viaje y fletes superada con 100% de exito.")