feat: add Authentik access widgets

This commit is contained in:
Developer
2026-07-14 21:41:24 +00:00
parent 4562a9dfca
commit 17976eab80
21 changed files with 1082 additions and 214 deletions
+27 -1
View File
@@ -5,7 +5,7 @@ from __future__ import annotations
import time
from types import SimpleNamespace
from typing import Any
from unittest.mock import patch
from unittest.mock import MagicMock, patch
import pytest
from cryptography.fernet import Fernet
@@ -16,6 +16,7 @@ from media_library_viewer_api.main import app
from media_library_viewer_api.services.settings_store import SettingsStore
from media_library_viewer_api.widgets.sources import (
AlertmanagerWidgetSource,
AuthentikWidgetSource,
BackupsWidgetSource,
JellyfinWidgetSource,
ServiceRecord,
@@ -416,6 +417,31 @@ async def test_static_adapter():
assert result == {"text": "hi"}
@pytest.mark.asyncio
async def test_authentik_adapter_returns_bounded_access_summaries():
client = MagicMock()
client.access_summaries.return_value = {"items": [{"id": "u1", "groups": []}], "total": 1}
service = ServiceRecord(
id="auth",
service_type="authentik",
name="Auth",
config={"base_url": "https://auth.example.com", "timeout_seconds": 5},
secrets={"api_token": "token"},
)
with patch("media_library_viewer_api.widgets.sources.AuthentikClient", return_value=client):
result = await AuthentikWidgetSource().fetch(service, "access_summary", {"limit": 100})
assert result["items"] == [{"id": "u1", "groups": []}]
client.access_summaries.assert_called_once_with(page=1, page_size=50)
def test_authentik_definition_declares_read_only_widget_kinds():
from media_library_viewer_api.integrations.registry import get_service_definition
definition = get_service_definition("authentik")
assert definition is not None
assert {kind.kind for kind in definition.widget_kinds} == {"access_summary", "groups", "applications"}
@pytest.mark.asyncio
async def test_backups_adapter(client):
store = app.dependency_overrides[get_settings_store]()