tests.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from django.contrib.auth.models import User
  2. from django.core.urlresolvers import reverse
  3. from django.test import TestCase
  4. from .models import Profile
  5. from .forms import UserForm, ProfileForm
  6. class AccountsTests(TestCase):
  7. def setUp(self):
  8. user = User.objects.create_user('user', email='user@example.net', password='user')
  9. def test_auth(self):
  10. self.assertEquals(self.client.get(reverse('login')).status_code, 200)
  11. self.assertEquals(self.client.get(reverse('password_reset')).status_code, 200)
  12. self.assertEquals(self.client.get(reverse('password_reset_done')).status_code, 200)
  13. def test_login_logout(self):
  14. self.assertEquals(self.client.get(reverse('login')).status_code, 200)
  15. self.client.login(username='user', password='user')
  16. self.assertEquals(self.client.get(reverse('home')).status_code, 200)
  17. self.assertRedirects(self.client.get(reverse('logout')), reverse('home'), target_status_code=302) # home is redirected to login
  18. self.assertRedirects(self.client.get(reverse('home')), reverse('login') + '?next=' + reverse('home'))
  19. def test_profile(self):
  20. response = self.client.get(reverse('profile'))
  21. self.assertRedirects(response, reverse('login') + '?next=' + reverse('profile'))
  22. self.client.login(username='user', password='user')
  23. response = self.client.get(reverse('profile'))
  24. self.assertEqual(response.status_code, 200)
  25. user = User.objects.get(username='user')
  26. user_form = UserForm(None, instance=user)
  27. data = {key: getattr(user_form.instance, key) for key in user_form.fields}
  28. profile_form = ProfileForm(instance=user.profile)
  29. data.update({key: getattr(profile_form.instance, key) for key in profile_form.fields})
  30. data['username'] = 'user2' # try to tamper username
  31. data['email'] = 'user@example.org'
  32. data['address'] = '221B Baker Street'
  33. response = self.client.post(reverse('profile'), data)
  34. self.assertRedirects(response, reverse('profile'))
  35. user = User.objects.get(pk=user.pk) # refresh user
  36. self.assertEquals(user.username, 'user') # should not be modified
  37. self.assertEquals(user.email, 'user@example.org')
  38. self.assertEquals(user.profile.address, '221B Baker Street')