test_auth_views.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import json
  2. from django.contrib.auth import get_user_model
  3. from django.test import TestCase
  4. from django.urls import reverse
  5. from django.utils.encoding import smart_str
  6. class AuthViewsTests(TestCase):
  7. def test_auth_views_return_302(self):
  8. """auth views should always return redirect"""
  9. response = self.client.get(reverse('misago:login'))
  10. self.assertEqual(response.status_code, 302)
  11. response = self.client.post(reverse('misago:login'))
  12. self.assertEqual(response.status_code, 302)
  13. response = self.client.get(reverse('misago:logout'))
  14. self.assertEqual(response.status_code, 302)
  15. response = self.client.post(reverse('misago:logout'))
  16. self.assertEqual(response.status_code, 302)
  17. def test_login_view_redirect_to(self):
  18. """login view respects redirect_to POST"""
  19. # valid redirect
  20. response = self.client.post(reverse('misago:login'), data={
  21. 'redirect_to': '/redirect/'
  22. })
  23. self.assertEqual(response.status_code, 302)
  24. self.assertEqual(response['location'], '/redirect/')
  25. # invalid redirect (redirects to other site)
  26. response = self.client.post(reverse('misago:login'), data={
  27. 'redirect_to': 'http://somewhereelse.com/page.html'
  28. })
  29. self.assertEqual(response.status_code, 302)
  30. self.assertEqual(response['location'], '/')
  31. def test_logout_view(self):
  32. """logout view logs user out on post"""
  33. response = self.client.post(
  34. '/api/auth/', data={'username': 'nope', 'password': 'nope'})
  35. self.assertContains(response, "Login or password is incorrect.", status_code=400)
  36. response = self.client.get('/api/auth/')
  37. self.assertEqual(response.status_code, 200)
  38. user_json = json.loads(smart_str(response.content))
  39. self.assertIsNone(user_json['id'])
  40. response = self.client.post(reverse('misago:logout'))
  41. self.assertEqual(response.status_code, 302)
  42. response = self.client.get('/api/auth/')
  43. self.assertEqual(response.status_code, 200)
  44. user_json = json.loads(smart_str(response.content))
  45. self.assertIsNone(user_json['id'])