test_usercp_views.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. from django.contrib.auth import get_user_model
  2. from django.core import mail
  3. from django.core.urlresolvers import reverse
  4. from misago.admin.testutils import AdminTestCase
  5. class ChangeForumOptionsTests(AdminTestCase):
  6. def setUp(self):
  7. super(ChangeForumOptionsTests, self).setUp()
  8. self.view_link = reverse('misago:usercp_change_forum_options')
  9. def test_change_forum_options_get(self):
  10. """GET to usercp change options view returns 200"""
  11. response = self.client.get(self.view_link)
  12. self.assertEqual(response.status_code, 200)
  13. self.assertIn('Change forum options', response.content)
  14. def test_change_forum_options_post(self):
  15. """POST to usercp change options view returns 302"""
  16. response = self.client.post(self.view_link, data={
  17. 'timezone': 'Asia/Qatar',
  18. 'is_hiding_presence': '1',
  19. 'subscribe_to_started_threads': '0',
  20. 'subscribe_to_replied_threads': '1',
  21. })
  22. self.assertEqual(response.status_code, 302)
  23. test_user = get_user_model().objects.get(pk=self.test_admin.pk)
  24. self.assertEqual(test_user.timezone, 'Asia/Qatar')
  25. self.assertEqual(test_user.is_hiding_presence, 1)
  26. self.assertEqual(test_user.subscribe_to_started_threads, 0)
  27. self.assertEqual(test_user.subscribe_to_replied_threads, 1)
  28. class ChangeUsernameTests(AdminTestCase):
  29. def setUp(self):
  30. super(ChangeUsernameTests, self).setUp()
  31. self.view_link = reverse('misago:usercp_change_username')
  32. def test_change_username_get(self):
  33. """GET to usercp change username view returns 200"""
  34. response = self.client.get(self.view_link)
  35. self.assertEqual(response.status_code, 200)
  36. self.assertIn('Change username', response.content)
  37. def test_change_username_post(self):
  38. """POST to usercp change username view returns 302"""
  39. response = self.client.post(self.view_link,
  40. data={'new_username': 'Boberson'})
  41. self.assertEqual(response.status_code, 302)
  42. test_user = get_user_model().objects.get(pk=self.test_admin.pk)
  43. self.assertEqual(test_user.username, 'Boberson')
  44. response = self.client.get(self.view_link)
  45. self.assertEqual(response.status_code, 200)
  46. self.assertIn(test_user.username, response.content)
  47. class ChangeEmailPasswordTests(AdminTestCase):
  48. def setUp(self):
  49. super(ChangeEmailPasswordTests, self).setUp()
  50. self.view_link = reverse('misago:usercp_change_email_password')
  51. def _link_from_mail(self, mail_body):
  52. for line in mail.outbox[0].body.splitlines():
  53. if line.strip().startswith('http://testserver/'):
  54. return line.strip()[len('http://testserver'):]
  55. return ''
  56. def test_change_email_password_get(self):
  57. """GET to usercp change email/pass view returns 200"""
  58. response = self.client.get(self.view_link)
  59. self.assertEqual(response.status_code, 200)
  60. self.assertIn('Change email or password', response.content)
  61. def test_change_email(self):
  62. """POST to usercp change email view returns 302"""
  63. response = self.client.post(self.view_link,
  64. data={'new_email': 'newmail@test.com',
  65. 'current_password': 'Pass.123'})
  66. self.assertEqual(response.status_code, 302)
  67. self.assertIn('Confirm changes to', mail.outbox[0].subject)
  68. confirmation_link = self._link_from_mail(mail.outbox[0].body)
  69. response = self.client.get(confirmation_link)
  70. self.assertEqual(response.status_code, 302)
  71. User = get_user_model()
  72. test_user = User.objects.get(email='newmail@test.com')
  73. def test_change_password(self):
  74. """POST to usercp change password view returns 302"""
  75. response = self.client.post(self.view_link,
  76. data={'new_password': 'newpass123',
  77. 'current_password': 'Pass.123'})
  78. self.assertEqual(response.status_code, 302)
  79. self.assertIn('Confirm changes to', mail.outbox[0].subject)
  80. confirmation_link = self._link_from_mail(mail.outbox[0].body)
  81. response = self.client.get(confirmation_link)
  82. self.assertEqual(response.status_code, 302)
  83. User = get_user_model()
  84. test_user = User.objects.get(pk=self.test_admin.pk)
  85. self.assertFalse(test_user.check_password('Pass.123'))
  86. self.assertTrue(test_user.check_password('newpass123'))