|
10 | 10 |
|
11 | 11 | import pytest |
12 | 12 | import responses |
| 13 | +from cryptography.fernet import Fernet |
13 | 14 |
|
14 | 15 | from core import models |
15 | | -from core.authentication.backends import OIDCAuthenticationBackend |
| 16 | +from core.authentication.backends import ( |
| 17 | + OIDCAuthenticationBackend, |
| 18 | + get_oidc_refresh_token, |
| 19 | + store_oidc_refresh_token, |
| 20 | +) |
16 | 21 | from core.factories import UserFactory |
17 | 22 |
|
18 | 23 | pytestmark = pytest.mark.django_db |
19 | 24 |
|
20 | 25 |
|
| 26 | +def test_oidc_refresh_token_session_store(settings): |
| 27 | + """Test that the OIDC refresh token is stored and retrieved from the session.""" |
| 28 | + session = {} |
| 29 | + |
| 30 | + with pytest.raises( |
| 31 | + ValueError, match="OIDC_STORE_REFRESH_TOKEN_KEY setting is required." |
| 32 | + ): |
| 33 | + store_oidc_refresh_token(session, "test-refresh-token") |
| 34 | + |
| 35 | + settings.OIDC_STORE_REFRESH_TOKEN_KEY = Fernet.generate_key() |
| 36 | + |
| 37 | + store_oidc_refresh_token(session, "test-refresh-token") |
| 38 | + assert session["oidc_refresh_token"] is not None |
| 39 | + assert session["oidc_refresh_token"] != "test-refresh-token" |
| 40 | + |
| 41 | + assert get_oidc_refresh_token(session) == "test-refresh-token" |
| 42 | + |
| 43 | + |
21 | 44 | def test_authentication_getter_existing_user_no_email( |
22 | 45 | django_assert_num_queries, monkeypatch |
23 | 46 | ): |
@@ -561,6 +584,7 @@ def test_authentication_session_tokens( |
561 | 584 | settings.OIDC_OP_JWKS_ENDPOINT = "http://oidc.endpoint.test/jwks" |
562 | 585 | settings.OIDC_STORE_ACCESS_TOKEN = True |
563 | 586 | settings.OIDC_STORE_REFRESH_TOKEN = True |
| 587 | + settings.OIDC_STORE_REFRESH_TOKEN_KEY = Fernet.generate_key() |
564 | 588 |
|
565 | 589 | klass = OIDCAuthenticationBackend() |
566 | 590 | request = rf.get("/some-url", {"state": "test-state", "code": "test-code"}) |
@@ -598,4 +622,4 @@ def verify_token_mocked(*args, **kwargs): |
598 | 622 |
|
599 | 623 | assert user is not None |
600 | 624 | assert request.session["oidc_access_token"] == "test-access-token" |
601 | | - assert request.session["oidc_refresh_token"] == "test-refresh-token" |
| 625 | + assert get_oidc_refresh_token(request.session) == "test-refresh-token" |
0 commit comments