testutils.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from django.contrib.auth import get_user_model
  2. from misago.core.testutils import MisagoTestCase
  3. from .models import AnonymousUser, Online
  4. from .setupnewuser import setup_new_user
  5. User = get_user_model()
  6. class UserTestCase(MisagoTestCase):
  7. USER_PASSWORD = "Pass.123"
  8. USER_IP = '127.0.0.1'
  9. def setUp(self):
  10. super().setUp()
  11. self.get_initial_user()
  12. def get_initial_user(self):
  13. self.user = self.get_anonymous_user()
  14. def get_anonymous_user(self):
  15. return AnonymousUser()
  16. def get_authenticated_user(self):
  17. return create_test_user(
  18. "TestUser",
  19. "test@user.com",
  20. self.USER_PASSWORD,
  21. joined_from_ip=self.USER_IP,
  22. )
  23. def get_superuser(self):
  24. return create_test_superuser(
  25. "TestSuperUser",
  26. "test@superuser.com",
  27. self.USER_PASSWORD,
  28. joined_from_ip=self.USER_IP,
  29. )
  30. def login_user(self, user, password=None):
  31. self.client.force_login(user)
  32. def logout_user(self):
  33. if self.user.is_authenticated:
  34. Online.objects.filter(user=self.user).delete()
  35. self.client.logout()
  36. class AuthenticatedUserTestCase(UserTestCase):
  37. def get_initial_user(self):
  38. self.user = self.get_authenticated_user()
  39. self.login_user(self.user)
  40. def reload_user(self):
  41. self.user.refresh_from_db()
  42. class SuperUserTestCase(AuthenticatedUserTestCase):
  43. def get_initial_user(self):
  44. self.user = self.get_superuser()
  45. self.login_user(self.user)
  46. def create_test_user(username, email, password=None, **extra_fields):
  47. """Faster counterpart of regular `create_user` followed by `setup_new_user`"""
  48. if "avatars" not in extra_fields:
  49. extra_fields["avatars"] = user_placeholder_avatars
  50. return User.objects.create_user(username, email, password, **extra_fields)
  51. def create_test_superuser(username, email, password=None, **extra_fields):
  52. """Faster counterpart of regular `create_superuser` followed by `setup_new_user`"""
  53. if "avatars" not in extra_fields:
  54. extra_fields["avatars"] = user_placeholder_avatars
  55. return User.objects.create_superuser(username, email, password, **extra_fields)
  56. user_placeholder_avatars = [
  57. {"size": 400, "url": "http://placekitten.com/400/400"},
  58. {"size": 200, "url": "http://placekitten.com/200/200"},
  59. {"size": 100, "url": "http://placekitten.com/100/100"},
  60. ]