|
@@ -0,0 +1,228 @@
|
|
|
+import pytest
|
|
|
+
|
|
|
+from ....acl.models import Role
|
|
|
+from ....test import assert_contains, assert_not_contains
|
|
|
+from ...models import Rank
|
|
|
+from ...test import create_test_user
|
|
|
+
|
|
|
+
|
|
|
+@pytest.fixture
|
|
|
+def user_a(db):
|
|
|
+ return create_test_user("Tyrael", "test123@test.org")
|
|
|
+
|
|
|
+
|
|
|
+@pytest.fixture
|
|
|
+def user_b(db):
|
|
|
+ return create_test_user("Tyrion", "test321@gmail.com")
|
|
|
+
|
|
|
+
|
|
|
+@pytest.fixture
|
|
|
+def user_c(db):
|
|
|
+ return create_test_user("Karen", "other432@gmail.com")
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_user_by_username(admin_client, users_admin_link, user_a):
|
|
|
+ response = admin_client.get("%s&username=Tyrael" % users_admin_link)
|
|
|
+ assert_contains(response, user_a.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_excludes_users_with_different_username(
|
|
|
+ admin_client, users_admin_link, user_b, user_c
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&username=Tyrael" % users_admin_link)
|
|
|
+ assert_not_contains(response, user_b.username)
|
|
|
+ assert_not_contains(response, user_c.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_users_by_username_start(
|
|
|
+ admin_client, users_admin_link, user_a, user_b
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&username=Tyr*" % users_admin_link)
|
|
|
+ assert_contains(response, user_a.username)
|
|
|
+ assert_contains(response, user_b.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_by_username_start_excludes_users_with_different_username(
|
|
|
+ admin_client, users_admin_link, user_c
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&username=Tyr*" % users_admin_link)
|
|
|
+ assert_not_contains(response, user_c.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_user_by_username_end(admin_client, users_admin_link, user_a):
|
|
|
+ response = admin_client.get("%s&username=*ael" % users_admin_link)
|
|
|
+ assert_contains(response, user_a.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_by_username_end_excludes_users_with_different_username(
|
|
|
+ admin_client, users_admin_link, user_b, user_c
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&username=*ael" % users_admin_link)
|
|
|
+ assert_not_contains(response, user_b.username)
|
|
|
+ assert_not_contains(response, user_c.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_users_by_username_content(
|
|
|
+ admin_client, users_admin_link, user_a, user_b
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&username=*yr*" % users_admin_link)
|
|
|
+ assert_contains(response, user_a.username)
|
|
|
+ assert_contains(response, user_b.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_by_username_content_excludes_users_with_different_username(
|
|
|
+ admin_client, users_admin_link, user_c
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&username=*yr*" % users_admin_link)
|
|
|
+ assert_not_contains(response, user_c.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_user_by_email(admin_client, users_admin_link, user_a):
|
|
|
+ response = admin_client.get("%s&email=test123@test.org" % users_admin_link)
|
|
|
+ assert_contains(response, user_a.email)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_excludes_users_with_different_email(
|
|
|
+ admin_client, users_admin_link, user_b, user_c
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&email=test123@test.org" % users_admin_link)
|
|
|
+ assert_not_contains(response, user_b.email)
|
|
|
+ assert_not_contains(response, user_c.email)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_users_by_email_start(
|
|
|
+ admin_client, users_admin_link, user_a, user_b
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&email=test*" % users_admin_link)
|
|
|
+ assert_contains(response, user_a.email)
|
|
|
+ assert_contains(response, user_b.email)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_by_email_start_excludes_users_with_different_email(
|
|
|
+ admin_client, users_admin_link, user_c
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&email=test*" % users_admin_link)
|
|
|
+ assert_not_contains(response, user_c.email)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_user_by_email_end(admin_client, users_admin_link, user_a):
|
|
|
+ response = admin_client.get("%s&email=*org" % users_admin_link)
|
|
|
+ assert_contains(response, user_a.email)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_by_email_end_excludes_users_with_different_email(
|
|
|
+ admin_client, users_admin_link, user_b, user_c
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&email=*org" % users_admin_link)
|
|
|
+ assert_not_contains(response, user_b.email)
|
|
|
+ assert_not_contains(response, user_c.email)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_users_by_email_content(
|
|
|
+ admin_client, users_admin_link, user_b, user_c
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&email=*@gmail*" % users_admin_link)
|
|
|
+ assert_contains(response, user_b.email)
|
|
|
+ assert_contains(response, user_c.email)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_by_email_content_excludes_users_with_different_email(
|
|
|
+ admin_client, users_admin_link, user_a
|
|
|
+):
|
|
|
+ response = admin_client.get("%s&email=*@gmail*" % users_admin_link)
|
|
|
+ assert_not_contains(response, user_a.email)
|
|
|
+
|
|
|
+
|
|
|
+@pytest.fixture
|
|
|
+def rank(db):
|
|
|
+ return Rank.objects.create(name="Test Rank")
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_user_with_rank(admin_client, users_admin_link, rank):
|
|
|
+ user = create_test_user("UserWithRank", "rank@example.org", rank=rank)
|
|
|
+ response = admin_client.get("%s&rank=%s" % (users_admin_link, rank.pk))
|
|
|
+ assert_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_staff_users_search_excludes_user_without_rank(
|
|
|
+ admin_client, users_admin_link, rank
|
|
|
+):
|
|
|
+ user = create_test_user("RegularUser", "regular@example.org")
|
|
|
+ response = admin_client.get("%s&rank=%s" % (users_admin_link, rank.pk))
|
|
|
+ assert_not_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+@pytest.fixture
|
|
|
+def role(db):
|
|
|
+ return Role.objects.create(name="Test Role")
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_user_with_role(admin_client, users_admin_link, role):
|
|
|
+ user = create_test_user("UserWithRole", "role@example.org")
|
|
|
+ user.roles.add(role)
|
|
|
+ response = admin_client.get("%s&role=%s" % (users_admin_link, role.pk))
|
|
|
+ assert_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_staff_users_search_excludes_user_without_role(
|
|
|
+ admin_client, users_admin_link, role
|
|
|
+):
|
|
|
+ user = create_test_user("RegularUser", "regular@example.org")
|
|
|
+ response = admin_client.get("%s&role=%s" % (users_admin_link, role.pk))
|
|
|
+ assert_not_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_inactive_user(admin_client, users_admin_link):
|
|
|
+ user = create_test_user(
|
|
|
+ "InactiveUser", "inactive@example.org", requires_activation=1
|
|
|
+ )
|
|
|
+ response = admin_client.get("%s&is_inactive=1" % users_admin_link)
|
|
|
+ assert_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_inactive_users_search_excludes_activated_users(admin_client, users_admin_link):
|
|
|
+ user = create_test_user(
|
|
|
+ "ActivatedUser", "activated@example.org", requires_activation=0
|
|
|
+ )
|
|
|
+ response = admin_client.get("%s&is_inactive=1" % users_admin_link)
|
|
|
+ assert_not_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_disabled_user(admin_client, users_admin_link):
|
|
|
+ user = create_test_user("DisabledUser", "disabled@example.org", is_active=False)
|
|
|
+ response = admin_client.get("%s&is_disabled=1" % users_admin_link)
|
|
|
+ assert_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_disabled_users_search_excludes_active_users(admin_client, users_admin_link):
|
|
|
+ user = create_test_user("ActiveUser", "active@example.org", is_active=True)
|
|
|
+ response = admin_client.get("%s&is_disabled=1" % users_admin_link)
|
|
|
+ assert_not_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_staff_user(admin_client, users_admin_link):
|
|
|
+ user = create_test_user("StaffUser", "staff@example.org", is_staff=True)
|
|
|
+ response = admin_client.get("%s&is_staff=1" % users_admin_link)
|
|
|
+ assert_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_staff_users_search_excludes_non_staff_users(admin_client, users_admin_link):
|
|
|
+ user = create_test_user("RegularUser", "non_staff@example.org", is_staff=False)
|
|
|
+ response = admin_client.get("%s&is_staff=1" % users_admin_link)
|
|
|
+ assert_not_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_search_finds_user_deleting_account(admin_client, users_admin_link):
|
|
|
+ user = create_test_user(
|
|
|
+ "DeletingUser", "deleting@example.org", is_deleting_account=True
|
|
|
+ )
|
|
|
+ response = admin_client.get("%s&is_deleting_account=1" % users_admin_link)
|
|
|
+ assert_contains(response, user.username)
|
|
|
+
|
|
|
+
|
|
|
+def test_staff_users_search_excludes_non_deleting_users(admin_client, users_admin_link):
|
|
|
+ user = create_test_user(
|
|
|
+ "RegularUser", "regular@example.org", is_deleting_account=False
|
|
|
+ )
|
|
|
+ response = admin_client.get("%s&is_deleting_account=1" % users_admin_link)
|
|
|
+ assert_not_contains(response, user.username)
|