feat: --show-eml outputs base64-encoded .eml; implies --no-send-email by default
This commit is contained in:
@@ -165,7 +165,7 @@ def test_main_dispatches_create(monkeypatch):
|
||||
runner = MagicMock()
|
||||
monkeypatch.setattr("openvpncertupdate.CliRunner", lambda: runner)
|
||||
main()
|
||||
runner.create.assert_called_once_with("alice", "a@b.com", send_email_flag=True)
|
||||
runner.create.assert_called_once_with("alice", "a@b.com", send_email_flag=True, show_eml=False)
|
||||
|
||||
|
||||
def test_main_dispatches_reissue(monkeypatch):
|
||||
@@ -173,7 +173,7 @@ def test_main_dispatches_reissue(monkeypatch):
|
||||
runner = MagicMock()
|
||||
monkeypatch.setattr("openvpncertupdate.CliRunner", lambda: runner)
|
||||
main()
|
||||
runner.reissue.assert_called_once_with("bob", "", send_email_flag=True)
|
||||
runner.reissue.assert_called_once_with("bob", "", send_email_flag=True, show_eml=False)
|
||||
|
||||
|
||||
def test_main_dispatches_revoke(monkeypatch):
|
||||
@@ -219,4 +219,82 @@ def test_main_no_send_email_flag(monkeypatch):
|
||||
runner = MagicMock()
|
||||
monkeypatch.setattr("openvpncertupdate.CliRunner", lambda: runner)
|
||||
main()
|
||||
runner.reissue.assert_called_once_with("bob", "", send_email_flag=False)
|
||||
runner.reissue.assert_called_once_with("bob", "", send_email_flag=False, show_eml=False)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# --show-eml
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def test_show_eml_outputs_base64(monkeypatch, capsys, tmp_path):
|
||||
"""--show-eml prints a non-empty base64 string to stdout."""
|
||||
import base64 as _b64
|
||||
# Write a minimal template and .ovpn so build_mime_message can read them
|
||||
template = tmp_path / "tpl.txt"
|
||||
template.write_text("Hi {cn}, url={url}, cfg={config_name}")
|
||||
ovpn = tmp_path / "c.ovpn"
|
||||
ovpn.write_bytes(b"ovpn-data")
|
||||
|
||||
mocks = _patch_issue(monkeypatch, ovpn_path=str(ovpn))
|
||||
import openvpncertupdate as m
|
||||
monkeypatch.setattr(m, "EMAIL_TEMPLATE_PATH", str(template))
|
||||
monkeypatch.setattr(m, "build_mime_message",
|
||||
m.build_mime_message) # keep real implementation
|
||||
|
||||
CliRunner().create("alice", "alice@example.com",
|
||||
send_email_flag=False, show_eml=True)
|
||||
out = capsys.readouterr().out
|
||||
# Find the base64 block (before the "config:" line)
|
||||
b64_line = [l for l in out.splitlines() if l and not l.startswith(("config:", "password"))][0]
|
||||
decoded = _b64.b64decode(b64_line)
|
||||
assert b"alice@example.com" in decoded
|
||||
assert b"alice" in decoded
|
||||
|
||||
|
||||
def test_show_eml_implies_no_send(monkeypatch, capsys):
|
||||
"""--show-eml without --send-email must not call send_email."""
|
||||
mocks = _patch_issue(monkeypatch)
|
||||
import openvpncertupdate as m
|
||||
monkeypatch.setattr(m, "build_mime_message", MagicMock(
|
||||
return_value=MagicMock(as_bytes=MagicMock(return_value=b"eml"))
|
||||
))
|
||||
CliRunner().create("alice", "alice@example.com",
|
||||
send_email_flag=False, show_eml=True)
|
||||
mocks["send_email"].assert_not_called()
|
||||
|
||||
|
||||
def test_show_eml_with_send_email_still_sends(monkeypatch, capsys):
|
||||
"""--show-eml --send-email: both show eml and send."""
|
||||
mocks = _patch_issue(monkeypatch)
|
||||
import openvpncertupdate as m
|
||||
monkeypatch.setattr(m, "build_mime_message", MagicMock(
|
||||
return_value=MagicMock(as_bytes=MagicMock(return_value=b"eml"))
|
||||
))
|
||||
CliRunner().create("alice", "alice@example.com",
|
||||
send_email_flag=True, show_eml=True)
|
||||
mocks["send_email"].assert_called_once()
|
||||
|
||||
|
||||
def test_main_show_eml_defaults_to_no_send(monkeypatch):
|
||||
"""--show-eml with no explicit --send-email → send_email_flag=False."""
|
||||
monkeypatch.setattr(sys, "argv",
|
||||
["prog", "--create", "alice", "--email", "a@b.com", "--show-eml"])
|
||||
runner = MagicMock()
|
||||
monkeypatch.setattr("openvpncertupdate.CliRunner", lambda: runner)
|
||||
main()
|
||||
runner.create.assert_called_once_with(
|
||||
"alice", "a@b.com", send_email_flag=False, show_eml=True
|
||||
)
|
||||
|
||||
|
||||
def test_main_show_eml_send_email_override(monkeypatch):
|
||||
"""--show-eml --send-email → send_email_flag=True."""
|
||||
monkeypatch.setattr(sys, "argv",
|
||||
["prog", "--create", "alice", "--email", "a@b.com",
|
||||
"--show-eml", "--send-email"])
|
||||
runner = MagicMock()
|
||||
monkeypatch.setattr("openvpncertupdate.CliRunner", lambda: runner)
|
||||
main()
|
||||
runner.create.assert_called_once_with(
|
||||
"alice", "a@b.com", send_email_flag=True, show_eml=True
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user