
* add `InitialPermissions` model to RBAC This is a powerful construct between Permission and Role to set initial permissions for newly created objects. * use safer `request.user` * fixup! use safer `request.user` * force all self-defined serializers to descend from our custom one See https://github.com/goauthentik/authentik/pull/10139 * reorganize initial permission assignment * fixup! reorganize initial permission assignment
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""Test API Utils"""
|
|
|
|
from rest_framework.exceptions import ValidationError
|
|
from rest_framework.serializers import (
|
|
HyperlinkedModelSerializer,
|
|
)
|
|
from rest_framework.serializers import (
|
|
ModelSerializer as BaseModelSerializer,
|
|
)
|
|
from rest_framework.test import APITestCase
|
|
|
|
from authentik.core.api.utils import ModelSerializer as CustomModelSerializer
|
|
from authentik.core.api.utils import is_dict
|
|
from authentik.lib.utils.reflection import all_subclasses
|
|
|
|
|
|
class TestAPIUtils(APITestCase):
|
|
"""Test API Utils"""
|
|
|
|
def test_is_dict(self):
|
|
"""Test is_dict"""
|
|
self.assertIsNone(is_dict({}))
|
|
with self.assertRaises(ValidationError):
|
|
is_dict("foo")
|
|
|
|
def test_all_serializers_descend_from_custom(self):
|
|
"""Test that every serializer we define descends from our own ModelSerializer"""
|
|
# Weirdly, there's only one serializer in `rest_framework` which descends from
|
|
# ModelSerializer: HyperlinkedModelSerializer
|
|
expected = {CustomModelSerializer, HyperlinkedModelSerializer}
|
|
actual = set(all_subclasses(BaseModelSerializer)) - set(
|
|
all_subclasses(CustomModelSerializer)
|
|
)
|
|
|
|
self.assertEqual(expected, actual)
|