59 lines
2.3 KiB
Python
59 lines
2.3 KiB
Python
"""
|
|
Simple tests for settings API credential handling.
|
|
Focus on critical paths for optional settings with defaults.
|
|
"""
|
|
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
|
|
|
def test_optional_setting_returns_default(client, mock_supabase_client):
|
|
"""Test that optional settings return default values with is_default flag."""
|
|
# Mock the entire credential_service instance
|
|
mock_service = MagicMock()
|
|
mock_service.get_credential = AsyncMock(return_value=None)
|
|
|
|
with patch("src.server.api_routes.settings_api.credential_service", mock_service):
|
|
response = client.get("/api/credentials/DISCONNECT_SCREEN_ENABLED")
|
|
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["key"] == "DISCONNECT_SCREEN_ENABLED"
|
|
assert data["value"] == "true"
|
|
assert data["is_default"] is True
|
|
assert "category" in data
|
|
assert "description" in data
|
|
|
|
|
|
def test_unknown_credential_returns_404(client, mock_supabase_client):
|
|
"""Test that unknown credentials still return 404."""
|
|
# Mock the entire credential_service instance
|
|
mock_service = MagicMock()
|
|
mock_service.get_credential = AsyncMock(return_value=None)
|
|
|
|
with patch("src.server.api_routes.settings_api.credential_service", mock_service):
|
|
response = client.get("/api/credentials/UNKNOWN_KEY_THAT_DOES_NOT_EXIST")
|
|
|
|
assert response.status_code == 404
|
|
data = response.json()
|
|
assert "error" in data["detail"]
|
|
assert "not found" in data["detail"]["error"].lower()
|
|
|
|
|
|
def test_existing_credential_returns_normally(client, mock_supabase_client):
|
|
"""Test that existing credentials return without default flag."""
|
|
mock_value = "user_configured_value"
|
|
# Mock the entire credential_service instance
|
|
mock_service = MagicMock()
|
|
mock_service.get_credential = AsyncMock(return_value=mock_value)
|
|
|
|
with patch("src.server.api_routes.settings_api.credential_service", mock_service):
|
|
response = client.get("/api/credentials/SOME_EXISTING_KEY")
|
|
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["key"] == "SOME_EXISTING_KEY"
|
|
assert data["value"] == "user_configured_value"
|
|
assert data["is_encrypted"] is False
|
|
# Should not have is_default flag for real credentials
|
|
assert "is_default" not in data
|