test_searching_users.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. import pytest
  2. from ....acl.models import Role
  3. from ....test import assert_contains, assert_not_contains
  4. from ...models import Rank
  5. from ...test import create_test_user
  6. @pytest.fixture
  7. def user_a(db):
  8. return create_test_user("Tyrael", "test123@test.org")
  9. @pytest.fixture
  10. def user_b(db):
  11. return create_test_user("Tyrion", "test321@gmail.com")
  12. @pytest.fixture
  13. def user_c(db):
  14. return create_test_user("Karen", "other432@gmail.com")
  15. def test_search_finds_user_by_username(admin_client, users_admin_link, user_a):
  16. response = admin_client.get("%s&username=Tyrael" % users_admin_link)
  17. assert_contains(response, user_a.username)
  18. def test_search_excludes_users_with_different_username(
  19. admin_client, users_admin_link, user_b, user_c
  20. ):
  21. response = admin_client.get("%s&username=Tyrael" % users_admin_link)
  22. assert_not_contains(response, user_b.username)
  23. assert_not_contains(response, user_c.username)
  24. def test_search_finds_users_by_username_start(
  25. admin_client, users_admin_link, user_a, user_b
  26. ):
  27. response = admin_client.get("%s&username=Tyr*" % users_admin_link)
  28. assert_contains(response, user_a.username)
  29. assert_contains(response, user_b.username)
  30. def test_search_by_username_start_excludes_users_with_different_username(
  31. admin_client, users_admin_link, user_c
  32. ):
  33. response = admin_client.get("%s&username=Tyr*" % users_admin_link)
  34. assert_not_contains(response, user_c.username)
  35. def test_search_finds_user_by_username_end(admin_client, users_admin_link, user_a):
  36. response = admin_client.get("%s&username=*ael" % users_admin_link)
  37. assert_contains(response, user_a.username)
  38. def test_search_by_username_end_excludes_users_with_different_username(
  39. admin_client, users_admin_link, user_b, user_c
  40. ):
  41. response = admin_client.get("%s&username=*ael" % users_admin_link)
  42. assert_not_contains(response, user_b.username)
  43. assert_not_contains(response, user_c.username)
  44. def test_search_finds_users_by_username_content(
  45. admin_client, users_admin_link, user_a, user_b
  46. ):
  47. response = admin_client.get("%s&username=*yr*" % users_admin_link)
  48. assert_contains(response, user_a.username)
  49. assert_contains(response, user_b.username)
  50. def test_search_by_username_content_excludes_users_with_different_username(
  51. admin_client, users_admin_link, user_c
  52. ):
  53. response = admin_client.get("%s&username=*yr*" % users_admin_link)
  54. assert_not_contains(response, user_c.username)
  55. def test_search_finds_user_by_email(admin_client, users_admin_link, user_a):
  56. response = admin_client.get("%s&email=test123@test.org" % users_admin_link)
  57. assert_contains(response, user_a.email)
  58. def test_search_excludes_users_with_different_email(
  59. admin_client, users_admin_link, user_b, user_c
  60. ):
  61. response = admin_client.get("%s&email=test123@test.org" % users_admin_link)
  62. assert_not_contains(response, user_b.email)
  63. assert_not_contains(response, user_c.email)
  64. def test_search_finds_users_by_email_start(
  65. admin_client, users_admin_link, user_a, user_b
  66. ):
  67. response = admin_client.get("%s&email=test*" % users_admin_link)
  68. assert_contains(response, user_a.email)
  69. assert_contains(response, user_b.email)
  70. def test_search_by_email_start_excludes_users_with_different_email(
  71. admin_client, users_admin_link, user_c
  72. ):
  73. response = admin_client.get("%s&email=test*" % users_admin_link)
  74. assert_not_contains(response, user_c.email)
  75. def test_search_finds_user_by_email_end(admin_client, users_admin_link, user_a):
  76. response = admin_client.get("%s&email=*org" % users_admin_link)
  77. assert_contains(response, user_a.email)
  78. def test_search_by_email_end_excludes_users_with_different_email(
  79. admin_client, users_admin_link, user_b, user_c
  80. ):
  81. response = admin_client.get("%s&email=*org" % users_admin_link)
  82. assert_not_contains(response, user_b.email)
  83. assert_not_contains(response, user_c.email)
  84. def test_search_finds_users_by_email_content(
  85. admin_client, users_admin_link, user_b, user_c
  86. ):
  87. response = admin_client.get("%s&email=*@gmail*" % users_admin_link)
  88. assert_contains(response, user_b.email)
  89. assert_contains(response, user_c.email)
  90. def test_search_by_email_content_excludes_users_with_different_email(
  91. admin_client, users_admin_link, user_a
  92. ):
  93. response = admin_client.get("%s&email=*@gmail*" % users_admin_link)
  94. assert_not_contains(response, user_a.email)
  95. @pytest.fixture
  96. def rank(db):
  97. return Rank.objects.create(name="Test Rank")
  98. def test_search_finds_user_with_rank(admin_client, users_admin_link, rank):
  99. user = create_test_user("UserWithRank", "rank@example.org", rank=rank)
  100. response = admin_client.get("%s&rank=%s" % (users_admin_link, rank.pk))
  101. assert_contains(response, user.username)
  102. def test_staff_users_search_excludes_user_without_rank(
  103. admin_client, users_admin_link, rank
  104. ):
  105. user = create_test_user("RegularUser", "regular@example.org")
  106. response = admin_client.get("%s&rank=%s" % (users_admin_link, rank.pk))
  107. assert_not_contains(response, user.username)
  108. @pytest.fixture
  109. def role(db):
  110. return Role.objects.create(name="Test Role")
  111. def test_search_finds_user_with_role(admin_client, users_admin_link, role):
  112. user = create_test_user("UserWithRole", "role@example.org")
  113. user.roles.add(role)
  114. response = admin_client.get("%s&role=%s" % (users_admin_link, role.pk))
  115. assert_contains(response, user.username)
  116. def test_staff_users_search_excludes_user_without_role(
  117. admin_client, users_admin_link, role
  118. ):
  119. user = create_test_user("RegularUser", "regular@example.org")
  120. response = admin_client.get("%s&role=%s" % (users_admin_link, role.pk))
  121. assert_not_contains(response, user.username)
  122. def test_search_finds_inactive_user(admin_client, users_admin_link):
  123. user = create_test_user(
  124. "InactiveUser", "inactive@example.org", requires_activation=1
  125. )
  126. response = admin_client.get("%s&is_inactive=1" % users_admin_link)
  127. assert_contains(response, user.username)
  128. def test_inactive_users_search_excludes_activated_users(admin_client, users_admin_link):
  129. user = create_test_user(
  130. "ActivatedUser", "activated@example.org", requires_activation=0
  131. )
  132. response = admin_client.get("%s&is_inactive=1" % users_admin_link)
  133. assert_not_contains(response, user.username)
  134. def test_search_finds_disabled_user(admin_client, users_admin_link):
  135. user = create_test_user("DisabledUser", "disabled@example.org", is_active=False)
  136. response = admin_client.get("%s&is_disabled=1" % users_admin_link)
  137. assert_contains(response, user.username)
  138. def test_disabled_users_search_excludes_active_users(admin_client, users_admin_link):
  139. user = create_test_user("ActiveUser", "active@example.org", is_active=True)
  140. response = admin_client.get("%s&is_disabled=1" % users_admin_link)
  141. assert_not_contains(response, user.username)
  142. def test_search_finds_staff_user(admin_client, users_admin_link):
  143. user = create_test_user("StaffUser", "staff@example.org", is_staff=True)
  144. response = admin_client.get("%s&is_staff=1" % users_admin_link)
  145. assert_contains(response, user.username)
  146. def test_staff_users_search_excludes_non_staff_users(admin_client, users_admin_link):
  147. user = create_test_user("RegularUser", "non_staff@example.org", is_staff=False)
  148. response = admin_client.get("%s&is_staff=1" % users_admin_link)
  149. assert_not_contains(response, user.username)
  150. def test_search_finds_user_deleting_account(admin_client, users_admin_link):
  151. user = create_test_user(
  152. "DeletingUser", "deleting@example.org", is_deleting_account=True
  153. )
  154. response = admin_client.get("%s&is_deleting_account=1" % users_admin_link)
  155. assert_contains(response, user.username)
  156. def test_staff_users_search_excludes_non_deleting_users(admin_client, users_admin_link):
  157. user = create_test_user(
  158. "RegularUser", "regular@example.org", is_deleting_account=False
  159. )
  160. response = admin_client.get("%s&is_deleting_account=1" % users_admin_link)
  161. assert_not_contains(response, user.username)