*: fix tests not using APITestCase

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer 2021-09-02 19:14:21 +02:00
parent d4d4034d2c
commit 7fea20375f
21 changed files with 39 additions and 61 deletions

View File

@ -2,10 +2,10 @@
from unittest.mock import MagicMock, PropertyMock, patch from unittest.mock import MagicMock, PropertyMock, patch
from django.http import HttpRequest, HttpResponse from django.http import HttpRequest, HttpResponse
from django.test import TestCase
from django.test.client import RequestFactory from django.test.client import RequestFactory
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -37,7 +37,7 @@ def to_stage_response(request: HttpRequest, source: HttpResponse):
TO_STAGE_RESPONSE_MOCK = MagicMock(side_effect=to_stage_response) TO_STAGE_RESPONSE_MOCK = MagicMock(side_effect=to_stage_response)
class TestFlowExecutor(TestCase): class TestFlowExecutor(APITestCase):
"""Test views logic""" """Test views logic"""
def setUp(self): def setUp(self):

View File

@ -1,5 +1,5 @@
"""flow views tests""" """flow views tests"""
from django.test import Client, TestCase from django.test import TestCase
from django.urls import reverse from django.urls import reverse
from authentik.flows.models import Flow, FlowDesignation from authentik.flows.models import Flow, FlowDesignation
@ -10,9 +10,6 @@ from authentik.flows.views import SESSION_KEY_PLAN
class TestHelperView(TestCase): class TestHelperView(TestCase):
"""Test helper views logic""" """Test helper views logic"""
def setUp(self):
self.client = Client()
def test_default_view(self): def test_default_view(self):
"""Test that ToDefaultFlow returns the expected URL""" """Test that ToDefaultFlow returns the expected URL"""
flow = Flow.objects.filter( flow = Flow.objects.filter(

View File

@ -1,7 +1,7 @@
"""Password flow tests""" """Password flow tests"""
from django.test import TestCase
from django.urls.base import reverse from django.urls.base import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -10,7 +10,7 @@ from authentik.policies.password.models import PasswordPolicy
from authentik.stages.prompt.models import FieldTypes, Prompt, PromptStage from authentik.stages.prompt.models import FieldTypes, Prompt, PromptStage
class TestPasswordPolicyFlow(TestCase): class TestPasswordPolicyFlow(APITestCase):
"""Test Password Policy""" """Test Password Policy"""
def setUp(self) -> None: def setUp(self) -> None:

View File

@ -191,8 +191,8 @@ REST_FRAMEWORK = {
"rest_framework.filters.OrderingFilter", "rest_framework.filters.OrderingFilter",
"rest_framework.filters.SearchFilter", "rest_framework.filters.SearchFilter",
], ],
'DEFAULT_PARSER_CLASSES': [ "DEFAULT_PARSER_CLASSES": [
'rest_framework.parsers.JSONParser', "rest_framework.parsers.JSONParser",
], ],
"DEFAULT_PERMISSION_CLASSES": ("rest_framework.permissions.DjangoObjectPermissions",), "DEFAULT_PERMISSION_CLASSES": ("rest_framework.permissions.DjangoObjectPermissions",),
"DEFAULT_AUTHENTICATION_CLASSES": ( "DEFAULT_AUTHENTICATION_CLASSES": (
@ -203,6 +203,7 @@ REST_FRAMEWORK = {
"rest_framework.renderers.JSONRenderer", "rest_framework.renderers.JSONRenderer",
], ],
"DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema", "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema",
"TEST_REQUEST_DEFAULT_FORMAT": "json",
} }
REDIS_PROTOCOL_PREFIX = "redis://" REDIS_PROTOCOL_PREFIX = "redis://"

View File

@ -2,17 +2,13 @@
from base64 import b64encode from base64 import b64encode
from django.conf import settings from django.conf import settings
from django.test import Client, TestCase from django.test import TestCase
from django.urls import reverse from django.urls import reverse
class TestRoot(TestCase): class TestRoot(TestCase):
"""Test root application""" """Test root application"""
def setUp(self):
super().setUp()
self.client = Client()
def test_monitoring_error(self): def test_monitoring_error(self):
"""Test monitoring without any credentials""" """Test monitoring without any credentials"""
response = self.client.get(reverse("metrics")) response = self.client.get(reverse("metrics"))

