test_admin_views_are_protected.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from django.urls import reverse
  2. from ...test import assert_contains, assert_not_contains
  3. from ..auth import is_admin_authorized
  4. admin_link = reverse("misago:admin:index")
  5. def assert_requires_admin_login(response):
  6. assert response.status_code == 200
  7. assert_contains(response, "Administration")
  8. assert_contains(response, "Sign in")
  9. def test_anonymous_user_is_asked_to_login_to_access_admin_view(db, client):
  10. response = client.get(admin_link)
  11. assert_requires_admin_login(response)
  12. def test_authenticated_user_is_asked_to_login_to_access_admin_view(client, user):
  13. client.force_login(user)
  14. response = client.get(admin_link)
  15. assert_requires_admin_login(response)
  16. def test_unathorized_admin_is_asked_to_login_to_access_admin_view(client, superuser):
  17. client.force_login(superuser)
  18. response = client.get(admin_link)
  19. assert_requires_admin_login(response)
  20. def test_authorized_admin_is_allowed_to_access_admin_view(admin_client):
  21. response = admin_client.get(admin_link)
  22. assert is_admin_authorized(response.wsgi_request)
  23. assert_not_contains(response, "Sign in")
  24. def test_admin_authorization_is_checked_on_admin_view_access(mocker, client, user):
  25. admin_authorization = mocker.patch(
  26. "misago.admin.middleware.is_admin_authorized", return_value=False
  27. )
  28. response = client.get(admin_link)
  29. admin_authorization.assert_called_once_with(response.wsgi_request)