From 8c65ade2b3508cdb27e7cf7972989bef77099852 Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Fri, 9 Feb 2018 11:44:55 +0100 Subject: [PATCH] Fixes #1563 -- Use iexact matching when querying users (#1973) * Fixes #1563 -- Use iexact mathing when querying users * Add .pytest_cache to gitignore * Make identifier non-optional --- .gitignore | 1 + cadasta/accounts/manager.py | 6 +++--- cadasta/accounts/tests/test_manager.py | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index df74d659c..10aea2bf5 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ wheels/ *.pyc .cache __pycache__/ +.pytest_cache # Coverage .coverage diff --git a/cadasta/accounts/manager.py b/cadasta/accounts/manager.py index 020cb536a..761838397 100644 --- a/cadasta/accounts/manager.py +++ b/cadasta/accounts/manager.py @@ -4,9 +4,9 @@ class UserManager(DjangoUserManager): - def get_from_username_or_email_or_phone(self, identifier=None): - users = self.filter(Q(username=identifier) | Q( - email=identifier) | Q(phone=identifier)) + def get_from_username_or_email_or_phone(self, identifier): + users = self.filter(Q(username__iexact=identifier) | Q( + email__iexact=identifier) | Q(phone=identifier)) users_count = len(users) if users_count == 1: diff --git a/cadasta/accounts/tests/test_manager.py b/cadasta/accounts/tests/test_manager.py index dac53cea2..bc20501b0 100644 --- a/cadasta/accounts/tests/test_manager.py +++ b/cadasta/accounts/tests/test_manager.py @@ -16,6 +16,14 @@ def test_get_from_username(self): assert found == user + def test_get_from_username_non_case_sensitive(self): + user = UserFactory.create(username='TestUser') + found = User.objects.get_from_username_or_email_or_phone( + identifier='testuser' + ) + + assert found == user + def test_get_from_email(self): user = UserFactory.create() found = User.objects.get_from_username_or_email_or_phone( @@ -23,6 +31,13 @@ def test_get_from_email(self): assert found == user + def test_get_from_email_non_case_sensitive(self): + user = UserFactory.create(email='TestUser@example.com') + found = User.objects.get_from_username_or_email_or_phone( + identifier='testuser@example.com') + + assert found == user + def test_get_from_phone(self): user = UserFactory.create() found = User.objects.get_from_username_or_email_or_phone(