feature/generador-instaladores-linux-windows
This commit is contained in:
@@ -57,7 +57,9 @@ def test_target_db_vacio_devuelve_none():
|
||||
def test_target_ok(monkeypatch):
|
||||
captured = {}
|
||||
|
||||
def fake_get(url, headers=None, timeout=None):
|
||||
# **kwargs porque panel_client también pasa verify=; una firma rígida rompe la prueba
|
||||
# cada vez que se agrega un kwarg al cliente.
|
||||
def fake_get(url, headers=None, timeout=None, **kwargs):
|
||||
captured["url"] = url
|
||||
return FakeResponse(200, VALID_TARGET)
|
||||
|
||||
@@ -116,7 +118,7 @@ def test_target_json_invalido_devuelve_none(monkeypatch):
|
||||
def test_report_job_result_201_true(monkeypatch):
|
||||
captured = {}
|
||||
|
||||
def fake_post(url, json=None, headers=None, timeout=None):
|
||||
def fake_post(url, json=None, headers=None, timeout=None, **kwargs):
|
||||
captured["json"] = json
|
||||
return FakeResponse(201)
|
||||
|
||||
@@ -166,7 +168,7 @@ def test_test_connection_url_invalida():
|
||||
def test_report_instance_config_200_true(monkeypatch):
|
||||
captured = {}
|
||||
|
||||
def fake_post(url, json=None, headers=None, timeout=None):
|
||||
def fake_post(url, json=None, headers=None, timeout=None, **kwargs):
|
||||
captured["url"] = url
|
||||
captured["json"] = json
|
||||
return FakeResponse(200)
|
||||
@@ -256,7 +258,7 @@ CATALOG_RESPONSE = {
|
||||
def test_list_restore_target_names_ok(monkeypatch):
|
||||
captured = {}
|
||||
|
||||
def fake_get(url, headers=None, timeout=None):
|
||||
def fake_get(url, headers=None, timeout=None, **kwargs):
|
||||
captured["url"] = url
|
||||
return FakeResponse(200, CATALOG_RESPONSE)
|
||||
|
||||
@@ -346,7 +348,7 @@ ROUTE_RESTORE_LOCAL = {
|
||||
def test_resolve_route_forward_ok(monkeypatch):
|
||||
captured = {}
|
||||
|
||||
def fake_get(url, headers=None, timeout=None):
|
||||
def fake_get(url, headers=None, timeout=None, **kwargs):
|
||||
captured["url"] = url
|
||||
return FakeResponse(200, ROUTE_FORWARD)
|
||||
|
||||
@@ -379,3 +381,71 @@ def test_resolve_route_forward_sin_input_folder_invalido(monkeypatch):
|
||||
panel_client.requests, "get", lambda *a, **k: FakeResponse(200, bad)
|
||||
)
|
||||
assert panel_client.resolve_route(URL, TOKEN, "X.ZIP") is None
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# platform / arch: el PANEL los usa para elegir qué artefacto le toca a este
|
||||
# servidor al instalar o actualizar (a24c.cras_releases se llavea por
|
||||
# version + platform + arch).
|
||||
# ============================================================================
|
||||
|
||||
|
||||
def _capture_post(monkeypatch) -> dict:
|
||||
captured = {}
|
||||
|
||||
def fake_post(url, json=None, headers=None, timeout=None, **kwargs):
|
||||
captured["url"] = url
|
||||
captured["json"] = json
|
||||
captured["headers"] = headers
|
||||
return FakeResponse(200)
|
||||
|
||||
monkeypatch.setattr(panel_client.requests, "post", fake_post)
|
||||
return captured
|
||||
|
||||
|
||||
def test_report_instance_config_envia_platform_y_arch(monkeypatch):
|
||||
captured = _capture_post(monkeypatch)
|
||||
ok = panel_client.report_instance_config(
|
||||
URL,
|
||||
TOKEN,
|
||||
r"D:\Backups\Entrada",
|
||||
processed_folder=r"D:\Backups\Procesados",
|
||||
host_name="WIN-01",
|
||||
app_version="1.1.0",
|
||||
instance_key="Alfa",
|
||||
platform_name="windows",
|
||||
arch="x86_64",
|
||||
)
|
||||
assert ok is True
|
||||
assert captured["json"]["platform"] == "windows"
|
||||
assert captured["json"]["arch"] == "x86_64"
|
||||
assert captured["json"]["processed_folder"] == r"D:\Backups\Procesados"
|
||||
|
||||
|
||||
def test_report_instance_config_sin_platform_manda_none(monkeypatch):
|
||||
# Compatibilidad hacia atrás: un agente viejo no manda estas claves y el PANEL
|
||||
# debe poder caer al texto libre de restore_targets.os.
|
||||
captured = _capture_post(monkeypatch)
|
||||
panel_client.report_instance_config(URL, TOKEN, r"D:\In")
|
||||
assert captured["json"]["platform"] is None
|
||||
assert captured["json"]["arch"] is None
|
||||
|
||||
|
||||
@pytest.mark.parametrize("blank", ["", " ", None])
|
||||
def test_report_instance_config_platform_en_blanco_es_none(monkeypatch, blank):
|
||||
captured = _capture_post(monkeypatch)
|
||||
panel_client.report_instance_config(
|
||||
URL, TOKEN, r"D:\In", platform_name=blank, arch=blank
|
||||
)
|
||||
assert captured["json"]["platform"] is None
|
||||
assert captured["json"]["arch"] is None
|
||||
|
||||
|
||||
def test_constantes_platform_arch_son_del_vocabulario_del_panel():
|
||||
# El PANEL valida platform contra ('windows','linux'); si esto cambia hay que
|
||||
# actualizar el CHECK de a24c.cras_releases y la validación del endpoint.
|
||||
from app.constants import APP_ARCH, APP_PLATFORM
|
||||
|
||||
assert APP_PLATFORM in ("windows", "linux")
|
||||
assert APP_ARCH and APP_ARCH == APP_ARCH.strip()
|
||||
assert " " not in APP_ARCH
|
||||
|
||||
Reference in New Issue
Block a user