test(backend): add coverage for services tasks and apis
This commit is contained in:
36
apps/users/tests/test_utils.py
Normal file
36
apps/users/tests/test_utils.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from django.test import RequestFactory, TestCase
|
||||
|
||||
from apps.users.models import LoginAttempt, User
|
||||
from apps.users.utils import _get_ip, record_login_attempt
|
||||
|
||||
|
||||
class UserUtilsTests(TestCase):
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
cls.user = User.objects.create_user(mobile="09120000051", password="secret123")
|
||||
|
||||
def setUp(self):
|
||||
self.factory = RequestFactory()
|
||||
|
||||
def test_get_ip_returns_none_without_request(self):
|
||||
self.assertIsNone(_get_ip(None))
|
||||
|
||||
def test_get_ip_prefers_forwarded_header(self):
|
||||
request = self.factory.get("/", HTTP_X_FORWARDED_FOR="1.1.1.1, 2.2.2.2")
|
||||
|
||||
self.assertEqual(_get_ip(request), "1.1.1.1")
|
||||
|
||||
def test_get_ip_falls_back_to_remote_addr(self):
|
||||
request = self.factory.get("/", REMOTE_ADDR="3.3.3.3")
|
||||
|
||||
self.assertEqual(_get_ip(request), "3.3.3.3")
|
||||
|
||||
def test_record_login_attempt_persists_attempt(self):
|
||||
request = self.factory.get("/", REMOTE_ADDR="4.4.4.4")
|
||||
|
||||
record_login_attempt(request, user=self.user, status=LoginAttempt.StatusType.SUCCESS)
|
||||
|
||||
attempt = LoginAttempt.objects.get()
|
||||
self.assertEqual(attempt.user, self.user)
|
||||
self.assertEqual(attempt.status, LoginAttempt.StatusType.SUCCESS)
|
||||
self.assertEqual(attempt.ip_address, "4.4.4.4")
|
||||
Reference in New Issue
Block a user