@@ -89,6 +89,64 @@ def testCreateDeflatedSAMLLogoutRequestURLParameter(self):
8989 inflated = compat .to_string (OneLogin_Saml2_Utils .decode_base64_and_inflate (payload ))
9090 self .assertRegex (inflated , '^<samlp:LogoutRequest' )
9191
92+ def testConstructorWithNameIdFormatOnSettings (self ):
93+ """
94+ Tests the OneLogin_Saml2_LogoutRequest Constructor.
95+ Case: Defines NameIDFormat from settings
96+ """
97+ settings_info = self .loadSettingsJSON ()
98+ name_id = 'ONELOGIN_1e442c129e1f822c8096086a1103c5ee2c7cae1c'
99+ name_id_format = 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient'
100+ settings_info ['sp' ]['NameIDFormat' ] = name_id_format
101+ settings = OneLogin_Saml2_Settings (settings_info )
102+ logout_request = OneLogin_Saml2_Logout_Request (settings , name_id = name_id )
103+ logout_request_xml = OneLogin_Saml2_Utils .decode_base64_and_inflate (logout_request .get_request ())
104+ name_id_data = OneLogin_Saml2_Logout_Request .get_nameid_data (logout_request_xml )
105+ expected_name_id_data = {
106+ 'Value' : name_id ,
107+ 'Format' : name_id_format
108+ }
109+ self .assertEqual (expected_name_id_data , name_id_data )
110+
111+ def testConstructorWithoutNameIdFormat (self ):
112+ """
113+ Tests the OneLogin_Saml2_LogoutRequest Constructor.
114+ Case: Checks that NameIDFormat is not added
115+ """
116+ settings_info = self .loadSettingsJSON ()
117+ name_id = 'ONELOGIN_1e442c129e1f822c8096086a1103c5ee2c7cae1c'
118+ name_id_format = 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified'
119+ settings_info ['sp' ]['NameIDFormat' ] = name_id_format
120+ settings = OneLogin_Saml2_Settings (settings_info )
121+ logout_request = OneLogin_Saml2_Logout_Request (settings , name_id = name_id )
122+ logout_request_xml = OneLogin_Saml2_Utils .decode_base64_and_inflate (logout_request .get_request ())
123+ name_id_data = OneLogin_Saml2_Logout_Request .get_nameid_data (logout_request_xml )
124+ expected_name_id_data = {
125+ 'Value' : name_id
126+ }
127+ self .assertEqual (expected_name_id_data , name_id_data )
128+
129+ def testConstructorEncryptIdUsingX509certMulti (self ):
130+ """
131+ Tests the OneLogin_Saml2_LogoutRequest Constructor.
132+ Case: Able to generate encryptedID with MultiCert
133+ """
134+ settings_info = self .loadSettingsJSON ('settings8.json' )
135+ settings_info ['security' ]['nameIdEncrypted' ] = True
136+ settings = OneLogin_Saml2_Settings (settings_info )
137+
138+ logout_request = OneLogin_Saml2_Logout_Request (settings )
139+
140+ parameters = {'SAMLRequest' : logout_request .get_request ()}
141+ logout_url = OneLogin_Saml2_Utils .redirect ('http://idp.example.com/SingleLogoutService.php' , parameters , True )
142+ self .assertRegexpMatches (logout_url , '^http://idp\.example\.com\/SingleLogoutService\.php\?SAMLRequest=' )
143+ url_parts = urlparse (logout_url )
144+ exploded = parse_qs (url_parts .query )
145+ payload = exploded ['SAMLRequest' ][0 ]
146+ inflated = OneLogin_Saml2_Utils .decode_base64_and_inflate (payload )
147+ self .assertRegexpMatches (inflated , '^<samlp:LogoutRequest' )
148+ self .assertRegexpMatches (inflated , '<saml:EncryptedID>' )
149+
92150 def testGetIDFromSAMLLogoutRequest (self ):
93151 """
94152 Tests the get_id method of the OneLogin_Saml2_LogoutRequest
0 commit comments