Add email delivery for generated reports

This commit is contained in:
2026-05-20 15:04:17 +02:00
parent 152e7fd181
commit a19039a4fb
11 changed files with 454 additions and 3 deletions
+49 -1
View File
@@ -9,7 +9,7 @@ from pve_backup_report.cli import (
ensure_writable_directory,
run,
)
from pve_backup_report.config import AppConfig, PbsServerConfig
from pve_backup_report.config import AppConfig, EmailConfig, PbsServerConfig
def test_cli_check_config(tmp_path, monkeypatch) -> None:
@@ -198,3 +198,51 @@ def test_configured_pbs_clients_uses_every_configured_server() -> None:
finally:
for client in clients:
client.close()
def test_generate_pdf_sends_email_when_enabled(tmp_path, monkeypatch) -> None:
pdf_path = tmp_path / "rapport.pdf"
pdf_path.write_bytes(b"%PDF-1.7")
config = AppConfig(
pve_api_url="https://pve.example.invalid:8006",
pve_api_token_id="backup-report@pve!report",
pve_api_token_secret="secret",
report_output_dir=tmp_path,
report_timezone="Europe/Paris",
pve_verify_tls=True,
pve_ca_bundle=None,
pve_timeout_seconds=30,
pve_backup_jobs_endpoint="/cluster/backup",
pve_task_history_limit=500,
pve_task_log_limit=5000,
pbs_hostnames={},
pbs_servers=(),
log_level="INFO",
report_filename_prefix="rapport-sauvegardes-pve",
email=EmailConfig(
enabled=True,
smtp_host="smtp.example.invalid",
smtp_from="report@example.invalid",
smtp_to=("admin@example.invalid",),
),
)
sent = []
monkeypatch.setattr("pve_backup_report.cli.load_config", lambda: config)
monkeypatch.setattr(
"pve_backup_report.cli.collect_data_or_log_error",
lambda loaded_config, label: ReportData(),
)
monkeypatch.setattr(
"pve_backup_report.cli.render_pdf",
lambda *args: pdf_path,
)
monkeypatch.setattr(
"pve_backup_report.cli.send_report_email",
lambda email_config, generated_pdf_path: sent.append(
(email_config.smtp_host, generated_pdf_path)
),
)
assert run(["--generate-pdf"]) == 0
assert sent == [("smtp.example.invalid", pdf_path)]