20
20
)
21
21
from oauth2_provider .oauth2_validators import OAuth2Validator
22
22
from oauth2_provider .settings import oauth2_settings
23
- from oauth2_provider .views .oidc import RPInitiatedLogoutView , _load_id_token , _validate_claims
23
+ from oauth2_provider .views .oidc import (
24
+ RPInitiatedLogoutView ,
25
+ SessionIFrameView ,
26
+ _load_id_token ,
27
+ _validate_claims ,
28
+ )
24
29
25
30
from . import presets
26
31
from .common_testing import OAuth2ProviderTestCase as TestCase
@@ -116,6 +121,13 @@ def test_get_connect_discovery_info_with_rp_logout(self):
116
121
self .oauth2_settings .OIDC_RP_INITIATED_LOGOUT_ENABLED = True
117
122
self .expect_json_response_with_rp_logout (self .oauth2_settings .OIDC_ISS_ENDPOINT )
118
123
124
+ def test_get_session_manangement_iframe_endpoint (self ):
125
+ self .oauth2_settings .OIDC_SESSION_MANAGEMENT_ENABLED = True
126
+ response = self .client .get (reverse ("oauth2_provider:oidc-connect-discovery-info" ))
127
+ self .assertEqual (response .status_code , 200 )
128
+ response_data = response .json ()
129
+ self .assertIn ("check_session_iframe" , response_data .keys ())
130
+
119
131
def test_get_connect_discovery_info_without_issuer_url (self ):
120
132
self .oauth2_settings .OIDC_ISS_ENDPOINT = None
121
133
self .oauth2_settings .OIDC_USERINFO_ENDPOINT = None
@@ -216,29 +228,31 @@ def test_get_jwks_info_multiple_rsa_keys(self):
216
228
217
229
@pytest .mark .usefixtures ("oauth2_settings" )
218
230
@pytest .mark .oauth2_settings (presets .OIDC_SETTINGS_SESSION_MANAGEMENT )
219
- class TestAuthorizationView (TestCase ):
220
- def test_session_state_is_present_in_url (self ):
231
+ class TestSessionManagement (TestCase ):
232
+ def setUp (self ):
221
233
User = get_user_model ()
222
234
Application = get_application_model ()
223
235
224
- User .
objects .
create_user (
"test_user" ,
"[email protected] " ,
"123456" )
225
- dev_user = User .
objects .
create_user (
"dev_user" ,
"[email protected] " ,
"123456" )
236
+ self . user = User .
objects .
create_user (
"test_user" ,
"[email protected] " ,
"123456" )
237
+ self . developer = User .
objects .
create_user (
"dev_user" ,
"[email protected] " ,
"123456" )
226
238
227
- application = Application .objects .create (
239
+ self . application = Application .objects .create (
228
240
name = "Test Application" ,
229
241
redirect_uris = (
230
242
"http://localhost http://example.com http://example.org custom-scheme://example.com"
231
243
),
232
- user = dev_user ,
244
+ user = self . developer ,
233
245
client_type = Application .CLIENT_CONFIDENTIAL ,
234
246
authorization_grant_type = Application .GRANT_AUTHORIZATION_CODE ,
235
247
client_secret = "1234567890qwertyuiop" ,
236
248
)
249
+
250
+ def test_session_state_is_present_in_authorization (self ):
237
251
self .client .login (username = "test_user" , password = "123456" )
238
252
response = self .client .post (
239
253
reverse ("oauth2_provider:authorize" ),
240
254
{
241
- "client_id" : application .client_id ,
255
+ "client_id" : self . application .client_id ,
242
256
"response_type" : "code" ,
243
257
"state" : "random_state_string" ,
244
258
"scope" : "read write" ,
@@ -247,7 +261,16 @@ def test_session_state_is_present_in_url(self):
247
261
},
248
262
)
249
263
self .assertEqual (response .status_code , 302 )
250
- self .assertTrue ("session_state" in response ["Location" ])
264
+ self .assertIn ("session_state" , response ["Location" ])
265
+
266
+ def test_cookie_name_is_included_in_iframe_endpoint (self ):
267
+ request = RequestFactory ().get (reverse ("oauth2_provider:session-iframe" ))
268
+ request .user = self .user
269
+ view = SessionIFrameView ()
270
+ view .setup (request )
271
+ context = view .get_context_data ()
272
+ self .assertIn ("cookie_name" , context )
273
+ self .assertEqual (context ["cookie_name" ], "oidc_ua_agent_state" )
251
274
252
275
253
276
def mock_request ():
0 commit comments