/src/smi_unb/my_account/tests/test_views.py

https://gitlab.com/brenddongontijo/SMI-UnB · Python · 140 lines · 98 code · 42 blank · 0 comment · 0 complexity · 0b166eff65852446b5c1e515ea292334 MD5 · raw file

  1. from django.contrib.auth.hashers import check_password
  2. from django.contrib.auth.models import User
  3. from django.core.urlresolvers import reverse
  4. from django.test import TestCase, Client
  5. class TestUsersViews(TestCase):
  6. def setUp(self):
  7. self.client = Client()
  8. self.superuser = User(
  9. username='superuser',
  10. first_name='super',
  11. last_name='user',
  12. email="admin@admin.com",
  13. is_superuser=True,
  14. )
  15. self.superuser.set_password('12345')
  16. self.superuser.save()
  17. def test_getting_status_code_from_pages_with_login(self):
  18. self.client.login(username=self.superuser.email, password='12345')
  19. response_1 = self.client.get(reverse('my_account:index'))
  20. self.assertEqual(200, response_1.status_code)
  21. response_2 = self.client.get(reverse('my_account:self_edit'))
  22. self.assertEqual(200, response_2.status_code)
  23. response_3 = self.client.get(reverse('my_account:change_password'))
  24. self.assertEqual(200, response_3.status_code)
  25. def test_getting_status_code_from_pages_without_login(self):
  26. response_1 = self.client.get(reverse('my_account:index'))
  27. self.assertEqual(302, response_1.status_code)
  28. response_2 = self.client.get(reverse('my_account:self_edit'))
  29. self.assertEqual(302, response_2.status_code)
  30. response_3 = self.client.get(reverse('my_account:change_password'))
  31. self.assertEqual(302, response_3.status_code)
  32. def test_change_password(self):
  33. self.client.login(username=self.superuser.email, password='12345')
  34. url = reverse('my_account:change_password')
  35. new_password = 'newpassword'
  36. params = {
  37. 'old_password': '12345',
  38. 'new_password1': new_password,
  39. 'new_password2': new_password,
  40. }
  41. response = self.client.post(url, params)
  42. user = User.objects.get(username=self.superuser.username)
  43. self.assertRedirects(response, reverse('my_account:index'))
  44. self.assertTrue(check_password(new_password, user.password))
  45. def test_not_change_password_with_incorrect_old_password(self):
  46. self.client.login(username=self.superuser.email, password='12345')
  47. url = reverse('my_account:change_password')
  48. new_password = 'newpassword'
  49. params = {
  50. 'old_password': 'wrongpassword',
  51. 'new_password1': new_password,
  52. 'new_password2': new_password,
  53. }
  54. response = self.client.post(url, params)
  55. error_msg = 'Your old password was entered incorrectly.' + \
  56. ' Please enter it again.'
  57. self.assertFormError(response, 'form', 'old_password', error_msg)
  58. def test_not_change_password_with_incorrect_new_passwords(self):
  59. self.client.login(username=self.superuser.email, password='12345')
  60. url = reverse('my_account:change_password')
  61. params = {
  62. 'old_password': '12345',
  63. 'new_password1': 'new_password',
  64. 'new_password2': 'wrongpassword',
  65. }
  66. response = self.client.post(url, params)
  67. error_msg = "The two password fields didn't match."
  68. self.assertFormError(response, 'form', 'new_password2', error_msg)
  69. def test_self_edit_user(self):
  70. self.client.login(username=self.superuser.email, password='12345')
  71. url = reverse('my_account:self_edit')
  72. params = {
  73. 'first_name': 'newfirst',
  74. 'last_name': 'newlast'
  75. }
  76. response = self.client.post(url, params)
  77. self.assertRedirects(response, reverse('my_account:index'))
  78. def test_not_self_edit_user_without_changes(self):
  79. self.client.login(username=self.superuser.email, password='12345')
  80. url = reverse('my_account:self_edit')
  81. params = {
  82. 'first_name': self.superuser.first_name,
  83. 'last_name': self.superuser.last_name
  84. }
  85. response = self.client.post(url, params)
  86. error_msg = "Nenhuma Mudança Encontrada."
  87. self.assertFormError(response, 'form', None, error_msg)
  88. def test_not_self_edit_user_with_first_name_too_long(self):
  89. self.client.login(username=self.superuser.email, password='12345')
  90. url = reverse('my_account:self_edit')
  91. long_name = 'thisfirstnameistotoolongtofitthefield'
  92. params = {
  93. 'first_name': long_name,
  94. 'last_name': self.superuser.last_name
  95. }
  96. response = self.client.post(url, params)
  97. error_msg = "Ensure this value has at most 30 characters (it has 37)."
  98. self.assertFormError(response, 'form', 'first_name', error_msg)