diff --git a/mayan/apps/authentication/settings.py b/mayan/apps/authentication/settings.py index f0b7c0f409..e15f2f083b 100644 --- a/mayan/apps/authentication/settings.py +++ b/mayan/apps/authentication/settings.py @@ -6,7 +6,7 @@ from mayan.apps.smart_settings import Namespace from .literals import DEFAULT_LOGIN_METHOD, DEFAULT_MAXIMUM_SESSION_LENGTH -namespace = Namespace(name='authentication', label=_('Authentication')) +namespace = Namespace(label=_('Authentication'), name='authentication') setting_login_method = namespace.add_setting( global_name='AUTHENTICATION_LOGIN_METHOD', default=DEFAULT_LOGIN_METHOD, help_text=_( diff --git a/mayan/apps/authentication/tests/test_views.py b/mayan/apps/authentication/tests/test_views.py index 81e11fbf4b..4304aa45b5 100644 --- a/mayan/apps/authentication/tests/test_views.py +++ b/mayan/apps/authentication/tests/test_views.py @@ -21,95 +21,98 @@ class UserLoginTestCase(GenericViewTestCase): """ Test that users can login via the supported authentication methods """ + authenticated_url = '{}?next={}'.format( + reverse(settings.LOGIN_URL), reverse(viewname='documents:document_list') + ) def setUp(self): super(UserLoginTestCase, self).setUp() Namespace.invalidate_cache_all() + def _request_authenticated_view(self): + return self.get(viewname='documents:document_list') + @override_settings(AUTHENTICATION_LOGIN_METHOD='username') def test_normal_behavior(self): - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() self.assertRedirects( - response, - 'http://testserver/authentication/login/?next=/documents/list/' + response=response, expected_url=self.authenticated_url ) @override_settings(AUTHENTICATION_LOGIN_METHOD='username') def test_username_login(self): - logged_in = self.client.login( + logged_in = self.login( username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD ) self.assertTrue(logged_in) - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() # We didn't get redirected to the login URL self.assertEqual(response.status_code, 200) @override_settings(AUTHENTICATION_LOGIN_METHOD='email') def test_email_login(self): with self.settings(AUTHENTICATION_BACKENDS=(TEST_EMAIL_AUTHENTICATION_BACKEND,)): - logged_in = self.client.login( + logged_in = self.login( username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD ) self.assertFalse(logged_in) - logged_in = self.client.login( + logged_in = self.login( email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD ) self.assertTrue(logged_in) - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() # We didn't get redirected to the login URL self.assertEqual(response.status_code, 200) @override_settings(AUTHENTICATION_LOGIN_METHOD='username') def test_username_login_via_views(self): - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() self.assertRedirects( - response, - 'http://testserver/authentication/login/?next=/documents/list/' + response=response, expected_url=self.authenticated_url ) - response = self.client.post( - reverse(settings.LOGIN_URL), { + response = self.post( + viewname=settings.LOGIN_URL, data={ 'username': TEST_ADMIN_USERNAME, 'password': TEST_ADMIN_PASSWORD } ) - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() # We didn't get redirected to the login URL self.assertEqual(response.status_code, 200) @override_settings(AUTHENTICATION_LOGIN_METHOD='email') def test_email_login_via_views(self): with self.settings(AUTHENTICATION_BACKENDS=(TEST_EMAIL_AUTHENTICATION_BACKEND,)): - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() self.assertRedirects( - response, - 'http://testserver/authentication/login/?next=/documents/list/' + response=response, expected_url=self.authenticated_url ) - response = self.client.post( - reverse(settings.LOGIN_URL), { + response = self.post( + viewname=settings.LOGIN_URL, data={ 'email': TEST_ADMIN_EMAIL, 'password': TEST_ADMIN_PASSWORD }, follow=True ) self.assertEqual(response.status_code, 200) - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() # We didn't get redirected to the login URL self.assertEqual(response.status_code, 200) @override_settings(AUTHENTICATION_LOGIN_METHOD='username') def test_username_remember_me(self): - response = self.client.post( - reverse(settings.LOGIN_URL), { + response = self.post( + viewname=settings.LOGIN_URL, data={ 'username': TEST_ADMIN_USERNAME, 'password': TEST_ADMIN_PASSWORD, 'remember_me': True }, follow=True ) - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() self.assertEqual(response.status_code, 200) self.assertEqual( @@ -120,15 +123,15 @@ class UserLoginTestCase(GenericViewTestCase): @override_settings(AUTHENTICATION_LOGIN_METHOD='username') def test_username_dont_remember_me(self): - response = self.client.post( - reverse(settings.LOGIN_URL), { + response = self.post( + viewname=settings.LOGIN_URL, data={ 'username': TEST_ADMIN_USERNAME, 'password': TEST_ADMIN_PASSWORD, 'remember_me': False }, follow=True ) - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() self.assertEqual(response.status_code, 200) self.assertTrue(self.client.session.get_expire_at_browser_close()) @@ -136,15 +139,15 @@ class UserLoginTestCase(GenericViewTestCase): @override_settings(AUTHENTICATION_LOGIN_METHOD='email') def test_email_remember_me(self): with self.settings(AUTHENTICATION_BACKENDS=(TEST_EMAIL_AUTHENTICATION_BACKEND,)): - response = self.client.post( - reverse(settings.LOGIN_URL), { + response = self.post( + viewname=settings.LOGIN_URL, data={ 'email': TEST_ADMIN_EMAIL, 'password': TEST_ADMIN_PASSWORD, 'remember_me': True }, follow=True ) - response = self.client.get(reverse('documents:document_list')) + response = self._request_authenticated_view() self.assertEqual(response.status_code, 200) self.assertEqual( @@ -164,7 +167,7 @@ class UserLoginTestCase(GenericViewTestCase): } ) - response = self.get(viewname='documents:document_list') + response = self._request_authenticated_view() self.assertEqual(response.status_code, 200) self.assertTrue(self.client.session.get_expire_at_browser_close()) @@ -196,16 +199,16 @@ class UserLoginTestCase(GenericViewTestCase): username=TEST_ADMIN_USERNAME, password=TEST_USER_PASSWORD_EDITED ) - response = self.get(viewname='documents:document_list') + response = self._request_authenticated_view() self.assertEqual(response.status_code, 200) def test_username_login_redirect(self): - TEST_REDIRECT_URL = reverse('common:about_view') + TEST_REDIRECT_URL = reverse(viewname='common:about_view') - response = self.client.post( - '{}?next={}'.format( + response = self.post( + path='{}?next={}'.format( reverse(settings.LOGIN_URL), TEST_REDIRECT_URL - ), { + ), data={ 'username': TEST_ADMIN_USERNAME, 'password': TEST_ADMIN_PASSWORD, 'remember_me': False diff --git a/mayan/apps/authentication/urls.py b/mayan/apps/authentication/urls.py index 50bf6e7c36..81e8352c23 100644 --- a/mayan/apps/authentication/urls.py +++ b/mayan/apps/authentication/urls.py @@ -11,32 +11,33 @@ from .views import ( ) urlpatterns = [ - url(r'^login/$', login_view, name='login_view'), + url(regex=r'^login/$', name='login_view', view=login_view), url( - r'^password/change/done/$', password_change_done, - name='password_change_done' + regex=r'^logout/$', kwargs={'next_page': settings.LOGIN_REDIRECT_URL}, + name='logout_view', view=logout ), url( - r'^password/change/$', password_change_view, - name='password_change_view' + regex=r'^password/change/$', name='password_change_view', + view=password_change_view ), url( - r'^logout/$', logout, {'next_page': settings.LOGIN_REDIRECT_URL}, - name='logout_view' + regex=r'^password/change/done/$', name='password_change_done', + view=password_change_done ), url( - r'^password/reset/$', password_reset_view, name='password_reset_view' + regex=r'^password/reset/$', name='password_reset_view', + view=password_reset_view ), url( - r'^password/reset/confirm/(?P[0-9A-Za-z_\-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', - password_reset_confirm_view, name='password_reset_confirm_view' + regex=r'^password/reset/confirm/(?P[0-9A-Za-z_\-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', + name='password_reset_confirm_view', view=password_reset_confirm_view ), url( - r'^password/reset/complete/$', password_reset_complete_view, - name='password_reset_complete_view' + regex=r'^password/reset/complete/$', + name='password_reset_complete_view', view=password_reset_complete_view ), url( - r'^password/reset/done/$', password_reset_done_view, - name='password_reset_done_view' + regex=r'^password/reset/done/$', name='password_reset_done_view', + view=password_reset_done_view ), ] diff --git a/mayan/apps/authentication/views.py b/mayan/apps/authentication/views.py index 6a657b7350..0d038d9042 100644 --- a/mayan/apps/authentication/views.py +++ b/mayan/apps/authentication/views.py @@ -91,7 +91,7 @@ def password_change_view(request): return password_change( request, extra_context=extra_context, template_name='appearance/generic_form.html', - post_change_redirect=reverse('authentication:password_change_done'), + post_change_redirect=reverse(viewname='authentication:password_change_done'), ) @@ -112,7 +112,7 @@ def password_reset_complete_view(request): } return password_reset_complete( - request, extra_context=extra_context, + request=request, extra_context=extra_context, template_name='authentication/password_reset_complete.html' ) @@ -124,7 +124,7 @@ def password_reset_confirm_view(request, uidb64=None, token=None): } return password_reset_confirm( - request, extra_context=extra_context, + request=request, extra_context=extra_context, template_name='authentication/password_reset_confirm.html', post_reset_redirect=reverse( 'authentication:password_reset_complete_view' @@ -139,7 +139,7 @@ def password_reset_done_view(request): } return password_reset_done( - request, extra_context=extra_context, + request=request, extra_context=extra_context, template_name='authentication/password_reset_done.html' ) @@ -151,7 +151,7 @@ def password_reset_view(request): } return password_reset( - request, extra_context=extra_context, + request=request, extra_context=extra_context, email_template_name='authentication/password_reset_email.html', extra_email_context={ 'project_title': setting_project_title.value,