Skip to content

Commit 2965e00

Browse files
committed
Make logout response function is_valid support raising exceptions
1 parent d3549f9 commit 2965e00

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/onelogin/saml2/logout_response.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,15 @@ def get_status(self):
6363
status = entries[0].attrib['Value']
6464
return status
6565

66-
def is_valid(self, request_data, request_id=None):
66+
def is_valid(self, request_data, request_id=None, raises=False):
6767
"""
6868
Determines if the SAML LogoutResponse is valid
6969
:param request_id: The ID of the LogoutRequest sent by this SP to the IdP
7070
:type request_id: string
71+
72+
:param raises: Optional argument. If true, the function will raise an exception as soon as first validation test fails
73+
:type raises: bool
74+
7175
:return: Returns if the SAML LogoutResponse is or not valid
7276
:rtype: boolean
7377
"""
@@ -111,6 +115,8 @@ def is_valid(self, request_data, request_id=None):
111115
debug = self.__settings.is_debug_active()
112116
if debug:
113117
print(err)
118+
if raises:
119+
raise
114120
return False
115121

116122
def __query(self, query):

tests/src/OneLogin/saml2_tests/logout_response_test.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,3 +277,20 @@ def testIsValid(self):
277277

278278
response_3 = OneLogin_Saml2_Logout_Response(settings, message_3)
279279
self.assertTrue(response_3.is_valid(request_data))
280+
281+
def testIsValidRaisesExceptionWhenRaisesArgumentIsTrue(self):
282+
message = OneLogin_Saml2_Utils.deflate_and_base64_encode('<xml>invalid</xml>')
283+
request_data = {
284+
'http_host': 'example.com',
285+
'script_name': 'index.html',
286+
'get_data': {}
287+
}
288+
settings = OneLogin_Saml2_Settings(self.loadSettingsJSON())
289+
settings.set_strict(True)
290+
291+
response = OneLogin_Saml2_Logout_Response(settings, message)
292+
293+
self.assertFalse(response.is_valid(request_data))
294+
295+
with self.assertRaises(Exception):
296+
response.is_valid(request_data, raises=True)

0 commit comments

Comments
 (0)