Coverage for tests/main_test.py: 94%
30 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-09 16:45 +0100
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-09 16:45 +0100
1from urllib.parse import urlsplit
3import flask
4import flask.testing
5import oidc_client
6import pytest
7import requests
9import oidc_provider_mock
12@pytest.fixture
13def app():
14 app = flask.Flask(__name__)
16 state = oidc_provider_mock.State()
17 app.register_blueprint(oidc_provider_mock.blueprint, state=state)
19 return app
22def test_auth_success(wsgi_server: str):
23 """
24 Authorization Code flow success with userinfo
25 """
27 openid_config = oidc_client.ProviderConfiguration.fetch(wsgi_server)
28 authorization_request = oidc_client.start_authorization(
29 openid_config,
30 redirect_uri="https://example.com/auth-response",
31 client_id="CLIENT_ID",
32 )
34 response = requests.post(
35 authorization_request.url,
36 data={
37 "sub": "SUB",
38 },
39 allow_redirects=False,
40 )
42 assert response.status_code == 302
43 location = urlsplit(response.headers["location"])
44 assert location.geturl().startswith("https://example.com/auth-response?")
46 authn_result = oidc_client.authenticate(
47 openid_config, authorization_request, location.query
48 )
49 assert authn_result.claims["sub"] == "SUB"
51 assert openid_config.userinfo_endpoint
52 response = requests.get(
53 openid_config.userinfo_endpoint,
54 headers={"authorization": f"Bearer {authn_result.access_token}"},
55 )
56 response.raise_for_status()
57 assert response.json() == {
58 "sub": "SUB",
59 "email": "SUB",
60 }
63@pytest.mark.skip
64def test_invalid_nonce(): ... 64 ↛ exitline 64 didn't return from function 'test_invalid_nonce' because
67@pytest.mark.skip
68def test_custom_claims(): ... 68 ↛ exitline 68 didn't return from function 'test_custom_claims' because