From 5a4df950114f6aee2ca46d8bddf185357c0dcd37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcelo=20Elizeche=20Land=C3=B3?= Date: Thu, 27 Mar 2025 18:17:28 -0300 Subject: [PATCH] Fix tests, add more tests --- authentik/core/tests/test_applications_api.py | 4 ++ authentik/core/tests/test_providers_api.py | 51 ++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/authentik/core/tests/test_applications_api.py b/authentik/core/tests/test_applications_api.py index 192adc458b..11a4a502b4 100644 --- a/authentik/core/tests/test_applications_api.py +++ b/authentik/core/tests/test_applications_api.py @@ -133,6 +133,8 @@ class TestApplicationsAPI(APITestCase): "provider_obj": { "assigned_application_name": "allowed", "assigned_application_slug": "allowed", + "assigned_backchannel_application_name": "", + "assigned_backchannel_application_slug": "", "authentication_flow": None, "invalidation_flow": None, "authorization_flow": str(self.provider.authorization_flow.pk), @@ -186,6 +188,8 @@ class TestApplicationsAPI(APITestCase): "provider_obj": { "assigned_application_name": "allowed", "assigned_application_slug": "allowed", + "assigned_backchannel_application_name": "", + "assigned_backchannel_application_slug": "", "authentication_flow": None, "invalidation_flow": None, "authorization_flow": str(self.provider.authorization_flow.pk), diff --git a/authentik/core/tests/test_providers_api.py b/authentik/core/tests/test_providers_api.py index eac36132ec..d302c6bbcd 100644 --- a/authentik/core/tests/test_providers_api.py +++ b/authentik/core/tests/test_providers_api.py @@ -3,7 +3,8 @@ from django.urls import reverse from rest_framework.test import APITestCase -from authentik.core.models import PropertyMapping +from authentik.core.api.providers import ProviderSerializer +from authentik.core.models import Application, PropertyMapping, Provider from authentik.core.tests.utils import create_test_admin_user @@ -24,3 +25,51 @@ class TestProvidersAPI(APITestCase): reverse("authentik_api:provider-types"), ) self.assertEqual(response.status_code, 200) + + def test_provider_serializer_without_application(self): + """Test that Provider serializer handles missing application gracefully""" + # Create a provider without an application + provider = Provider.objects.create(name="test-provider") + + serializer = ProviderSerializer(instance=provider) + serialized_data = serializer.data + + # Check that fields return empty strings when no application exists + self.assertEqual(serialized_data["assigned_application_slug"], "") + self.assertEqual(serialized_data["assigned_application_name"], "") + self.assertEqual(serialized_data["assigned_backchannel_application_slug"], "") + self.assertEqual(serialized_data["assigned_backchannel_application_name"], "") + + def test_provider_serializer_with_application(self): + """Test that Provider serializer correctly includes application data""" + # Create an application + app = Application.objects.create(name="Test App", slug="test-app") + + # Create a provider with an application + provider = Provider.objects.create(name="test-provider-with-app") + app.provider = provider + app.save() + + serializer = ProviderSerializer(instance=provider) + serialized_data = serializer.data + + # Check that fields return correct values when application exists + self.assertEqual(serialized_data["assigned_application_slug"], "test-app") + self.assertEqual(serialized_data["assigned_application_name"], "Test App") + self.assertEqual(serialized_data["assigned_backchannel_application_slug"], "") + self.assertEqual(serialized_data["assigned_backchannel_application_name"], "") + + def test_provider_api_response(self): + """Test that the API response includes empty strings for missing applications""" + # Create a provider without an application + provider = Provider.objects.create(name="test-provider-api") + + response = self.client.get( + reverse("authentik_api:provider-detail", kwargs={"pk": provider.pk}), + ) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data["assigned_application_slug"], "") + self.assertEqual(response.data["assigned_application_name"], "") + self.assertEqual(response.data["assigned_backchannel_application_slug"], "") + self.assertEqual(response.data["assigned_backchannel_application_name"], "")