Add backup interval setting and throttled backups

This commit is contained in:
thePR0M3TH3AN
2025-07-13 11:30:47 -04:00
parent 51acd21478
commit ba53cf2332
6 changed files with 72 additions and 1 deletions

View File

@@ -0,0 +1,34 @@
import time
from pathlib import Path
from tempfile import TemporaryDirectory
from helpers import create_vault, TEST_SEED, TEST_PASSWORD
from password_manager.backup import BackupManager
from password_manager.config_manager import ConfigManager
def test_backup_interval(monkeypatch):
with TemporaryDirectory() as tmpdir:
fp_dir = Path(tmpdir)
vault, _ = create_vault(fp_dir, TEST_SEED, TEST_PASSWORD)
cfg_mgr = ConfigManager(vault, fp_dir)
cfg_mgr.set_backup_interval(10)
backup_mgr = BackupManager(fp_dir, cfg_mgr)
vault.save_index({"entries": {}})
monkeypatch.setattr(time, "time", lambda: 1000)
backup_mgr.create_backup()
first = fp_dir / "backups" / "entries_db_backup_1000.json.enc"
assert first.exists()
monkeypatch.setattr(time, "time", lambda: 1005)
backup_mgr.create_backup()
second = fp_dir / "backups" / "entries_db_backup_1005.json.enc"
assert not second.exists()
monkeypatch.setattr(time, "time", lambda: 1012)
backup_mgr.create_backup()
third = fp_dir / "backups" / "entries_db_backup_1012.json.enc"
assert third.exists()

View File

@@ -14,6 +14,7 @@ runner = CliRunner()
("secret_mode_enabled", "true", "set_secret_mode_enabled", True),
("clipboard_clear_delay", "10", "set_clipboard_clear_delay", 10),
("additional_backup_path", "", "set_additional_backup_path", None),
("backup_interval", "5", "set_backup_interval", 5.0),
(
"relays",
"wss://a.com, wss://b.com",

View File

@@ -158,3 +158,14 @@ def test_kdf_iterations_round_trip():
cfg_mgr.set_kdf_iterations(200_000)
assert cfg_mgr.get_kdf_iterations() == 200_000
def test_backup_interval_round_trip():
with TemporaryDirectory() as tmpdir:
vault, _ = create_vault(Path(tmpdir), TEST_SEED, TEST_PASSWORD)
cfg_mgr = ConfigManager(vault, Path(tmpdir))
assert cfg_mgr.get_backup_interval() == 0
cfg_mgr.set_backup_interval(15)
assert cfg_mgr.get_backup_interval() == 15