From 6f0f5c26f225762a0fa27b79568e50901da1d66c Mon Sep 17 00:00:00 2001 From: Ken Cochrane Date: Fri, 2 Jan 2015 16:02:09 -0500 Subject: [PATCH] added more unit tests --- defender/config.py | 7 +++++-- defender/tests.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/defender/config.py b/defender/config.py index fa26f06..46295e4 100644 --- a/defender/config.py +++ b/defender/config.py @@ -31,8 +31,11 @@ CACHE_PREFIX = get_setting('DEFENDER_CACHE_PREFIX', 'defender') REVERSE_PROXY_HEADER = get_setting('DEFENDER_REVERSE_PROXY_HEADER', 'HTTP_X_FORWARDED_FOR') -# how long to wait before the bad login attempt gets forgotten. in seconds. -COOLOFF_TIME = get_setting('DEFENDER_COOLOFF_TIME', 300) # seconds +try: + # how long to wait before the bad login attempt gets forgotten. in seconds. + COOLOFF_TIME = int(get_setting('DEFENDER_COOLOFF_TIME', 300)) # seconds +except ValueError: + raise Exception('COOLOFF_TIME needs to be an integer') # pragma: no cover LOCKOUT_TEMPLATE = get_setting('DEFENDER_LOCKOUT_TEMPLATE') diff --git a/defender/tests.py b/defender/tests.py index 2dfb089..9c5e382 100644 --- a/defender/tests.py +++ b/defender/tests.py @@ -6,7 +6,10 @@ from mock import patch import mockredis from django.test import TestCase +from django.test.client import RequestFactory from django.contrib.auth.models import User +from django.contrib.auth.models import AnonymousUser +from django.contrib.sessions.backends.db import SessionStore from django.core.urlresolvers import NoReverseMatch from django.core.urlresolvers import reverse @@ -148,6 +151,36 @@ class AccessAttemptTest(TestCase): response = self._login(is_valid=True, user_agent=long_user_agent) self.assertNotContains(response, LOGIN_FORM_KEY, status_code=302) + @patch('defender.config.BEHIND_REVERSE_PROXY', True) + def test_get_ip_reverse_proxy(self): + """ Tests if can handle a long user agent + """ + request_factory = RequestFactory() + request = request_factory.get(ADMIN_LOGIN_URL) + request.user = AnonymousUser() + request.session = SessionStore() + + request.META['HTTP_X_FORWARDED_FOR'] = '192.168.24.24' + self.assertEquals(utils.get_ip(request), '192.168.24.24') + + request_factory = RequestFactory() + request = request_factory.get(ADMIN_LOGIN_URL) + request.user = AnonymousUser() + request.session = SessionStore() + + request.META['REMOTE_ADDR'] = '24.24.24.24' + self.assertEquals(utils.get_ip(request), '24.24.24.24') + + def test_get_ip(self): + """ Tests if can handle a long user agent + """ + request_factory = RequestFactory() + request = request_factory.get(ADMIN_LOGIN_URL) + request.user = AnonymousUser() + request.session = SessionStore() + + self.assertEquals(utils.get_ip(request), '127.0.0.1') + def test_long_user_agent_not_valid(self): """ Tests if can handle a long user agent with failure """