From d1cd4c3132e0d740de84daf2aaf61efb9f7474af Mon Sep 17 00:00:00 2001 From: Vlad Doloman Date: Sat, 15 Aug 2026 05:37:57 +0300 Subject: [PATCH] Wire the TUI Days field through to build-client-full --- openvpncertupdate.py | 5 +++-- tests/test_app_reissue.py | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/openvpncertupdate.py b/openvpncertupdate.py index 6804c1c..1266f30 100644 --- a/openvpncertupdate.py +++ b/openvpncertupdate.py @@ -1244,7 +1244,8 @@ class CursesApp: self, stdscr, cn: str, email: str, is_renewal: bool, ) -> bool: """Form → generate → deliver. Returns False if user cancelled.""" - form = show_cert_form(stdscr, cn=cn, email=email, cn_readonly=is_renewal) + form = show_cert_form(stdscr, cn=cn, email=email, days=CERT_DAYS, + cn_readonly=is_renewal) if not form.confirmed: return False @@ -1288,7 +1289,7 @@ class CursesApp: try: build_client_full(EASYRSA_DIR, EASYRSA_PKI_DIR, final_cn, form.password, CA_PASSPHRASE, - email=form.email) + email=form.email, days=form.days) except EasyRSAError as exc: if revoked: self._error( diff --git a/tests/test_app_reissue.py b/tests/test_app_reissue.py index dab387e..f9d4351 100644 --- a/tests/test_app_reissue.py +++ b/tests/test_app_reissue.py @@ -90,3 +90,22 @@ def test_tui_skipped_revoke_build_failure_does_not_claim_revocation(monkeypatch) lambda self, stdscr, text: shown.append(text)) app._process_cert(_stdscr(), "y.kuts", "", is_renewal=True) assert shown and "has been revoked" not in shown[0] + + +def test_tui_seeds_days_field_from_cert_days(monkeypatch): + import openvpncertupdate as m + _patch_workflow(monkeypatch, cert_file_present=True) + monkeypatch.setattr("openvpncertupdate.CERT_DAYS", "90") + CursesApp()._process_cert(_stdscr(), "y.kuts", "", is_renewal=True) + assert m.show_cert_form.call_args.kwargs["days"] == "90" + + +def test_tui_forwards_form_days_to_build_client_full(monkeypatch): + mocks = _patch_workflow(monkeypatch, cert_file_present=True) + monkeypatch.setattr( + "openvpncertupdate.show_cert_form", + MagicMock(return_value=CertFormResult( + cn="y.kuts", email="", password="Testpass1234567890abcdefgh", + days="30", confirmed=True))) + CursesApp()._process_cert(_stdscr(), "y.kuts", "", is_renewal=True) + assert mocks["build_client_full"].call_args.kwargs["days"] == "30"