Send user_logged_in into LoginView on login method

Send user logged in because it's only send on django_login but if REST_SESSION_LOGIN is disable it is not going to be sent
This commit is contained in:
Ángel Berhó 2018-11-06 10:40:43 +01:00
parent 479a40d2cc
commit 4b1b4f92de
3 changed files with 17 additions and 4 deletions

View File

@ -93,6 +93,7 @@ class TestsMixin(object):
self.fb_connect_url = reverse('fb_connect')
self.tw_connect_url = reverse('tw_connect')
self.social_account_list_url = reverse('social_account_list')
self.signal_sent = False
def _login(self):
payload = {

View File

@ -1,5 +1,5 @@
from django.test import TestCase, override_settings
from django.contrib.auth import get_user_model
from django.contrib.auth import get_user_model, user_logged_in
from django.core import mail
from django.conf import settings
from django.utils.encoding import force_text
@ -66,13 +66,15 @@ class APIBasicTests(TestsMixin, TestCase):
result['token'] = default_token_generator.make_token(user)
return result
def on_login(self, sender, **kwargs):
self.signal_sent = True
@override_settings(ACCOUNT_AUTHENTICATION_METHOD=account_app_settings.AuthenticationMethod.EMAIL)
def test_login_failed_email_validation(self):
payload = {
"email": '',
"password": self.PASS
}
resp = self.post(self.login_url, data=payload, status_code=400)
self.assertEqual(resp.json['non_field_errors'][0], u'Must include "email" and "password".')
@ -105,11 +107,15 @@ class APIBasicTests(TestsMixin, TestCase):
self.post(self.password_change_url, status_code=403)
# connect to user logged in
user_logged_in.connect(self.on_login)
# create user
user = get_user_model().objects.create_user(self.USERNAME, '', self.PASS)
self.post(self.login_url, data=payload, status_code=200)
self.assertEqual('key' in self.response.json.keys(), True)
self.assertTrue(self.signal_sent)
self.token = self.response.json['key']
self.post(self.password_change_url, status_code=400)

View File

@ -1,7 +1,7 @@
from django.contrib.auth import (
login as django_login,
logout as django_logout
)
logout as django_logout,
user_logged_in)
from django.conf import settings
from django.contrib.auth import get_user_model
from django.core.exceptions import ObjectDoesNotExist
@ -69,6 +69,12 @@ class LoginView(GenericAPIView):
if getattr(settings, 'REST_SESSION_LOGIN', True):
self.process_login()
else:
'''
Send user logged in because it's only send on django_login but if REST_SESSION_LOGIN is disable it
is not going to be sent
'''
user_logged_in.send(sender=self.user.__class__, request=self.request, user=self.user)
def get_response(self):
serializer_class = self.get_response_serializer()