import importlib import os import re from types import SimpleNamespace from urllib.parse import parse_qs, urlparse from fastapi.testclient import TestClient os.environ.setdefault("SYSTEM", "spaces") os.environ.setdefault("SPACE_ID", "test/certificate-generator") os.environ.setdefault("SPACE_HOST", "test-certificate-generator.hf.space") os.environ.setdefault("OAUTH_CLIENT_ID", "test-client") os.environ.setdefault("OAUTH_CLIENT_SECRET", "test-secret") os.environ.setdefault("OAUTH_SCOPES", "openid profile") os.environ.setdefault("OPENID_PROVIDER_URL", "https://huggingface.co") os.environ.setdefault("GRADIO_SSR_MODE", "true") certificate_app = importlib.import_module("app") def test_oauth_login_clears_stale_session_before_redirecting(): with TestClient(certificate_app.app) as client: response = client.get("/oauth-login", follow_redirects=False) assert response.status_code == 303 assert response.headers["location"] == "/login/huggingface?_target_url=/" cookie = response.headers["set-cookie"].lower() assert 'session=""' in cookie assert "max-age=0" in cookie assert "httponly" in cookie assert "samesite=none" in cookie assert "secure" in cookie def test_auth_control_uses_sandbox_safe_navigation(): logged_out = certificate_app.auth_control(None) logged_in = certificate_app.auth_control( SimpleNamespace(username='person') ) assert 'href="/oauth-login"' in logged_out assert 'target="_blank"' in logged_out assert 'href="/logout?_target_url=/"' in logged_in assert 'target="_self"' in logged_in assert 'target="_top"' not in logged_out + logged_in assert "