feat(infra): auto-commit con 56 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
"""Tests para render_caddyfile."""
|
||||
|
||||
from render_caddyfile import render_caddyfile
|
||||
|
||||
HEADER = (
|
||||
"# Generado por render_caddyfile_py_infra — NO editar a mano. "
|
||||
"Fuente: apps/local_hub/local_services.yaml\n"
|
||||
)
|
||||
|
||||
|
||||
def test_golden_dos_servicios_ordenados():
|
||||
services = [
|
||||
{"subdomain": "metabase", "port": 3030},
|
||||
{"subdomain": "grafana", "port": 3000},
|
||||
]
|
||||
result = render_caddyfile(services)
|
||||
expected = (
|
||||
HEADER
|
||||
+ "http://grafana.localhost {\n"
|
||||
+ " reverse_proxy 127.0.0.1:3000\n"
|
||||
+ "}\n"
|
||||
+ "http://metabase.localhost {\n"
|
||||
+ " reverse_proxy 127.0.0.1:3030\n"
|
||||
+ "}\n"
|
||||
)
|
||||
assert result == expected
|
||||
# Orden alfabetico: grafana antes que metabase pese al orden de entrada.
|
||||
assert result.index("grafana.localhost") < result.index("metabase.localhost")
|
||||
# Termina con un unico newline.
|
||||
assert result.endswith("}\n")
|
||||
assert not result.endswith("\n\n")
|
||||
|
||||
|
||||
def test_dashboard_va_primero():
|
||||
services = [{"subdomain": "metabase", "port": 3030}]
|
||||
dashboard = {"subdomain": "home", "port": 8585}
|
||||
result = render_caddyfile(services, dashboard=dashboard)
|
||||
expected = (
|
||||
HEADER
|
||||
+ "http://home.localhost {\n"
|
||||
+ " reverse_proxy 127.0.0.1:8585\n"
|
||||
+ "}\n"
|
||||
+ "http://metabase.localhost {\n"
|
||||
+ " reverse_proxy 127.0.0.1:3030\n"
|
||||
+ "}\n"
|
||||
)
|
||||
assert result == expected
|
||||
# El dashboard aparece antes que cualquier servicio.
|
||||
assert result.index("home.localhost") < result.index("metabase.localhost")
|
||||
|
||||
|
||||
def test_lista_vacia_solo_cabecera():
|
||||
result = render_caddyfile([])
|
||||
assert result == HEADER
|
||||
|
||||
|
||||
def test_servicio_sin_port_se_ignora():
|
||||
services = [
|
||||
{"subdomain": "valido", "port": 9000},
|
||||
{"subdomain": "sin_port"},
|
||||
]
|
||||
result = render_caddyfile(services)
|
||||
expected = (
|
||||
HEADER
|
||||
+ "http://valido.localhost {\n"
|
||||
+ " reverse_proxy 127.0.0.1:9000\n"
|
||||
+ "}\n"
|
||||
)
|
||||
assert result == expected
|
||||
assert "sin_port" not in result
|
||||
|
||||
|
||||
def test_servicio_sin_subdomain_se_ignora():
|
||||
services = [
|
||||
{"subdomain": "valido", "port": 9000},
|
||||
{"port": 1234},
|
||||
]
|
||||
result = render_caddyfile(services)
|
||||
assert "1234" not in result
|
||||
assert result.count("reverse_proxy") == 1
|
||||
|
||||
|
||||
def test_rewrite_host_emite_header_up():
|
||||
services = [{"subdomain": "jupyter", "port": 8888, "rewrite_host": True}]
|
||||
result = render_caddyfile(services)
|
||||
expected = (
|
||||
HEADER
|
||||
+ "http://jupyter.localhost {\n"
|
||||
+ " reverse_proxy 127.0.0.1:8888 {\n"
|
||||
+ " header_up Host 127.0.0.1:8888\n"
|
||||
+ " }\n"
|
||||
+ "}\n"
|
||||
)
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_rewrite_host_ausente_o_falso_no_reescribe():
|
||||
# Sin la clave -> bloque simple.
|
||||
assert "header_up" not in render_caddyfile([{"subdomain": "a", "port": 1}])
|
||||
# Con rewrite_host falsy -> bloque simple.
|
||||
assert "header_up" not in render_caddyfile(
|
||||
[{"subdomain": "a", "port": 1, "rewrite_host": False}]
|
||||
)
|
||||
Reference in New Issue
Block a user