Skip to content
Snippets Groups Projects
Commit e45c321e authored by Laurent's avatar Laurent
Browse files

dev #12521 #14569

Fix CAS 1.0 compatibility
parent 3a2f1e75
Branches
Tags
2 merge requests!310Master,!293Dev#14569 Cas 1 Cyberlibris
......@@ -22,15 +22,7 @@ class CasServerController extends Zend_Controller_Action {
use Trait_StaticFileWriter;
protected $service; // url de retour
protected $values;
function init()
{
// Désactiver le view renderer
$viewRenderer = $this->getHelper('ViewRenderer');
$viewRenderer->setNoRender();
}
public function returnValidTicketResponse($user, $ticket) {
$this->getResponse()->setHeader('Content-Type', 'application/xml;charset=utf-8');
......@@ -81,12 +73,14 @@ class CasServerController extends Zend_Controller_Action {
function serviceValidateAction() {
$this->getHelper('ViewRenderer')->setNoRender();
$this->getResponse()->setHeader('Content-Type', 'application/xml;charset=utf-8');
$this->getResponse()->setBody("<form method='post' action=''><div>Identifiant:<input type='text' size='15' id='username' /></div><div>Mot de passe: <input type='text' size='15' id='password' /></div></form>");
}
function validateMusicmeAction() {
$this->getHelper('ViewRenderer')->setNoRender();
$bibid=$this->_request->getParam('MediaLibraryID');
$ticket=$this->_request->getParam('ticket');
......@@ -106,6 +100,7 @@ class CasServerController extends Zend_Controller_Action {
/* INTERNAL_ERROR - an internal error occurred during ticket validation */
function validateAction() {
$this->getHelper('ViewRenderer')->setNoRender();
$service=$this->_request->getParam('service');
$ticket=$this->_request->getParam('ticket');
if (strlen($ticket)<1 || strlen($service)<1) {
......
......@@ -18,8 +18,7 @@
* along with AFI-OPAC 2.0; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
require_once 'AbstractControllerTestCase.php';
require_once 'application/modules/opac/controllers/CasServerController.php';
class CasServerControllerValidateActionTest extends AbstractControllerTestCase {
protected $session_file_contents_logged;
......@@ -38,7 +37,7 @@ class CasServerControllerValidateActionTest extends AbstractControllerTestCase {
/** @test */
public function requestWithNoTicketShouldRespondinvalidRequestFailureXML() {
$this->dispatch('/opac/cas-server/validate?service=http://test.com');
$this->assertContains('<cas:authenticationFailure code="INVALID_REQUEST">',$this->_response->getBody());
$this->assertContains('<cas:authenticationFailure code="INVALID_REQUEST">',$this->_response->getBody());
}
......@@ -77,6 +76,59 @@ class CasServerControllerValidateActionTest extends AbstractControllerTestCase {
$this->assertContains('<cas:user>300</cas:user>',$this->_response->getBody());
$this->assertContains('<cas:proxyGrantingTicket>',$this->_response->getBody());
}
/**
* see http://www.jasig.org/cas/protocol#validate-cas-1.0
* @test
*/
public function validateOnCasOneZeroWithValidTicketShouldAnswerYesLF() {
$this->dispatch(
'/opac/cas-server-v10/validate?ticket=ST-'.md5(Zend_Session::getId().'300').'&service=http://test.com',
true);
$this->assertEquals('yes'.chr(10), $this->_response->getBody());
}
/** @test */
public function validateOnCasOneZeroWithInValidTicketShouldAnswerNoLF() {
$this->dispatch(
'/opac/cas-server-v10/validate?ticket=zork&service=http://test.com',
true);
$this->assertEquals('no'.chr(10), $this->_response->getBody());
}
/** @test */
public function loginOnCasOneZeroShouldRedirectToServiceWithTicket() {
$this->dispatch('/opac/cas-server-v10/login?service=http://test.com', true);
$this->assertRedirectTo(
'http://test.com?ticket='.(new Class_CasTicket())->getTicketForCurrentUser(),
$this->getResponseLocation());
}
/** @test */
public function loginOnCasOneZeroWithoutOpenedSessionShouldDisplayLoginForm() {
ZendAfi_Auth::getInstance()->clearIdentity();
$this->dispatch('/opac/cas-server-v10/login?service=http://test.com', true);
$this->assertXPath('//form//input[@name="password"]');
}
/** @test */
public function logoutOnCasOneZeroShouldClearIdentityAndDisplayThatYouHaveBeenDisconnected() {
$this->dispatch('/opac/cas-server-v10/logout', true);
$this->assertXPathContentContains('//p', 'Vous avez été déconnecté');
$this->assertEmpty(ZendAfi_Auth::getInstance()->getIdentity());
}
/** @test */
public function logoutOnCasOneZeroWithUrlParamShouldRedirectToIt() {
$this->dispatch('/opac/cas-server-v10/logout?url=http://go-out.com', true);
$this->assertRedirectTo('http://go-out.com');
}
}
......@@ -116,3 +168,5 @@ class CasServerControllerMusicMeValidateActionTest extends AbstractControllerTes
}
}
?>
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment