test_options_views.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from django.core import mail
  2. from django.core.urlresolvers import reverse
  3. from misago.users.testutils import AuthenticatedUserTestCase
  4. class OptionsViewsTests(AuthenticatedUserTestCase):
  5. def test_lander_view_returns_200(self):
  6. """/options has no show stoppers"""
  7. response = self.client.get(reverse('misago:options'))
  8. self.assertEqual(response.status_code, 200)
  9. def test_form_view_returns_200(self):
  10. """/options/some-form has no show stoppers"""
  11. response = self.client.get(reverse('misago:options_form', kwargs={
  12. 'form_name': 'some-fake-form'
  13. }))
  14. self.assertEqual(response.status_code, 200)
  15. class ConfirmChangeEmailTests(AuthenticatedUserTestCase):
  16. def setUp(self):
  17. super(ConfirmChangeEmailTests, self).setUp()
  18. link = '/api/users/%s/change-email/' % self.user.pk
  19. response = self.client.post(link, data={
  20. 'new_email': 'n3w@email.com',
  21. 'password': self.USER_PASSWORD
  22. })
  23. self.assertEqual(response.status_code, 200)
  24. for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
  25. if line.startswith('http://'):
  26. self.link = line.strip()
  27. break
  28. def test_invalid_token(self):
  29. """invalid token is rejected"""
  30. response = self.client.get(
  31. reverse('misago:options_confirm_email_change', kwargs={
  32. 'token': 'invalid'
  33. }))
  34. self.assertEqual(response.status_code, 400)
  35. self.assertIn("Change confirmation link is invalid.", response.content)
  36. def test_change_email(self):
  37. """valid token changes email"""
  38. response = self.client.get(self.link)
  39. self.assertEqual(response.status_code, 200)
  40. self.assertIn("your e-mail has been changed", response.content)
  41. self.reload_user()
  42. self.assertEqual(self.user.email, 'n3w@email.com')
  43. class ConfirmChangePasswordTests(AuthenticatedUserTestCase):
  44. def setUp(self):
  45. super(ConfirmChangePasswordTests, self).setUp()
  46. link = '/api/users/%s/change-password/' % self.user.pk
  47. response = self.client.post(link, data={
  48. 'new_password': 'n3wp4ssword',
  49. 'password': self.USER_PASSWORD
  50. })
  51. self.assertEqual(response.status_code, 200)
  52. for line in [l.strip() for l in mail.outbox[0].body.splitlines()]:
  53. if line.startswith('http://'):
  54. self.link = line.strip()
  55. break
  56. def test_invalid_token(self):
  57. """invalid token is rejected"""
  58. response = self.client.get(
  59. reverse('misago:options_confirm_password_change', kwargs={
  60. 'token': 'invalid'
  61. }))
  62. self.assertEqual(response.status_code, 400)
  63. self.assertIn("Change confirmation link is invalid.", response.content)
  64. def test_change_password(self):
  65. """valid token changes password"""
  66. response = self.client.get(self.link)
  67. self.assertEqual(response.status_code, 200)
  68. self.assertIn("your password has been changed", response.content)
  69. self.reload_user()
  70. self.assertFalse(self.user.check_password(self.USER_PASSWORD))
  71. self.assertTrue(self.user.check_password('n3wp4ssword'))