Skip to content

Commit

Permalink
Merge pull request #53 from johngian/43-logout
Browse files Browse the repository at this point in the history
Add helper view to logout users.
  • Loading branch information
johngian committed Nov 18, 2016
2 parents f71f9b6 + cb5dce1 commit dc68193
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
1 change: 1 addition & 0 deletions mozilla_django_oidc/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@
name='oidc_authentication_callback'),
url(r'^authenticate/$', views.OIDCAuthenticationRequestView.as_view(),
name='oidc_authentication_init'),
url(r'^logout/$', views.OIDCLogoutView.as_view(), name='oidc_logout'),
]
15 changes: 15 additions & 0 deletions mozilla_django_oidc/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,18 @@ def get(self, request):
query = urlencode(params)
redirect_url = '{url}?{query}'.format(url=self.OIDC_OP_AUTH_ENDPOINT, query=query)
return HttpResponseRedirect(redirect_url)


class OIDCLogoutView(View):
"""Logout helper view"""

http_method_names = ['get']

@property
def redirect_url(self):
return import_from_settings('LOGOUT_REDIRECT_URL', '/')

def get(self, request):
"""Log the user out"""
auth.logout(request)
return HttpResponseRedirect(self.redirect_url)
18 changes: 18 additions & 0 deletions tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -287,3 +287,21 @@ def test_missing_next_url(self):
login_view(request)
self.assertTrue('oidc_login_next' in request.session)
self.assertTrue(request.session['oidc_login_next'] is None)


class OIDCLogoutViewTestCase(TestCase):
def setUp(self):
self.factory = RequestFactory()

@override_settings(LOGOUT_REDIRECT_URL='/example-logout')
def test_get(self):
url = reverse('oidc_logout')
request = self.factory.get(url)
logout_view = views.OIDCLogoutView.as_view()

with patch('mozilla_django_oidc.views.auth.logout') as mock_logout:
response = logout_view(request)
mock_logout.assert_called_once_with(request)

self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, '/example-logout')

0 comments on commit dc68193

Please sign in to comment.