@@ -109,7 +109,7 @@ public function testConstructorWithSessionIndex()
109109 *
110110 * @covers OneLogin_Saml2_LogoutRequest
111111 */
112- public function testConstructorWithNameIdFormat ()
112+ public function testConstructorWithNameIdFormatOnParameter ()
113113 {
114114 $ settingsDir = TEST_ROOT .'/settings/ ' ;
115115 include $ settingsDir .'settings1.php ' ;
@@ -137,6 +137,74 @@ public function testConstructorWithNameIdFormat()
137137 $ this ->assertEquals ($ nameIdFormat , $ logoutNameIdData ['Format ' ]);
138138 }
139139
140+ /**
141+ * Tests the OneLogin_Saml2_LogoutRequest Constructor.
142+ *
143+ * @covers OneLogin_Saml2_LogoutRequest
144+ */
145+ public function testConstructorWithNameIdFormatOnSettings ()
146+ {
147+ $ settingsDir = TEST_ROOT .'/settings/ ' ;
148+ include $ settingsDir .'settings1.php ' ;
149+
150+ $ nameId = 'test@example.com ' ;
151+ $ nameIdFormat = 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient ' ;
152+ $ settingsInfo ['sp ' ]['NameIDFormat ' ] = $ nameIdFormat ;
153+ $ settings = new OneLogin_Saml2_Settings ($ settingsInfo );
154+
155+ $ logoutRequest = new OneLogin_Saml2_LogoutRequest ($ settings , null , $ nameId , null , null );
156+
157+ $ parameters = array ('SAMLRequest ' => $ logoutRequest ->getRequest ());
158+ $ logoutUrl = OneLogin_Saml2_Utils::redirect ('http://idp.example.com/SingleLogoutService.php ' , $ parameters , true );
159+ $ this ->assertRegExp ('#^http://idp\.example\.com\/SingleLogoutService\.php\?SAMLRequest=# ' , $ logoutUrl );
160+ parse_str (parse_url ($ logoutUrl , PHP_URL_QUERY ), $ exploded );
161+ // parse_url already urldecode de params so is not required.
162+ $ payload = $ exploded ['SAMLRequest ' ];
163+ $ decoded = base64_decode ($ payload );
164+ $ inflated = gzinflate ($ decoded );
165+ $ this ->assertRegExp ('#^<samlp:LogoutRequest# ' , $ inflated );
166+
167+ $ logoutNameId = OneLogin_Saml2_LogoutRequest::getNameId ($ inflated );
168+ $ this ->assertEquals ($ nameId , $ logoutNameId );
169+
170+ $ logoutNameIdData = OneLogin_Saml2_LogoutRequest::getNameIdData ($ inflated );
171+ $ this ->assertEquals ($ nameIdFormat , $ logoutNameIdData ['Format ' ]);
172+ }
173+
174+ /**
175+ * Tests the OneLogin_Saml2_LogoutRequest Constructor.
176+ *
177+ * @covers OneLogin_Saml2_LogoutRequest
178+ */
179+ public function testConstructorWithoutNameIdFormat ()
180+ {
181+ $ settingsDir = TEST_ROOT .'/settings/ ' ;
182+ include $ settingsDir .'settings1.php ' ;
183+
184+ $ nameId = 'test@example.com ' ;
185+ $ nameIdFormat = 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified ' ;
186+ $ settingsInfo ['sp ' ]['NameIDFormat ' ] = $ nameIdFormat ;
187+ $ settings = new OneLogin_Saml2_Settings ($ settingsInfo );
188+
189+ $ logoutRequest = new OneLogin_Saml2_LogoutRequest ($ settings , null , $ nameId , null , null );
190+
191+ $ parameters = array ('SAMLRequest ' => $ logoutRequest ->getRequest ());
192+ $ logoutUrl = OneLogin_Saml2_Utils::redirect ('http://idp.example.com/SingleLogoutService.php ' , $ parameters , true );
193+ $ this ->assertRegExp ('#^http://idp\.example\.com\/SingleLogoutService\.php\?SAMLRequest=# ' , $ logoutUrl );
194+ parse_str (parse_url ($ logoutUrl , PHP_URL_QUERY ), $ exploded );
195+ // parse_url already urldecode de params so is not required.
196+ $ payload = $ exploded ['SAMLRequest ' ];
197+ $ decoded = base64_decode ($ payload );
198+ $ inflated = gzinflate ($ decoded );
199+ $ this ->assertRegExp ('#^<samlp:LogoutRequest# ' , $ inflated );
200+
201+ $ logoutNameId = OneLogin_Saml2_LogoutRequest::getNameId ($ inflated );
202+ $ this ->assertEquals ($ nameId , $ logoutNameId );
203+
204+ $ logoutNameIdData = OneLogin_Saml2_LogoutRequest::getNameIdData ($ inflated );
205+ $ this ->assertFalse (isset ($ logoutNameIdData ['Format ' ]));
206+ }
207+
140208 /**
141209 * Tests the OneLogin_Saml2_LogoutRequest Constructor.
142210 *
0 commit comments