fixes and improvements
This commit is contained in:
@@ -23,6 +23,7 @@ from media_library_viewer_api.dependencies import (
|
||||
from media_library_viewer_api.clients.ssh import CommandResult
|
||||
from media_library_viewer_api.routers.media import get_media_index
|
||||
from media_library_viewer_api.services.media_index import MediaIndex
|
||||
from media_library_viewer_api.services.settings_store import SettingsStore
|
||||
|
||||
|
||||
# --- Fixtures ---
|
||||
@@ -263,6 +264,69 @@ class TestDashboard:
|
||||
assert len(data) == 2
|
||||
|
||||
|
||||
# --- Settings reset ---
|
||||
|
||||
class TestSettingsReset:
|
||||
def test_reset_local_database_requires_full_confirmation(self, test_client, tmp_path):
|
||||
store = SettingsStore(tmp_path / "settings.sqlite")
|
||||
store.ensure_defaults()
|
||||
media_db = tmp_path / "media.sqlite"
|
||||
media_db.write_text("placeholder", encoding="utf-8")
|
||||
media_wal = tmp_path / "media.sqlite-wal"
|
||||
media_wal.write_text("wal", encoding="utf-8")
|
||||
|
||||
app.dependency_overrides[get_settings_store] = lambda: store
|
||||
settings_module = __import__("media_library_viewer_api.routers.settings", fromlist=["MediaIndex"])
|
||||
original_media_index = settings_module.MediaIndex
|
||||
settings_module.MediaIndex = lambda: SimpleNamespace(db_path=media_db)
|
||||
try:
|
||||
response = test_client.post(
|
||||
"/api/settings/reset-local-database",
|
||||
json={
|
||||
"confirm_phrase": "RESET LOCAL DATABASE",
|
||||
"acknowledge_settings_loss": True,
|
||||
"acknowledge_media_index_loss": False,
|
||||
"acknowledge_irreversible": True,
|
||||
},
|
||||
)
|
||||
finally:
|
||||
app.dependency_overrides.pop(get_settings_store, None)
|
||||
settings_module.MediaIndex = original_media_index
|
||||
assert response.status_code == 400
|
||||
|
||||
def test_reset_local_database_wipes_state_and_reseeds_local_machine(self, test_client, tmp_path):
|
||||
store = SettingsStore(tmp_path / "settings.sqlite")
|
||||
store.ensure_defaults()
|
||||
media_db = tmp_path / "media.sqlite"
|
||||
media_db.write_text("placeholder", encoding="utf-8")
|
||||
media_wal = tmp_path / "media.sqlite-wal"
|
||||
media_wal.write_text("wal", encoding="utf-8")
|
||||
|
||||
app.dependency_overrides[get_settings_store] = lambda: store
|
||||
settings_module = __import__("media_library_viewer_api.routers.settings", fromlist=["MediaIndex"])
|
||||
original_media_index = settings_module.MediaIndex
|
||||
settings_module.MediaIndex = lambda: SimpleNamespace(db_path=media_db)
|
||||
try:
|
||||
response = test_client.post(
|
||||
"/api/settings/reset-local-database",
|
||||
json={
|
||||
"confirm_phrase": "RESET LOCAL DATABASE",
|
||||
"acknowledge_settings_loss": True,
|
||||
"acknowledge_media_index_loss": True,
|
||||
"acknowledge_irreversible": True,
|
||||
},
|
||||
)
|
||||
finally:
|
||||
app.dependency_overrides.pop(get_settings_store, None)
|
||||
settings_module.MediaIndex = original_media_index
|
||||
assert response.status_code == 200
|
||||
payload = response.json()
|
||||
assert payload["status"] == "reset"
|
||||
assert not media_db.exists()
|
||||
assert not media_wal.exists()
|
||||
assert store.get_machine("local") is not None
|
||||
assert len(store.list_machines()) == 1
|
||||
|
||||
# --- Users ---
|
||||
|
||||
class TestUsers:
|
||||
|
||||
Reference in New Issue
Block a user