feat: metadata store (CN→email) and .ovpn config builder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Vlad Doloman
2026-06-23 23:52:55 +03:00
parent c93a7b0c00
commit 8a93a1a727
3 changed files with 94 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
import os
from pathlib import Path
from datetime import date
from openvpncertupdate import build_ovpn
def setup_pki(tmp_path, cn, inline_content="<ca>X</ca>"):
pki = tmp_path / "pki"
private_dir = pki / "inline" / "private"
private_dir.mkdir(parents=True)
(private_dir / f"{cn}.inline").write_text(inline_content)
return str(pki)
def test_creates_file_with_combined_content(tmp_path):
pki = setup_pki(tmp_path, "alice", "<ca>CERT</ca>")
tmpl = tmp_path / "t.ovpn"
tmpl.write_text("client\ndev tun\n")
result = build_ovpn("alice", pki, str(tmpl), str(tmp_path / "out"), "vpn.ovpn")
content = Path(result).read_text()
assert "client" in content
assert "CERT" in content
def test_output_path_has_cn_and_date(tmp_path):
pki = setup_pki(tmp_path, "bob")
tmpl = tmp_path / "t.ovpn"; tmpl.write_text("")
today = date.today().strftime("%Y-%m-%d")
result = build_ovpn("bob", pki, str(tmpl), str(tmp_path / "out"), "vpn.ovpn")
assert f"bob_{today}" in result
assert result.endswith("vpn.ovpn")

16
tests/test_metadata.py Normal file
View File

@@ -0,0 +1,16 @@
from openvpncertupdate import load_metadata, save_email, get_email
def test_load_empty(tmp_path):
assert load_metadata(str(tmp_path)) == {}
def test_save_and_get(tmp_path):
save_email(str(tmp_path), "alice", "alice@example.com")
assert get_email(str(tmp_path), "alice") == "alice@example.com"
def test_update_existing(tmp_path):
save_email(str(tmp_path), "alice", "old@example.com")
save_email(str(tmp_path), "alice", "new@example.com")
assert get_email(str(tmp_path), "alice") == "new@example.com"
def test_missing_returns_empty(tmp_path):
assert get_email(str(tmp_path), "nobody") == ""