mirror of
https://github.com/jazzband/django-axes.git
synced 2026-03-16 22:30:23 +00:00
Move tests outside project source folder
This commit is contained in:
parent
a37c8059bb
commit
a5045f62fe
23 changed files with 42 additions and 36 deletions
|
|
@ -12,7 +12,7 @@ from pkg_resources import get_distribution
|
||||||
import django
|
import django
|
||||||
import sphinx_rtd_theme
|
import sphinx_rtd_theme
|
||||||
|
|
||||||
environ.setdefault("DJANGO_SETTINGS_MODULE", "axes.tests.settings")
|
environ.setdefault("DJANGO_SETTINGS_MODULE", "tests.settings")
|
||||||
django.setup()
|
django.setup()
|
||||||
|
|
||||||
# -- Extra custom configuration ------------------------------------------
|
# -- Extra custom configuration ------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "axes.tests.settings")
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tests.settings")
|
||||||
|
|
||||||
from django.core.management import execute_from_command_line
|
from django.core.management import execute_from_command_line
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
[pytest]
|
[pytest]
|
||||||
testpaths = axes/tests
|
testpaths = tests
|
||||||
python_files = tests.py test_*.py tests_*.py *_tests.py *_test.py
|
|
||||||
addopts = --cov axes --cov-config .coveragerc --cov-append --cov-report term-missing --cov-report=xml
|
addopts = --cov axes --cov-config .coveragerc --cov-append --cov-report term-missing --cov-report=xml
|
||||||
DJANGO_SETTINGS_MODULE = axes.tests.settings
|
DJANGO_SETTINGS_MODULE = tests.settings
|
||||||
|
|
|
||||||
2
setup.py
2
setup.py
|
|
@ -38,7 +38,7 @@ setup(
|
||||||
python_requires="~=3.6",
|
python_requires="~=3.6",
|
||||||
install_requires=["django>=2.2", "django-ipware>=3,<4"],
|
install_requires=["django>=2.2", "django-ipware>=3,<4"],
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
packages=find_packages(),
|
packages=find_packages(exclude=["tests"]),
|
||||||
classifiers=[
|
classifiers=[
|
||||||
"Development Status :: 5 - Production/Stable",
|
"Development Status :: 5 - Production/Stable",
|
||||||
"Environment :: Web Environment",
|
"Environment :: Web Environment",
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ AUTHENTICATION_BACKENDS = [
|
||||||
|
|
||||||
PASSWORD_HASHERS = ["django.contrib.auth.hashers.MD5PasswordHasher"]
|
PASSWORD_HASHERS = ["django.contrib.auth.hashers.MD5PasswordHasher"]
|
||||||
|
|
||||||
ROOT_URLCONF = "axes.tests.urls"
|
ROOT_URLCONF = "tests.urls"
|
||||||
|
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
"django.contrib.auth",
|
"django.contrib.auth",
|
||||||
|
|
@ -6,7 +6,8 @@ from django.test import override_settings
|
||||||
|
|
||||||
import axes.admin
|
import axes.admin
|
||||||
from axes.models import AccessAttempt, AccessLog
|
from axes.models import AccessAttempt, AccessLog
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class AxesEnableAdminFlag(AxesTestCase):
|
class AxesEnableAdminFlag(AxesTestCase):
|
||||||
|
|
@ -6,9 +6,10 @@ from django.utils.timezone import now
|
||||||
|
|
||||||
from axes.attempts import get_cool_off_threshold
|
from axes.attempts import get_cool_off_threshold
|
||||||
from axes.models import AccessAttempt
|
from axes.models import AccessAttempt
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
from axes.utils import reset, reset_request
|
from axes.utils import reset, reset_request
|
||||||
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class GetCoolOffThresholdTestCase(AxesTestCase):
|
class GetCoolOffThresholdTestCase(AxesTestCase):
|
||||||
@override_settings(AXES_COOLOFF_TIME=42)
|
@override_settings(AXES_COOLOFF_TIME=42)
|
||||||
|
|
@ -5,7 +5,8 @@ from axes.exceptions import (
|
||||||
AxesBackendRequestParameterRequired,
|
AxesBackendRequestParameterRequired,
|
||||||
AxesBackendPermissionDenied,
|
AxesBackendPermissionDenied,
|
||||||
)
|
)
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class BackendTestCase(AxesTestCase):
|
class BackendTestCase(AxesTestCase):
|
||||||
|
|
@ -3,7 +3,8 @@ from django.test import override_settings, modify_settings
|
||||||
|
|
||||||
from axes.backends import AxesBackend
|
from axes.backends import AxesBackend
|
||||||
from axes.checks import Messages, Hints, Codes
|
from axes.checks import Messages, Hints, Codes
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class CacheCheckTestCase(AxesTestCase):
|
class CacheCheckTestCase(AxesTestCase):
|
||||||
|
|
@ -75,14 +76,14 @@ class BackendCheckTestCase(AxesTestCase):
|
||||||
self.assertEqual(warnings, [warning])
|
self.assertEqual(warnings, [warning])
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(
|
||||||
AUTHENTICATION_BACKENDS=["axes.tests.test_checks.AxesSpecializedBackend"]
|
AUTHENTICATION_BACKENDS=["tests.test_checks.AxesSpecializedBackend"]
|
||||||
)
|
)
|
||||||
def test_specialized_backend(self):
|
def test_specialized_backend(self):
|
||||||
warnings = run_checks()
|
warnings = run_checks()
|
||||||
self.assertEqual(warnings, [])
|
self.assertEqual(warnings, [])
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(
|
||||||
AUTHENTICATION_BACKENDS=["axes.tests.test_checks.AxesNotDefinedBackend"]
|
AUTHENTICATION_BACKENDS=["tests.test_checks.AxesNotDefinedBackend"]
|
||||||
)
|
)
|
||||||
def test_import_error(self):
|
def test_import_error(self):
|
||||||
with self.assertRaises(ImportError):
|
with self.assertRaises(ImportError):
|
||||||
|
|
@ -3,7 +3,8 @@ from unittest.mock import MagicMock, patch
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
|
||||||
from axes.decorators import axes_dispatch, axes_form_invalid
|
from axes.decorators import axes_dispatch, axes_form_invalid
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class DecoratorTestCase(AxesTestCase):
|
class DecoratorTestCase(AxesTestCase):
|
||||||
|
|
@ -10,7 +10,8 @@ from axes.conf import settings
|
||||||
from axes.handlers.proxy import AxesProxyHandler
|
from axes.handlers.proxy import AxesProxyHandler
|
||||||
from axes.helpers import get_client_str
|
from axes.helpers import get_client_str
|
||||||
from axes.models import AccessAttempt, AccessLog
|
from axes.models import AccessAttempt, AccessLog
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
@override_settings(AXES_HANDLER="axes.handlers.base.AxesHandler")
|
@override_settings(AXES_HANDLER="axes.handlers.base.AxesHandler")
|
||||||
|
|
@ -54,7 +55,7 @@ class AxesHandlerTestCase(AxesTestCase):
|
||||||
request.path = url
|
request.path = url
|
||||||
self.assertEqual(AxesProxyHandler().is_admin_site(request), expected)
|
self.assertEqual(AxesProxyHandler().is_admin_site(request), expected)
|
||||||
|
|
||||||
@override_settings(ROOT_URLCONF="axes.tests.urls_empty")
|
@override_settings(ROOT_URLCONF="tests.urls_empty")
|
||||||
@override_settings(AXES_ONLY_ADMIN_SITE=True)
|
@override_settings(AXES_ONLY_ADMIN_SITE=True)
|
||||||
def test_is_admin_site_no_admin_site(self):
|
def test_is_admin_site_no_admin_site(self):
|
||||||
request = MagicMock()
|
request = MagicMock()
|
||||||
|
|
@ -240,7 +241,7 @@ class AxesDatabaseHandlerTestCase(AxesHandlerBaseTestCase):
|
||||||
def test_handler_callable_failure_limit(self):
|
def test_handler_callable_failure_limit(self):
|
||||||
self.check_handler()
|
self.check_handler()
|
||||||
|
|
||||||
@override_settings(AXES_FAILURE_LIMIT="axes.tests.base.custom_failure_limit")
|
@override_settings(AXES_FAILURE_LIMIT="tests.base.custom_failure_limit")
|
||||||
def test_handler_str_failure_limit(self):
|
def test_handler_str_failure_limit(self):
|
||||||
self.check_handler()
|
self.check_handler()
|
||||||
|
|
||||||
|
|
@ -5,7 +5,8 @@ from django.http import HttpRequest, HttpResponse
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
|
|
||||||
from axes.helpers import get_cool_off, get_lockout_response, is_user_attempt_whitelisted
|
from axes.helpers import get_cool_off, get_lockout_response, is_user_attempt_whitelisted
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
def mock_get_cool_off_str():
|
def mock_get_cool_off_str():
|
||||||
|
|
@ -25,9 +26,7 @@ class AxesCoolOffTestCase(AxesTestCase):
|
||||||
def test_get_cool_off_callable(self):
|
def test_get_cool_off_callable(self):
|
||||||
self.assertEqual(get_cool_off(), timedelta(seconds=30))
|
self.assertEqual(get_cool_off(), timedelta(seconds=30))
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(AXES_COOLOFF_TIME="tests.test_helpers.mock_get_cool_off_str")
|
||||||
AXES_COOLOFF_TIME="axes.tests.test_helpers.mock_get_cool_off_str"
|
|
||||||
)
|
|
||||||
def test_get_cool_off_path(self):
|
def test_get_cool_off_path(self):
|
||||||
self.assertEqual(get_cool_off(), timedelta(seconds=30))
|
self.assertEqual(get_cool_off(), timedelta(seconds=30))
|
||||||
|
|
||||||
|
|
@ -50,9 +49,7 @@ class AxesWhitelistTestCase(AxesTestCase):
|
||||||
def test_is_whitelisted_override_callable(self):
|
def test_is_whitelisted_override_callable(self):
|
||||||
self.assertTrue(is_user_attempt_whitelisted(self.request, self.credentials))
|
self.assertTrue(is_user_attempt_whitelisted(self.request, self.credentials))
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(AXES_WHITELIST_CALLABLE="tests.test_helpers.mock_is_whitelisted")
|
||||||
AXES_WHITELIST_CALLABLE="axes.tests.test_helpers.mock_is_whitelisted"
|
|
||||||
)
|
|
||||||
def test_is_whitelisted_override_path(self):
|
def test_is_whitelisted_override_path(self):
|
||||||
self.assertTrue(is_user_attempt_whitelisted(self.request, self.credentials))
|
self.assertTrue(is_user_attempt_whitelisted(self.request, self.credentials))
|
||||||
|
|
||||||
|
|
@ -81,7 +78,7 @@ class AxesLockoutTestCase(AxesTestCase):
|
||||||
self.assertEqual(400, response.status_code)
|
self.assertEqual(400, response.status_code)
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(
|
||||||
AXES_LOCKOUT_CALLABLE="axes.tests.test_helpers.mock_get_lockout_response"
|
AXES_LOCKOUT_CALLABLE="tests.test_helpers.mock_get_lockout_response"
|
||||||
)
|
)
|
||||||
def test_get_lockout_response_override_path(self):
|
def test_get_lockout_response_override_path(self):
|
||||||
response = get_lockout_response(self.request, self.credentials)
|
response = get_lockout_response(self.request, self.credentials)
|
||||||
|
|
@ -5,7 +5,8 @@ from django.urls import reverse
|
||||||
|
|
||||||
from axes.apps import AppConfig
|
from axes.apps import AppConfig
|
||||||
from axes.models import AccessAttempt, AccessLog
|
from axes.models import AccessAttempt, AccessLog
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
@patch("axes.apps.AppConfig.initialized", False)
|
@patch("axes.apps.AppConfig.initialized", False)
|
||||||
|
|
@ -14,7 +14,8 @@ from django.contrib.auth import get_user_model, login, logout
|
||||||
from axes.conf import settings
|
from axes.conf import settings
|
||||||
from axes.models import AccessAttempt
|
from axes.models import AccessAttempt
|
||||||
from axes.helpers import get_cache, make_cache_key_list
|
from axes.helpers import get_cache, make_cache_key_list
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class DjangoLoginTestCase(TestCase):
|
class DjangoLoginTestCase(TestCase):
|
||||||
|
|
@ -5,7 +5,8 @@ from django.core.management import call_command
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from axes.models import AccessAttempt, AccessLog
|
from axes.models import AccessAttempt, AccessLog
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class ResetAccessLogsManagementCommandTestCase(AxesTestCase):
|
class ResetAccessLogsManagementCommandTestCase(AxesTestCase):
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
from unittest import mock
|
|
||||||
|
|
||||||
from django.http import HttpResponse, HttpRequest
|
from django.http import HttpResponse, HttpRequest
|
||||||
from django.conf import settings
|
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
|
|
||||||
from axes.middleware import AxesMiddleware
|
from axes.middleware import AxesMiddleware
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class MiddlewareTestCase(AxesTestCase):
|
class MiddlewareTestCase(AxesTestCase):
|
||||||
|
|
@ -5,7 +5,8 @@ from django.db.migrations.executor import MigrationExecutor
|
||||||
from django.db.migrations.state import ProjectState
|
from django.db.migrations.state import ProjectState
|
||||||
|
|
||||||
from axes.models import AccessAttempt, AccessLog
|
from axes.models import AccessAttempt, AccessLog
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class ModelsTestCase(AxesTestCase):
|
class ModelsTestCase(AxesTestCase):
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
from axes.signals import user_locked_out
|
from axes.signals import user_locked_out
|
||||||
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
class SignalTestCase(AxesTestCase):
|
class SignalTestCase(AxesTestCase):
|
||||||
def test_send_lockout_signal(self):
|
def test_send_lockout_signal(self):
|
||||||
|
|
@ -7,7 +7,6 @@ from django.test import override_settings, RequestFactory
|
||||||
|
|
||||||
from axes.apps import AppConfig
|
from axes.apps import AppConfig
|
||||||
from axes.models import AccessAttempt
|
from axes.models import AccessAttempt
|
||||||
from axes.tests.base import AxesTestCase
|
|
||||||
from axes.helpers import (
|
from axes.helpers import (
|
||||||
get_cache_timeout,
|
get_cache_timeout,
|
||||||
get_client_str,
|
get_client_str,
|
||||||
|
|
@ -24,6 +23,8 @@ from axes.helpers import (
|
||||||
toggleable,
|
toggleable,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from tests.base import AxesTestCase
|
||||||
|
|
||||||
|
|
||||||
@override_settings(AXES_ENABLED=False)
|
@override_settings(AXES_ENABLED=False)
|
||||||
class AxesDisabledTestCase(AxesTestCase):
|
class AxesDisabledTestCase(AxesTestCase):
|
||||||
|
|
@ -488,7 +489,7 @@ class UsernameTestCase(AxesTestCase):
|
||||||
with self.assertRaises(TypeError):
|
with self.assertRaises(TypeError):
|
||||||
get_client_username(HttpRequest(), {})
|
get_client_username(HttpRequest(), {})
|
||||||
|
|
||||||
@override_settings(AXES_USERNAME_CALLABLE="axes.tests.test_utils.get_username")
|
@override_settings(AXES_USERNAME_CALLABLE="tests.test_utils.get_username")
|
||||||
def test_get_client_username_str(self):
|
def test_get_client_username_str(self):
|
||||||
self.assertEqual(get_client_username(HttpRequest(), {}), "username")
|
self.assertEqual(get_client_username(HttpRequest(), {}), "username")
|
||||||
|
|
||||||
Loading…
Reference in a new issue