Skip to content

Commit 3c0eb4f

Browse files
committed
Added tests for LoginRequiredMiddleware
These explicitly test the login exempt urls setting.
1 parent 26a41ab commit 3c0eb4f

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

tests/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
"BOOLEAN_CLAIM_MAPPING": {"is_staff": "user_is_staff",
7474
"is_superuser": "user_is_superuser"},
7575
"CONFIG_RELOAD_INTERVAL": 0, # Always reload settings
76+
"LOGIN_EXEMPT_URLS": ["^api", "nested/path/"],
7677
}
7778

7879
LOGIN_URL = "django_auth_adfs:login"

tests/test_middleware.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from django.contrib.auth.models import AnonymousUser
2+
from django.http import HttpResponseRedirect
3+
from django.test import RequestFactory, TestCase, override_settings
4+
from django_auth_adfs.middleware import LoginRequiredMiddleware
5+
6+
7+
class LoginRequiredMiddlewareTestCase(TestCase):
8+
def setUp(self):
9+
self.rf = RequestFactory()
10+
self.middleware = LoginRequiredMiddleware(get_response=lambda *args: None)
11+
12+
def test_not_exempt_redirects(self):
13+
request = self.rf.get('/page/')
14+
request.user = AnonymousUser()
15+
response = self.middleware(request)
16+
assert isinstance(response, HttpResponseRedirect)
17+
18+
request = self.rf.get('/nested/redirect/')
19+
request.user = AnonymousUser()
20+
response = self.middleware(request)
21+
assert isinstance(response, HttpResponseRedirect)
22+
23+
24+
def test_exempt(self):
25+
request = self.rf.get('/api')
26+
request.user = AnonymousUser()
27+
response = self.middleware(request)
28+
assert response is None
29+
30+
request = self.rf.get('/nested/path/')
31+
request.user = AnonymousUser()
32+
response = self.middleware(request)
33+
assert response is None
34+
35+
request = self.rf.get('/nested/path/further')
36+
request.user = AnonymousUser()
37+
response = self.middleware(request)
38+
assert response is None

tests/urls.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
from django.urls import include, re_path
1+
from django.urls import include, re_path, path
2+
3+
from .views import page
24

35
urlpatterns = [
46
re_path(r'^oauth2/', include('django_auth_adfs.urls')),
57
re_path(r'^oauth2/', include('django_auth_adfs.drf_urls')),
8+
path("page", page),
69
]

tests/views.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
def test_failed_response(request, error_message, status):
22
pass
3+
4+
def page(request):
5+
pass

0 commit comments

Comments
 (0)