From 4711fb88fffdfa40d381a57f44dca1f15633922b Mon Sep 17 00:00:00 2001 From: Jack Sullivan Date: Sat, 13 May 2017 13:24:23 -0700 Subject: [PATCH] Boosting code coverage --- axes/tests.py | 90 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 85 insertions(+), 5 deletions(-) diff --git a/axes/tests.py b/axes/tests.py index 16e86ec..b9de7ba 100644 --- a/axes/tests.py +++ b/axes/tests.py @@ -215,7 +215,6 @@ class AccessAttemptTest(TestCase): """ Test the cache key format""" # Getting cache key from request ip = '127.0.0.1'.encode('utf-8') - ua = ''.encode('utf-8') cache_hash_key_checker = 'axes-{}'.format(md5((ip)).hexdigest()) @@ -329,7 +328,6 @@ class AccessAttemptTest(TestCase): response = self._login(is_valid_username=True, is_valid_password=True) self.assertNotContains(response, self.LOGIN_FORM_KEY, status_code=302) - @patch('axes.decorators.cache.set', return_value=None) @patch('axes.decorators.cache.get', return_value=None) def test_log_data_truncated(self, cache_set_mock, cache_get_mock): @@ -942,20 +940,20 @@ class UtilsTest(TestCase): self.assertFalse(is_ipv6('foo')) @patch('axes.decorators.VERBOSE', True) - def test_verbose_client_details(self): + def test_verbose_ip_only_client_details(self): username = 'test@example.com' ip = '127.0.0.1' user_agent = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)' path_info = '/admin/' - details = "{{user: '{0}', ip: '{1}', user-agent: '{2}', path: '{3}'}}" + details = "{{user: '{0}', ip: '{1}', user-agent: '{2}', path: '{3}'}}" expected = details.format(username, ip, user_agent, path_info) actual = get_client_str(username, ip, user_agent, path_info) self.assertEqual(expected, actual) @patch('axes.decorators.VERBOSE', False) - def test_non_verbose_client_details(self): + def test_non_verbose_ip_only_client_details(self): username = 'test@example.com' ip = '127.0.0.1' user_agent = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)' @@ -966,6 +964,87 @@ class UtilsTest(TestCase): self.assertEqual(expected, actual) + @patch('axes.decorators.AXES_ONLY_USER_FAILURES', True) + @patch('axes.decorators.VERBOSE', True) + def test_verbose_user_only_client_details(self): + username = 'test@example.com' + ip = '127.0.0.1' + user_agent = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)' + path_info = '/admin/' + + details = "{{user: '{0}', ip: '{1}', user-agent: '{2}', path: '{3}'}}" + expected = details.format(username, ip, user_agent, path_info) + actual = get_client_str(username, ip, user_agent, path_info) + + self.assertEqual(expected, actual) + + @patch('axes.decorators.AXES_ONLY_USER_FAILURES', True) + @patch('axes.decorators.VERBOSE', False) + def test_non_verbose_user_only_client_details(self): + username = 'test@example.com' + ip = '127.0.0.1' + user_agent = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)' + path_info = '/admin/' + + expected = username + actual = get_client_str(username, ip, user_agent, path_info) + + self.assertEqual(expected, actual) + + @patch('axes.decorators.LOCK_OUT_BY_COMBINATION_USER_AND_IP', True) + @patch('axes.decorators.VERBOSE', True) + def test_verbose_user_ip_combo_client_details(self): + username = 'test@example.com' + ip = '127.0.0.1' + user_agent = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)' + path_info = '/admin/' + + details = "{{user: '{0}', ip: '{1}', user-agent: '{2}', path: '{3}'}}" + expected = details.format(username, ip, user_agent, path_info) + actual = get_client_str(username, ip, user_agent, path_info) + + self.assertEqual(expected, actual) + + @patch('axes.decorators.LOCK_OUT_BY_COMBINATION_USER_AND_IP', True) + @patch('axes.decorators.VERBOSE', False) + def test_non_verbose_user_ip_combo_client_details(self): + username = 'test@example.com' + ip = '127.0.0.1' + user_agent = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)' + path_info = '/admin/' + + expected = '{0} from {1}'.format(username, ip) + actual = get_client_str(username, ip, user_agent, path_info) + + self.assertEqual(expected, actual) + + @patch('axes.decorators.USE_USER_AGENT', True) + @patch('axes.decorators.VERBOSE', True) + def test_verbose_user_agent_client_details(self): + username = 'test@example.com' + ip = '127.0.0.1' + user_agent = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)' + path_info = '/admin/' + + details = "{{user: '{0}', ip: '{1}', user-agent: '{2}', path: '{3}'}}" + expected = details.format(username, ip, user_agent, path_info) + actual = get_client_str(username, ip, user_agent, path_info) + + self.assertEqual(expected, actual) + + @patch('axes.decorators.USE_USER_AGENT', True) + @patch('axes.decorators.VERBOSE', False) + def test_non_verbose_user_agent_client_details(self): + username = 'test@example.com' + ip = '127.0.0.1' + user_agent = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)' + path_info = '/admin/' + + expected = ip + '(user-agent={0})'.format(user_agent) + actual = get_client_str(username, ip, user_agent, path_info) + + self.assertEqual(expected, actual) + class GetIPProxyTest(TestCase): """Test get_ip returns correct addresses with proxy @@ -1030,6 +1109,7 @@ class GetIPProxyCustomHeaderTest(TestCase): self.request.META[settings.AXES_REVERSE_PROXY_HEADER] = header self.assertEqual(self.ip, get_ip(self.request)) + class GetIPNumProxiesTest(TestCase): """Test that get_ip returns the correct last IP when NUM_PROXIES is configured """