fix: resolve per-torrent qb save paths
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import io
|
||||
import json
|
||||
import os
|
||||
import tempfile
|
||||
import unittest
|
||||
from contextlib import redirect_stdout
|
||||
from pathlib import Path
|
||||
|
||||
from archive_clients.cli import main
|
||||
|
||||
|
||||
class ClientCliTests(unittest.TestCase):
|
||||
def test_check_config_probes_every_qb_override_root(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
for name in ("token", "qb-password", "syncthing-key"):
|
||||
path = root / name
|
||||
path.write_text(name, encoding="utf-8")
|
||||
os.chmod(path, 0o600)
|
||||
for name in ("qb", "qb-fast", "sync", "backups"):
|
||||
(root / name).mkdir()
|
||||
config = root / "client.toml"
|
||||
config.write_text(
|
||||
f'''client_id = "cache-1"
|
||||
display_name = "Cache 1"
|
||||
role = "cache"
|
||||
control_endpoint = "ws://control/archive_control"
|
||||
shared_token_file = "{root / "token"}"
|
||||
state_db = "{root / "state.db"}"
|
||||
backup_dir = "{root / "backups"}"
|
||||
|
||||
[qbittorrent]
|
||||
endpoint = "http://qb"
|
||||
username = "admin"
|
||||
password_file = "{root / "qb-password"}"
|
||||
api_root = "/downloads"
|
||||
local_root = "{root / "qb"}"
|
||||
local_path_overrides = {{ "/downloads/fast" = "{root / "qb-fast"}" }}
|
||||
|
||||
[syncthing]
|
||||
endpoint = "http://syncthing"
|
||||
api_key_file = "{root / "syncthing-key"}"
|
||||
api_root = "/sync"
|
||||
local_root = "{root / "sync"}"
|
||||
''',
|
||||
encoding="utf-8",
|
||||
)
|
||||
output = io.StringIO()
|
||||
with redirect_stdout(output):
|
||||
self.assertEqual(main(["--config", str(config), "--check-config"]), 0)
|
||||
reported = json.loads(output.getvalue())
|
||||
self.assertEqual(
|
||||
[item["root"] for item in reported["filesystems"]],
|
||||
[str(root / "qb"), str(root / "qb-fast"), str(root / "sync")],
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user