mirror of
https://github.com/jazzband/django-axes.git
synced 2026-03-16 22:30:23 +00:00
Use mocks and test new backends, handlers and middleware on an API call level, aiming for a 100% coverage on behaviour. Also add tests for old decorators which are not covered after moving the default authentication checks from them to the authentication backends, middleware and signal handlers. Fixes #323 Signed-off-by: Aleksi Häkli <aleksi.hakli@iki.fi>
51 lines
2.1 KiB
Python
51 lines
2.1 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
from django.test import TestCase
|
|
|
|
from axes.handlers import AxesHandler
|
|
from axes.signals import ProxyHandler
|
|
|
|
|
|
class ProxyHandlerTestCase(TestCase):
|
|
def setUp(self):
|
|
self.sender = MagicMock()
|
|
self.credentials = MagicMock()
|
|
self.request = MagicMock()
|
|
self.user = MagicMock()
|
|
self.instance = MagicMock()
|
|
|
|
@patch('axes.signals.ProxyHandler.implementation', None)
|
|
def test_initialize(self):
|
|
self.assertIsNone(ProxyHandler.implementation)
|
|
ProxyHandler.initialize()
|
|
self.assertIsInstance(ProxyHandler.implementation, AxesHandler)
|
|
|
|
@patch('axes.signals.ProxyHandler.implementation')
|
|
def test_user_login_failed(self, handler):
|
|
self.assertFalse(handler.user_login_failed.called)
|
|
ProxyHandler().user_login_failed(self.sender, self.credentials, self.request)
|
|
self.assertTrue(handler.user_login_failed.called)
|
|
|
|
@patch('axes.signals.ProxyHandler.implementation')
|
|
def test_user_logged_in(self, handler):
|
|
self.assertFalse(handler.user_logged_in.called)
|
|
ProxyHandler().user_logged_in(self.sender, self.request, self.user)
|
|
self.assertTrue(handler.user_logged_in.called)
|
|
|
|
@patch('axes.signals.ProxyHandler.implementation')
|
|
def test_user_logged_out(self, handler):
|
|
self.assertFalse(handler.user_logged_out.called)
|
|
ProxyHandler().user_logged_out(self.sender, self.request, self.user)
|
|
self.assertTrue(handler.user_logged_out.called)
|
|
|
|
@patch('axes.signals.ProxyHandler.implementation')
|
|
def test_post_save_access_attempt(self, handler):
|
|
self.assertFalse(handler.post_save_access_attempt.called)
|
|
ProxyHandler().post_save_access_attempt(self.instance)
|
|
self.assertTrue(handler.post_save_access_attempt.called)
|
|
|
|
@patch('axes.signals.ProxyHandler.implementation')
|
|
def test_post_delete_access_attempt(self, handler):
|
|
self.assertFalse(handler.post_delete_access_attempt.called)
|
|
ProxyHandler().post_delete_access_attempt(self.instance)
|
|
self.assertTrue(handler.post_delete_access_attempt.called)
|