authentik.enterprise.reports.tests.test_api

 1from django.contrib.contenttypes.models import ContentType
 2from django.urls import reverse
 3from rest_framework.test import APITestCase
 4
 5from authentik.core.models import User
 6from authentik.core.tests.utils import create_test_admin_user
 7from authentik.enterprise.reports.tests.utils import patch_license
 8from authentik.events.models import Event
 9
10
11@patch_license
12class TestExportAPI(APITestCase):
13    def setUp(self) -> None:
14        self.user = create_test_admin_user()
15        self.client.force_login(self.user)
16
17    def test_create_user_export(self):
18        """Test User export endpoint"""
19        response = self.client.post(
20            reverse("authentik_api:user-export"),
21        )
22        self.assertEqual(response.status_code, 201)
23        self.assertEqual(
24            response.headers["Location"],
25            reverse("authentik_api:dataexport-detail", kwargs={"pk": response.data["id"]}),
26        )
27        self.assertEqual(response.data["requested_by"]["pk"], self.user.pk)
28        self.assertEqual(response.data["completed"], False)
29        self.assertEqual(response.data["file_url"], "")
30        self.assertEqual(response.data["query_params"], {})
31        self.assertEqual(
32            response.data["content_type"]["id"],
33            ContentType.objects.get_for_model(User).id,
34        )
35
36    def test_create_event_export(self):
37        """Test Event export endpoint"""
38        response = self.client.post(
39            reverse("authentik_api:event-export"),
40        )
41        self.assertEqual(response.status_code, 201)
42        self.assertEqual(
43            response.headers["Location"],
44            reverse("authentik_api:dataexport-detail", kwargs={"pk": response.data["id"]}),
45        )
46        self.assertEqual(response.data["requested_by"]["pk"], self.user.pk)
47        self.assertEqual(response.data["completed"], False)
48        self.assertEqual(response.data["file_url"], "")
49        self.assertEqual(response.data["query_params"], {})
50        self.assertEqual(
51            response.data["content_type"]["id"],
52            ContentType.objects.get_for_model(Event).id,
53        )
@patch_license
class TestExportAPI(rest_framework.test.APITestCase):
12@patch_license
13class TestExportAPI(APITestCase):
14    def setUp(self) -> None:
15        self.user = create_test_admin_user()
16        self.client.force_login(self.user)
17
18    def test_create_user_export(self):
19        """Test User export endpoint"""
20        response = self.client.post(
21            reverse("authentik_api:user-export"),
22        )
23        self.assertEqual(response.status_code, 201)
24        self.assertEqual(
25            response.headers["Location"],
26            reverse("authentik_api:dataexport-detail", kwargs={"pk": response.data["id"]}),
27        )
28        self.assertEqual(response.data["requested_by"]["pk"], self.user.pk)
29        self.assertEqual(response.data["completed"], False)
30        self.assertEqual(response.data["file_url"], "")
31        self.assertEqual(response.data["query_params"], {})
32        self.assertEqual(
33            response.data["content_type"]["id"],
34            ContentType.objects.get_for_model(User).id,
35        )
36
37    def test_create_event_export(self):
38        """Test Event export endpoint"""
39        response = self.client.post(
40            reverse("authentik_api:event-export"),
41        )
42        self.assertEqual(response.status_code, 201)
43        self.assertEqual(
44            response.headers["Location"],
45            reverse("authentik_api:dataexport-detail", kwargs={"pk": response.data["id"]}),
46        )
47        self.assertEqual(response.data["requested_by"]["pk"], self.user.pk)
48        self.assertEqual(response.data["completed"], False)
49        self.assertEqual(response.data["file_url"], "")
50        self.assertEqual(response.data["query_params"], {})
51        self.assertEqual(
52            response.data["content_type"]["id"],
53            ContentType.objects.get_for_model(Event).id,
54        )

Similar to TransactionTestCase, but use transaction.atomic() to achieve test isolation.

In most situations, TestCase should be preferred to TransactionTestCase as it allows faster execution. However, there are some situations where using TransactionTestCase might be necessary (e.g. testing some transactional behavior).

On database backends with no transaction support, TestCase behaves as TransactionTestCase.

def setUp(self) -> None:
14    def setUp(self) -> None:
15        self.user = create_test_admin_user()
16        self.client.force_login(self.user)

Hook method for setting up the test fixture before exercising it.

def test_create_user_export(self):
18    def test_create_user_export(self):
19        """Test User export endpoint"""
20        response = self.client.post(
21            reverse("authentik_api:user-export"),
22        )
23        self.assertEqual(response.status_code, 201)
24        self.assertEqual(
25            response.headers["Location"],
26            reverse("authentik_api:dataexport-detail", kwargs={"pk": response.data["id"]}),
27        )
28        self.assertEqual(response.data["requested_by"]["pk"], self.user.pk)
29        self.assertEqual(response.data["completed"], False)
30        self.assertEqual(response.data["file_url"], "")
31        self.assertEqual(response.data["query_params"], {})
32        self.assertEqual(
33            response.data["content_type"]["id"],
34            ContentType.objects.get_for_model(User).id,
35        )

Test User export endpoint

def test_create_event_export(self):
37    def test_create_event_export(self):
38        """Test Event export endpoint"""
39        response = self.client.post(
40            reverse("authentik_api:event-export"),
41        )
42        self.assertEqual(response.status_code, 201)
43        self.assertEqual(
44            response.headers["Location"],
45            reverse("authentik_api:dataexport-detail", kwargs={"pk": response.data["id"]}),
46        )
47        self.assertEqual(response.data["requested_by"]["pk"], self.user.pk)
48        self.assertEqual(response.data["completed"], False)
49        self.assertEqual(response.data["file_url"], "")
50        self.assertEqual(response.data["query_params"], {})
51        self.assertEqual(
52            response.data["content_type"]["id"],
53            ContentType.objects.get_for_model(Event).id,
54        )

Test Event export endpoint