test_auth_views.py 2.0 KB

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