/** * Tests the logout method of the OneLogin_Saml2_Auth class * Case nameID loaded after process SAML Response * * @covers OneLogin_Saml2_Auth::logout * @runInSeparateProcess */ public function testLogoutNameID() { $message = file_get_contents(TEST_ROOT . '/data/responses/valid_response.xml.base64'); $_POST['SAMLResponse'] = $message; $this->_auth->processResponse(); $nameIdFromResponse = $this->_auth->getNameId(); try { $nameId = 'my_name_id'; $this->_auth->logout(); // Do not ever get here $this->assertFalse(true); } catch (Exception $e) { $this->assertContains('Cannot modify header information', $e->getMessage()); $trace = $e->getTrace(); $targetUrl = getUrlFromRedirect($trace); $parsedQuery = getParamsFromUrl($targetUrl); $sloUrl = $this->_settingsInfo['idp']['singleLogoutService']['url']; $this->assertContains($sloUrl, $targetUrl); $this->assertArrayHasKey('SAMLRequest', $parsedQuery); $logoutRequest = gzinflate(base64_decode($parsedQuery['SAMLRequest'])); $nameIdFromRequest = OneLogin_Saml2_LogoutRequest::getNameId($logoutRequest); $this->assertEquals($nameIdFromResponse, $nameIdFromRequest); } }
/** * Tests the getNameIdmethod of the OneLogin_Saml2_LogoutRequest * * @covers OneLogin_Saml2_LogoutRequest::getNameId */ public function testGetNameId() { $request = file_get_contents(TEST_ROOT . '/data/logout_requests/logout_request.xml'); $nameId = OneLogin_Saml2_LogoutRequest::getNameId($request); $this->assertEquals('ONELOGIN_1e442c129e1f822c8096086a1103c5ee2c7cae1c', $nameId); $request2 = file_get_contents(TEST_ROOT . '/data/logout_requests/logout_request_encrypted_nameid.xml'); try { $nameId2 = OneLogin_Saml2_LogoutRequest::getNameId($request2); $this->assertFalse(true); } catch (Exception $e) { $this->assertContains('Key is required in order to decrypt the NameID', $e->getMessage()); } $key = $this->_settings->getSPkey(); $nameId3 = OneLogin_Saml2_LogoutRequest::getNameId($request2, $key); $this->assertEquals('ONELOGIN_9c86c4542ab9d6fce07f2f7fd335287b9b3cdf69', $nameId3); }