mirror of
https://github.com/dredx/prole.git
synced 2026-09-23 12:03:59 +00:00
129 lines
3.4 KiB
Python
129 lines
3.4 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
import knoe.ui.screens.deploy as deploy_mod
|
|
from knoe.ui.screens.deploy import DeployScreenMixin
|
|
|
|
|
|
class _Var:
|
|
def __init__(self, value):
|
|
self._value = value
|
|
|
|
def get(self):
|
|
return self._value
|
|
|
|
|
|
class _PropsApp(DeployScreenMixin):
|
|
def __init__(self):
|
|
self.kerberos_enabled = _Var(True)
|
|
self.kerberos_realm = _Var("PROLE.ORG")
|
|
self.kerberos_user = _Var("administrator")
|
|
self.kerberos_kdc = _Var("10.0.0.3")
|
|
|
|
|
|
def test_generate_knoe_properties_dev_writes_local_endpoints(tmp_path, monkeypatch):
|
|
(tmp_path / "knoe-tools-app").mkdir(parents=True)
|
|
monkeypatch.chdir(tmp_path)
|
|
|
|
app = _PropsApp()
|
|
app.generate_knoe_properties("Dev")
|
|
|
|
content = (tmp_path / "knoe-tools-app" / "knoe.properties").read_text()
|
|
assert "pf.enabled=true" in content
|
|
assert "svc.1.host=localhost" in content
|
|
assert "svc.7.port=9402" in content
|
|
|
|
|
|
def test_generate_knoe_properties_service_and_prod_skip_service_endpoints(
|
|
tmp_path, monkeypatch
|
|
):
|
|
(tmp_path / "knoe-tools-app").mkdir(parents=True)
|
|
monkeypatch.chdir(tmp_path)
|
|
|
|
app = _PropsApp()
|
|
for env in ("Service", "Prod"):
|
|
app.generate_knoe_properties(env)
|
|
content = (tmp_path / "knoe-tools-app" / "knoe.properties").read_text()
|
|
assert "pf.enabled=false" in content
|
|
assert "svc.1.host=" not in content
|
|
assert "Service/Prod endpoint mappings are intentionally not persisted here." in content
|
|
|
|
|
|
class _LabelChild:
|
|
def __init__(self):
|
|
self.text = ""
|
|
|
|
def configure(self, **kwargs):
|
|
self.text = kwargs.get("text", self.text)
|
|
|
|
|
|
class _LabelMaster:
|
|
def __init__(self):
|
|
self._children = [object(), _LabelChild()]
|
|
|
|
def winfo_children(self):
|
|
return self._children
|
|
|
|
|
|
class _Label:
|
|
def __init__(self):
|
|
self.master = _LabelMaster()
|
|
|
|
|
|
class _RunDeploymentApp(DeployScreenMixin):
|
|
def __init__(self, selected_env: str):
|
|
self.deploy_environment = _Var(selected_env)
|
|
self.generated_env = ""
|
|
self.deploy_widgets = {
|
|
"Ensure target cluster": {
|
|
"step": {"name": "Ensure target cluster"},
|
|
"label": _Label(),
|
|
}
|
|
}
|
|
|
|
def generate_knoe_properties(self, env: str):
|
|
self.generated_env = env
|
|
|
|
def update_deploy_step_status(self, *_args, **_kwargs):
|
|
return None
|
|
|
|
def build_knoe_app(self):
|
|
return None
|
|
|
|
def check_docker_running(self):
|
|
return True
|
|
|
|
def ensure_registry_available(self, _env):
|
|
return "registry.local"
|
|
|
|
def create_or_select_cluster(self, _env):
|
|
return None
|
|
|
|
def build_docker_image(self):
|
|
return None
|
|
|
|
def tag_docker_image(self):
|
|
return None
|
|
|
|
def push_docker_image(self):
|
|
return None
|
|
|
|
def import_k3d_image(self, cluster_name=""):
|
|
return None
|
|
|
|
def install_launchagent_port_forwards(self) -> bool:
|
|
return True
|
|
|
|
|
|
def test_run_deployment_normalizes_environment_before_generation(monkeypatch):
|
|
app = _RunDeploymentApp("service")
|
|
monkeypatch.setattr(deploy_mod.messagebox, "showinfo", lambda *_a, **_k: None)
|
|
monkeypatch.setattr(deploy_mod.messagebox, "showerror", lambda *_a, **_k: None)
|
|
|
|
app.run_deployment()
|
|
|
|
assert app.generated_env == "Service"
|
|
ensure_label = app.deploy_widgets["Ensure target cluster"]["label"].master.winfo_children()[1]
|
|
assert "Ensure target cluster (Service)" == ensure_label.text
|