|
2 | 2 | from django.test import TestCase
|
3 | 3 | from django.contrib.auth import get_user_model
|
4 | 4 | from django.core import mail
|
| 5 | +from django.conf import settings |
5 | 6 | from django.test.utils import override_settings
|
6 | 7 | from django.utils.encoding import force_text
|
7 | 8 |
|
@@ -90,6 +91,51 @@ def test_login(self):
|
90 | 91 | # test empty payload
|
91 | 92 | self.post(self.login_url, data={}, status_code=400)
|
92 | 93 |
|
| 94 | + def test_login_by_email(self): |
| 95 | + # starting test without allauth app |
| 96 | + settings.INSTALLED_APPS.remove('allauth') |
| 97 | + |
| 98 | + payload = { |
| 99 | + "email": self.EMAIL.lower(), |
| 100 | + "password": self.PASS |
| 101 | + } |
| 102 | + # there is no users in db so it should throw error (400) |
| 103 | + self.post(self.login_url, data=payload, status_code=400) |
| 104 | + |
| 105 | + self.post(self.password_change_url, status_code=403) |
| 106 | + |
| 107 | + # create user |
| 108 | + user = get_user_model().objects.create_user(self.USERNAME, self.EMAIL, self.PASS) |
| 109 | + |
| 110 | + # test auth by email |
| 111 | + self.post(self.login_url, data=payload, status_code=200) |
| 112 | + self.assertEqual('key' in self.response.json.keys(), True) |
| 113 | + self.token = self.response.json['key'] |
| 114 | + |
| 115 | + # test auth by email in different case |
| 116 | + payload = { |
| 117 | + "email": self.EMAIL.upper(), |
| 118 | + "password": self.PASS |
| 119 | + } |
| 120 | + self.post(self.login_url, data=payload, status_code=200) |
| 121 | + self.assertEqual('key' in self.response.json.keys(), True) |
| 122 | + self.token = self.response.json['key'] |
| 123 | + |
| 124 | + # test inactive user |
| 125 | + user.is_active = False |
| 126 | + user.save() |
| 127 | + self.post(self.login_url, data=payload, status_code=400) |
| 128 | + |
| 129 | + # test wrong email/password |
| 130 | + payload = { |
| 131 | + "email": 't' + self.EMAIL, |
| 132 | + "password": self.PASS |
| 133 | + } |
| 134 | + self.post(self.login_url, data=payload, status_code=400) |
| 135 | + |
| 136 | + # test empty payload |
| 137 | + self.post(self.login_url, data={}, status_code=400) |
| 138 | + |
93 | 139 | def test_password_change(self):
|
94 | 140 | login_payload = {
|
95 | 141 | "username": self.USERNAME,
|
|
0 commit comments