Files
tapehoard/backend/tests/test_api_system.py
T
adamlamers 0bfd5affb4
Continuous Integration / backend-tests (push) Successful in 11m41s
Continuous Integration / frontend-check (push) Successful in 10m54s
tests & remove is_indexed flag from db
2026-04-28 23:55:39 -04:00

96 lines
3.0 KiB
Python

from datetime import datetime, timezone
from app.db import models
def test_get_dashboard_stats_empty(client):
"""Tests the dashboard stats endpoint when the database is empty."""
response = client.get("/system/dashboard/stats")
assert response.status_code == 200
data = response.json()
assert data["total_data_size"] == 0
assert data["unprotected_files_count"] == 0
assert data["media_distribution"] == {"LTO": 0, "HDD": 0, "Cloud": 0}
def test_get_dashboard_stats_populated(client, db_session):
"""Tests the dashboard stats endpoint with actual data."""
# Add a file
file_state = models.FilesystemState(
file_path="/source_data/file1.txt",
size=1024,
mtime=datetime.now(timezone.utc).timestamp(),
is_ignored=False,
)
db_session.add(file_state)
db_session.commit()
response = client.get("/system/dashboard/stats")
assert response.status_code == 200
data = response.json()
assert data["unprotected_files_count"] == 1
assert data["unprotected_data_size"] == 1024
def test_get_settings_empty(client):
"""Tests retrieving settings when none are set."""
response = client.get("/system/settings")
assert response.status_code == 200
assert response.json() == {}
def test_update_settings(client):
"""Tests updating a system setting."""
response = client.post(
"/system/settings", json={"key": "schedule_scan", "value": "0 2 * * *"}
)
assert response.status_code == 200
assert response.json() == {"message": "Setting committed."}
# Verify retrieval
response = client.get("/system/settings")
assert response.json()["schedule_scan"] == "0 2 * * *"
def test_list_jobs_empty(client):
"""Tests listing jobs when none exist."""
response = client.get("/system/jobs")
assert response.status_code == 200
assert response.json() == []
def test_trigger_scan(client):
"""Tests triggering a system scan."""
response = client.post("/system/scan")
assert response.status_code == 200
assert "job_id" in response.json()
assert response.json()["message"] == "Scan started"
def test_get_scan_status(client):
"""Tests retrieving the scanner status."""
response = client.get("/system/scan/status")
assert response.status_code == 200
data = response.json()
assert "is_running" in data
assert "files_processed" in data
def test_ls_root(client):
"""Tests listing the root directory."""
response = client.get("/system/ls?path=/")
assert response.status_code == 200
assert isinstance(response.json(), list)
def test_ignore_hardware(client):
"""Tests adding a hardware identifier to the ignore list."""
response = client.post("/system/hardware/ignore", json={"identifier": "DISK_001"})
assert response.status_code == 200
assert response.json() == {"message": "Hardware node ignored."}
# Verify in settings
response = client.get("/system/settings")
assert "ignored_hardware" in response.json()
assert "DISK_001" in response.json()["ignored_hardware"]