test_oauth2_login_view.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from urllib.parse import urlparse
  2. from django.urls import reverse
  3. from ...conf.test import override_dynamic_settings
  4. from ...test import assert_contains
  5. from ...users.bans import ban_ip
  6. def test_oauth2_login_view_returns_404_if_oauth_is_disabled(client, dynamic_settings):
  7. assert dynamic_settings.enable_oauth2_client is False
  8. response = client.get(reverse("misago:oauth2-login"))
  9. assert response.status_code == 404
  10. @override_dynamic_settings(
  11. enable_oauth2_client=True,
  12. oauth2_client_id="clientid123",
  13. oauth2_scopes="scopes",
  14. oauth2_login_url="https://example.com/oauth2/login",
  15. )
  16. def test_oauth2_login_view_returns_redirect_302_if_oauth_is_enabled(
  17. client, dynamic_settings
  18. ):
  19. assert dynamic_settings.enable_oauth2_client is True
  20. response = client.get(reverse("misago:oauth2-login"))
  21. assert response.status_code == 302
  22. redirect_to = urlparse(response["Location"])
  23. assert redirect_to.netloc == "example.com"
  24. assert redirect_to.path == "/oauth2/login"
  25. assert "clientid123" in redirect_to.query
  26. @override_dynamic_settings(
  27. enable_oauth2_client=True,
  28. oauth2_client_id="clientid123",
  29. oauth2_scopes="scopes",
  30. oauth2_login_url="https://example.com/oauth2/login",
  31. )
  32. def test_oauth2_login_view_returns_error_403_if_user_ip_is_banned(
  33. client, dynamic_settings
  34. ):
  35. ban_ip("127.*", "Ya got banned!")
  36. assert dynamic_settings.enable_oauth2_client is True
  37. response = client.get(reverse("misago:oauth2-login"))
  38. assert_contains(response, "Ya got banned", 403)
  39. def test_oauth2_login_view_returns_error_404_if_user_ip_is_banned_and_oauth_is_disabled(
  40. client, dynamic_settings
  41. ):
  42. ban_ip("127.*", "Ya got banned!")
  43. assert dynamic_settings.enable_oauth2_client is False
  44. response = client.get(reverse("misago:oauth2-login"))
  45. assert response.status_code == 404