View File

@ -1,5 +1,5 @@
"""Twitter Type tests""" """Twitter Type tests"""
from django.test import Client, TestCase from django.test import TestCase
from authentik.sources.oauth.models import OAuthSource from authentik.sources.oauth.models import OAuthSource
from authentik.sources.oauth.types.twitter import TwitterOAuthCallback from authentik.sources.oauth.types.twitter import TwitterOAuthCallback
@ -92,7 +92,6 @@ class TestTypeGitHub(TestCase):
"""OAuth Source tests""" """OAuth Source tests"""
def setUp(self): def setUp(self):
self.client = Client()
self.source = OAuthSource.objects.create( self.source = OAuthSource.objects.create(
name="test", name="test",
slug="test", slug="test",

View File

@ -1,12 +1,12 @@
"""Test validator stage""" """Test validator stage"""
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from django.test import TestCase
from django.test.client import RequestFactory from django.test.client import RequestFactory
from django.urls.base import reverse from django.urls.base import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from django_otp.plugins.otp_totp.models import TOTPDevice from django_otp.plugins.otp_totp.models import TOTPDevice
from rest_framework.exceptions import ValidationError from rest_framework.exceptions import ValidationError
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -26,7 +26,7 @@ from authentik.stages.authenticator_webauthn.models import WebAuthnDevice
from authentik.stages.identification.models import IdentificationStage, UserFields from authentik.stages.identification.models import IdentificationStage, UserFields
class AuthenticatorValidateStageTests(TestCase): class AuthenticatorValidateStageTests(APITestCase):
"""Test validator stage""" """Test validator stage"""
def setUp(self) -> None: def setUp(self) -> None:

View File

@ -1,7 +1,7 @@
"""captcha tests""" """captcha tests"""
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -16,13 +16,12 @@ RECAPTCHA_PUBLIC_KEY = "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"
RECAPTCHA_PRIVATE_KEY = "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe" RECAPTCHA_PRIVATE_KEY = "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe"
class TestCaptchaStage(TestCase): class TestCaptchaStage(APITestCase):
"""Captcha tests""" """Captcha tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.user = User.objects.create_user(username="unittest", email="test@beryju.org") self.user = User.objects.create_user(username="unittest", email="test@beryju.org")
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-captcha", name="test-captcha",

View File

@ -1,9 +1,9 @@
"""consent tests""" """consent tests"""
from time import sleep from time import sleep
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import Application, User from authentik.core.models import Application, User
from authentik.core.tasks import clean_expired_models from authentik.core.tasks import clean_expired_models
@ -15,7 +15,7 @@ from authentik.flows.views import SESSION_KEY_PLAN
from authentik.stages.consent.models import ConsentMode, ConsentStage, UserConsent from authentik.stages.consent.models import ConsentMode, ConsentStage, UserConsent
class TestConsentStage(TestCase): class TestConsentStage(APITestCase):
"""Consent tests""" """Consent tests"""
def setUp(self): def setUp(self):
@ -25,7 +25,6 @@ class TestConsentStage(TestCase):
name="test-application", name="test-application",
slug="test-application", slug="test-application",
) )
self.client = Client()
def test_always_required(self): def test_always_required(self):
"""Test always required consent""" """Test always required consent"""

View File

@ -1,7 +1,7 @@
"""deny tests""" """deny tests"""
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -12,13 +12,12 @@ from authentik.flows.views import SESSION_KEY_PLAN
from authentik.stages.deny.models import DenyStage from authentik.stages.deny.models import DenyStage
class TestUserDenyStage(TestCase): class TestUserDenyStage(APITestCase):
"""Deny tests""" """Deny tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.user = User.objects.create(username="unittest", email="test@beryju.org") self.user = User.objects.create(username="unittest", email="test@beryju.org")
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-logout", name="test-logout",

View File

@ -1,7 +1,7 @@
"""dummy tests""" """dummy tests"""
from django.test import TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -9,7 +9,7 @@ from authentik.flows.models import Flow, FlowDesignation, FlowStageBinding
from authentik.stages.dummy.models import DummyStage from authentik.stages.dummy.models import DummyStage
class TestDummyStage(TestCase): class TestDummyStage(APITestCase):
"""Dummy tests""" """Dummy tests"""
def setUp(self): def setUp(self):

View File

@ -4,8 +4,8 @@ from unittest.mock import MagicMock, patch
from django.core import mail from django.core import mail
from django.core.mail.backends.locmem import EmailBackend from django.core.mail.backends.locmem import EmailBackend
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.events.models import Event, EventAction from authentik.events.models import Event, EventAction
@ -16,13 +16,12 @@ from authentik.flows.views import SESSION_KEY_PLAN
from authentik.stages.email.models import EmailStage from authentik.stages.email.models import EmailStage
class TestEmailStageSending(TestCase): class TestEmailStageSending(APITestCase):
"""Email tests""" """Email tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.user = User.objects.create_user(username="unittest", email="test@beryju.org") self.user = User.objects.create_user(username="unittest", email="test@beryju.org")
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-email", name="test-email",

View File

@ -2,10 +2,10 @@
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from django.core import mail from django.core import mail
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from django.utils.http import urlencode from django.utils.http import urlencode
from rest_framework.test import APITestCase
from authentik.core.models import Token, User from authentik.core.models import Token, User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -17,13 +17,12 @@ from authentik.stages.email.models import EmailStage
from authentik.stages.email.stage import QS_KEY_TOKEN from authentik.stages.email.stage import QS_KEY_TOKEN
class TestEmailStage(TestCase): class TestEmailStage(APITestCase):
"""Email tests""" """Email tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.user = User.objects.create_user(username="unittest", email="test@beryju.org") self.user = User.objects.create_user(username="unittest", email="test@beryju.org")
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-email", name="test-email",

View File

@ -1,7 +1,7 @@
"""identification tests""" """identification tests"""
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -13,7 +13,7 @@ from authentik.stages.password import BACKEND_INBUILT
from authentik.stages.password.models import PasswordStage from authentik.stages.password.models import PasswordStage
class TestIdentificationStage(TestCase): class TestIdentificationStage(APITestCase):
"""Identification tests""" """Identification tests"""
def setUp(self): def setUp(self):
@ -22,7 +22,6 @@ class TestIdentificationStage(TestCase):
self.user = User.objects.create_user( self.user = User.objects.create_user(
username="unittest", email="test@beryju.org", password=self.password username="unittest", email="test@beryju.org", password=self.password
) )
self.client = Client()
# OAuthSource for the login view # OAuthSource for the login view
source = OAuthSource.objects.create(name="test", slug="test") source = OAuthSource.objects.create(name="test", slug="test")

View File

@ -1,7 +1,6 @@
"""invitation tests""" """invitation tests"""
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from django.utils.http import urlencode from django.utils.http import urlencode
@ -21,13 +20,12 @@ from authentik.stages.password import BACKEND_INBUILT
from authentik.stages.password.stage import PLAN_CONTEXT_AUTHENTICATION_BACKEND from authentik.stages.password.stage import PLAN_CONTEXT_AUTHENTICATION_BACKEND
class TestUserLoginStage(TestCase): class TestUserLoginStage(APITestCase):
"""Login tests""" """Login tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.user = User.objects.create(username="unittest", email="test@beryju.org") self.user = User.objects.create(username="unittest", email="test@beryju.org")
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-invitation", name="test-invitation",

View File

@ -2,9 +2,9 @@
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -20,7 +20,7 @@ from authentik.stages.password.models import PasswordStage
MOCK_BACKEND_AUTHENTICATE = MagicMock(side_effect=PermissionDenied("test")) MOCK_BACKEND_AUTHENTICATE = MagicMock(side_effect=PermissionDenied("test"))
class TestPasswordStage(TestCase): class TestPasswordStage(APITestCase):
"""Password tests""" """Password tests"""
def setUp(self): def setUp(self):
@ -29,7 +29,6 @@ class TestPasswordStage(TestCase):
self.user = User.objects.create_user( self.user = User.objects.create_user(
username="unittest", email="test@beryju.org", password=self.password username="unittest", email="test@beryju.org", password=self.password
) )
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-password", name="test-password",

View File

@ -1,10 +1,10 @@
"""Prompt tests""" """Prompt tests"""
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.exceptions import ErrorDetail from rest_framework.exceptions import ErrorDetail
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -17,13 +17,12 @@ from authentik.stages.prompt.models import FieldTypes, Prompt, PromptStage
from authentik.stages.prompt.stage import PLAN_CONTEXT_PROMPT, PromptChallengeResponse from authentik.stages.prompt.stage import PLAN_CONTEXT_PROMPT, PromptChallengeResponse
class TestPromptStage(TestCase): class TestPromptStage(APITestCase):
"""Prompt tests""" """Prompt tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.user = User.objects.create(username="unittest", email="test@beryju.org") self.user = User.objects.create(username="unittest", email="test@beryju.org")
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-prompt", name="test-prompt",

View File

@ -1,9 +1,9 @@
"""delete tests""" """delete tests"""
from unittest.mock import patch from unittest.mock import patch
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -15,14 +15,13 @@ from authentik.flows.views import SESSION_KEY_PLAN
from authentik.stages.user_delete.models import UserDeleteStage from authentik.stages.user_delete.models import UserDeleteStage
class TestUserDeleteStage(TestCase): class TestUserDeleteStage(APITestCase):
"""Delete tests""" """Delete tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.username = "qerqwerqrwqwerwq" self.username = "qerqwerqrwqwerwq"
self.user = User.objects.create(username=self.username, email="test@beryju.org") self.user = User.objects.create(username=self.username, email="test@beryju.org")
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-delete", name="test-delete",

View File

@ -2,9 +2,9 @@
from time import sleep from time import sleep
from unittest.mock import patch from unittest.mock import patch
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -16,13 +16,12 @@ from authentik.flows.views import SESSION_KEY_PLAN
from authentik.stages.user_login.models import UserLoginStage from authentik.stages.user_login.models import UserLoginStage
class TestUserLoginStage(TestCase): class TestUserLoginStage(APITestCase):
"""Login tests""" """Login tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.user = User.objects.create(username="unittest", email="test@beryju.org") self.user = User.objects.create(username="unittest", email="test@beryju.org")
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-login", name="test-login",

View File

@ -1,7 +1,7 @@
"""logout tests""" """logout tests"""
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import User from authentik.core.models import User
from authentik.flows.challenge import ChallengeTypes from authentik.flows.challenge import ChallengeTypes
@ -14,13 +14,12 @@ from authentik.stages.password.stage import PLAN_CONTEXT_AUTHENTICATION_BACKEND
from authentik.stages.user_logout.models import UserLogoutStage from authentik.stages.user_logout.models import UserLogoutStage
class TestUserLogoutStage(TestCase): class TestUserLogoutStage(APITestCase):
"""Logout tests""" """Logout tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.user = User.objects.create(username="unittest", email="test@beryju.org") self.user = User.objects.create(username="unittest", email="test@beryju.org")
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-logout", name="test-logout",

View File

@ -3,9 +3,9 @@ import string
from random import SystemRandom from random import SystemRandom
from unittest.mock import patch from unittest.mock import patch
from django.test import Client, TestCase
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_str from django.utils.encoding import force_str
from rest_framework.test import APITestCase
from authentik.core.models import USER_ATTRIBUTE_SOURCES, Source, User, UserSourceConnection from authentik.core.models import USER_ATTRIBUTE_SOURCES, Source, User, UserSourceConnection
from authentik.core.sources.stage import PLAN_CONTEXT_SOURCES_CONNECTION from authentik.core.sources.stage import PLAN_CONTEXT_SOURCES_CONNECTION
@ -19,13 +19,11 @@ from authentik.stages.prompt.stage import PLAN_CONTEXT_PROMPT
from authentik.stages.user_write.models import UserWriteStage from authentik.stages.user_write.models import UserWriteStage
class TestUserWriteStage(TestCase): class TestUserWriteStage(APITestCase):
"""Write tests""" """Write tests"""
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client = Client()
self.flow = Flow.objects.create( self.flow = Flow.objects.create(
name="test-write", name="test-write",
slug="test-write", slug="test-write",