@@ -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,93 @@ 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+ $ nameId = 'test@example.com ' ;
150+ $ nameIdFormat = 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient ' ;
151+ $ settingsInfo ['sp ' ]['NameIDFormat ' ] = $ nameIdFormat ;
152+ $ settings = new OneLogin_Saml2_Settings ($ settingsInfo );
153+ $ logoutRequest = new OneLogin_Saml2_LogoutRequest ($ settings , null , $ nameId , null , null );
154+ $ parameters = array ('SAMLRequest ' => $ logoutRequest ->getRequest ());
155+ $ logoutUrl = OneLogin_Saml2_Utils::redirect ('http://idp.example.com/SingleLogoutService.php ' , $ parameters , true );
156+ $ this ->assertRegExp ('#^http://idp\.example\.com\/SingleLogoutService\.php\?SAMLRequest=# ' , $ logoutUrl );
157+ parse_str (parse_url ($ logoutUrl , PHP_URL_QUERY ), $ exploded );
158+ // parse_url already urldecode de params so is not required.
159+ $ payload = $ exploded ['SAMLRequest ' ];
160+ $ decoded = base64_decode ($ payload );
161+ $ inflated = gzinflate ($ decoded );
162+ $ this ->assertRegExp ('#^<samlp:LogoutRequest# ' , $ inflated );
163+ $ logoutNameId = OneLogin_Saml2_LogoutRequest::getNameId ($ inflated );
164+ $ this ->assertEquals ($ nameId , $ logoutNameId );
165+ $ logoutNameIdData = OneLogin_Saml2_LogoutRequest::getNameIdData ($ inflated );
166+ $ this ->assertEquals ($ nameIdFormat , $ logoutNameIdData ['Format ' ]);
167+ }
168+
169+ /**
170+ * Tests the OneLogin_Saml2_LogoutRequest Constructor.
171+ *
172+ * @covers OneLogin_Saml2_LogoutRequest
173+ */
174+ public function testConstructorWithoutNameIdFormat ()
175+ {
176+ $ settingsDir = TEST_ROOT .'/settings/ ' ;
177+ include $ settingsDir .'settings1.php ' ;
178+ $ nameId = 'test@example.com ' ;
179+ $ nameIdFormat = 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified ' ;
180+ $ settingsInfo ['sp ' ]['NameIDFormat ' ] = $ nameIdFormat ;
181+ $ settings = new OneLogin_Saml2_Settings ($ settingsInfo );
182+ $ logoutRequest = new OneLogin_Saml2_LogoutRequest ($ settings , null , $ nameId , null , null );
183+ $ parameters = array ('SAMLRequest ' => $ logoutRequest ->getRequest ());
184+ $ logoutUrl = OneLogin_Saml2_Utils::redirect ('http://idp.example.com/SingleLogoutService.php ' , $ parameters , true );
185+ $ this ->assertRegExp ('#^http://idp\.example\.com\/SingleLogoutService\.php\?SAMLRequest=# ' , $ logoutUrl );
186+ parse_str (parse_url ($ logoutUrl , PHP_URL_QUERY ), $ exploded );
187+ // parse_url already urldecode de params so is not required.
188+ $ payload = $ exploded ['SAMLRequest ' ];
189+ $ decoded = base64_decode ($ payload );
190+ $ inflated = gzinflate ($ decoded );
191+ $ this ->assertRegExp ('#^<samlp:LogoutRequest# ' , $ inflated );
192+ $ logoutNameId = OneLogin_Saml2_LogoutRequest::getNameId ($ inflated );
193+ $ this ->assertEquals ($ nameId , $ logoutNameId );
194+ $ logoutNameIdData = OneLogin_Saml2_LogoutRequest::getNameIdData ($ inflated );
195+ $ this ->assertFalse (isset ($ logoutNameIdData ['Format ' ]));
196+ }
197+ /**
198+ * Tests the OneLogin_Saml2_LogoutRequest Constructor.
199+ *
200+ * @covers OneLogin_Saml2_LogoutRequest
201+ */
202+ public function testConstructorWithNameIdNameQualifier ()
203+ {
204+ $ settingsDir = TEST_ROOT .'/settings/ ' ;
205+ include $ settingsDir .'settings1.php ' ;
206+ $ nameId = 'test@example.com ' ;
207+ $ nameIdFormat = 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient ' ;
208+ $ nameIdNameQualifier = 'https://test.example.com/saml/metadata ' ;
209+ $ settings = new OneLogin_Saml2_Settings ($ settingsInfo );
210+ $ logoutRequest = new OneLogin_Saml2_LogoutRequest ($ settings , null , $ nameId , null , $ nameIdFormat , $ nameIdNameQualifier );
211+ $ parameters = array ('SAMLRequest ' => $ logoutRequest ->getRequest ());
212+ $ logoutUrl = OneLogin_Saml2_Utils::redirect ('http://idp.example.com/SingleLogoutService.php ' , $ parameters , true );
213+ $ this ->assertRegExp ('#^http://idp\.example\.com\/SingleLogoutService\.php\?SAMLRequest=# ' , $ logoutUrl );
214+ parse_str (parse_url ($ logoutUrl , PHP_URL_QUERY ), $ exploded );
215+ // parse_url already urldecode de params so is not required.
216+ $ payload = $ exploded ['SAMLRequest ' ];
217+ $ decoded = base64_decode ($ payload );
218+ $ inflated = gzinflate ($ decoded );
219+ $ this ->assertRegExp ('#^<samlp:LogoutRequest# ' , $ inflated );
220+ $ logoutNameId = OneLogin_Saml2_LogoutRequest::getNameId ($ inflated );
221+ $ this ->assertEquals ($ nameId , $ logoutNameId );
222+ $ logoutNameIdData = OneLogin_Saml2_LogoutRequest::getNameIdData ($ inflated );
223+ $ this ->assertEquals ($ nameIdFormat , $ logoutNameIdData ['Format ' ]);
224+ $ this ->assertEquals ($ nameIdNameQualifier , $ logoutNameIdData ['NameQualifier ' ]);
225+ }
226+
140227 /**
141228 * Tests the OneLogin_Saml2_LogoutRequest Constructor.
142229 * The creation of a deflated SAML Logout Request
0 commit comments