Skip to content

Commit e7b17a7

Browse files
committed
Make logout request function is_valid support raising exceptions
1 parent a42554a commit e7b17a7

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/onelogin/saml2/logout_request.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,15 @@ def get_session_indexes(request):
212212
session_indexes.append(session_index_node.text)
213213
return session_indexes
214214

215-
def is_valid(self, request_data):
215+
def is_valid(self, request_data, raises=False):
216216
"""
217217
Checks if the Logout Request received is valid
218218
:param request_data: Request Data
219219
:type request_data: dict
220220
221+
:param raises: Optional argument. If true, the function will raise an exception as soon as first validation test fails
222+
:type raises: bool
223+
221224
:return: If the Logout Request is or not valid
222225
:rtype: boolean
223226
"""
@@ -274,6 +277,8 @@ def is_valid(self, request_data):
274277
debug = self.__settings.is_debug_active()
275278
if debug:
276279
print(err)
280+
if raises:
281+
raise
277282
return False
278283

279284
def get_error(self):

tests/src/OneLogin/saml2_tests/logout_request_test.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,3 +336,19 @@ def testIsValid(self):
336336
request = request.replace('http://stuff.com/endpoints/endpoints/sls.php', current_url)
337337
logout_request5 = OneLogin_Saml2_Logout_Request(settings, OneLogin_Saml2_Utils.b64encode(request))
338338
self.assertTrue(logout_request5.is_valid(request_data))
339+
340+
def testIsValidRaisesExceptionWhenRaisesArgumentIsTrue(self):
341+
request = OneLogin_Saml2_Utils.b64encode('<xml>invalid</xml>')
342+
request_data = {
343+
'http_host': 'example.com',
344+
'script_name': 'index.html',
345+
}
346+
settings = OneLogin_Saml2_Settings(self.loadSettingsJSON())
347+
settings.set_strict(True)
348+
349+
logout_request = OneLogin_Saml2_Logout_Request(settings, request)
350+
351+
self.assertFalse(logout_request.is_valid(request_data))
352+
353+
with self.assertRaises(Exception):
354+
logout_request.is_valid(request_data, raises=True)

0 commit comments

Comments
 (0)