test_user_create_api.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. from django.contrib.auth import get_user_model
  2. from django.core import mail
  3. from django.urls import reverse
  4. from misago.conf import settings
  5. from ..models import Online
  6. from ..testutils import UserTestCase
  7. class UserCreateTests(UserTestCase):
  8. """
  9. tests for new user registration (POST to /api/users/)
  10. """
  11. def setUp(self):
  12. super(UserCreateTests, self).setUp()
  13. self.api_link = '/api/users/'
  14. def test_empty_request(self):
  15. """empty request errors with code 400"""
  16. response = self.client.post(self.api_link)
  17. self.assertEqual(response.status_code, 400)
  18. def test_authenticated_request(self):
  19. """authentiated user request errors with code 403"""
  20. self.login_user(self.get_authenticated_user())
  21. response = self.client.post(self.api_link)
  22. self.assertEqual(response.status_code, 403)
  23. def test_registration_off_request(self):
  24. """registrations off request errors with code 403"""
  25. settings.override_setting('account_activation', 'closed')
  26. response = self.client.post(self.api_link)
  27. self.assertContains(response, 'closed', status_code=403)
  28. def test_registration_creates_active_user(self):
  29. """api creates active and signed in user on POST"""
  30. settings.override_setting('account_activation', 'none')
  31. response = self.client.post(self.api_link, data={
  32. 'username': 'Bob',
  33. 'email': 'bob@bob.com',
  34. 'password': 'pass123'
  35. })
  36. self.assertContains(response, 'active')
  37. self.assertContains(response, 'Bob')
  38. self.assertContains(response, 'bob@bob.com')
  39. User = get_user_model()
  40. User.objects.get_by_username('Bob')
  41. test_user = User.objects.get_by_email('bob@bob.com')
  42. self.assertEqual(Online.objects.filter(user=test_user).count(), 1)
  43. response = self.client.get(reverse('misago:index'))
  44. self.assertContains(response, 'Bob')
  45. self.assertIn('Welcome', mail.outbox[0].subject)
  46. def test_registration_creates_inactive_user(self):
  47. """api creates inactive user on POST"""
  48. settings.override_setting('account_activation', 'user')
  49. response = self.client.post(self.api_link, data={
  50. 'username': 'Bob',
  51. 'email': 'bob@bob.com',
  52. 'password': 'pass123'
  53. })
  54. self.assertContains(response, 'user')
  55. self.assertContains(response, 'Bob')
  56. self.assertContains(response, 'bob@bob.com')
  57. User = get_user_model()
  58. User.objects.get_by_username('Bob')
  59. User.objects.get_by_email('bob@bob.com')
  60. self.assertIn('Welcome', mail.outbox[0].subject)
  61. def test_registration_creates_admin_activated_user(self):
  62. """api creates admin activated user on POST"""
  63. settings.override_setting('account_activation', 'admin')
  64. response = self.client.post(self.api_link, data={
  65. 'username': 'Bob',
  66. 'email': 'bob@bob.com',
  67. 'password': 'pass123'
  68. })
  69. self.assertContains(response, 'admin')
  70. self.assertContains(response, 'Bob')
  71. self.assertContains(response, 'bob@bob.com')
  72. User = get_user_model()
  73. User.objects.get_by_username('Bob')
  74. User.objects.get_by_email('bob@bob.com')
  75. self.assertIn('Welcome', mail.outbox[0].subject)