test_login_url_creation.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from unittest.mock import Mock
  2. from urllib.parse import parse_qsl, urlparse
  3. from ...conf.test import override_dynamic_settings
  4. from ..client import SESSION_STATE, create_login_url
  5. @override_dynamic_settings(
  6. enable_oauth2_client=True,
  7. oauth2_client_id="clientid123",
  8. oauth2_scopes="some scopes",
  9. oauth2_login_url="https://example.com/oauth2/login",
  10. )
  11. def test_oauth2_login_url_is_created(dynamic_settings):
  12. request = Mock(
  13. session={},
  14. settings=dynamic_settings,
  15. build_absolute_uri=lambda url: f"http://mysite.com{url or ''}",
  16. )
  17. login_url = create_login_url(request)
  18. # State set in session?
  19. assert request.session.get(SESSION_STATE)
  20. # Redirect url is valid?
  21. redirect_to = urlparse(login_url)
  22. assert redirect_to.netloc == "example.com"
  23. assert redirect_to.path == "/oauth2/login"
  24. assert parse_qsl(redirect_to.query) == [
  25. ("response_type", "code"),
  26. ("client_id", "clientid123"),
  27. ("redirect_uri", "http://mysite.com/oauth2/complete/"),
  28. ("scope", "some scopes"),
  29. ("state", request.session[SESSION_STATE]),
  30. ]