diff --git a/VERSIONS_HOTLINE/47505 b/VERSIONS_HOTLINE/47505 new file mode 100644 index 0000000000000000000000000000000000000000..ae410ddf1c46027f0505b9dabda819fd47095ee3 --- /dev/null +++ b/VERSIONS_HOTLINE/47505 @@ -0,0 +1 @@ + - ticket #47505 : Ressources CDScript : le lien de consultation dans la table des exemplaires ouvre une popup d'authentification lorsque l'utilisateur n'est pas connecté \ No newline at end of file diff --git a/library/Class/WebService/SIGB/CdScript.php b/library/Class/WebService/SIGB/CdScript.php index 371a4b8eae34f7de9f21327939031f24fb230135..a23d45867476258fbe68e170db3e91fed484ad05 100644 --- a/library/Class/WebService/SIGB/CdScript.php +++ b/library/Class/WebService/SIGB/CdScript.php @@ -24,8 +24,7 @@ class Class_WebService_SIGB_CdScript { protected static $service; public static function getService($params){ - - if (!isset(static::$service)) { + if (!static::$service) { $instance = new static(); $classname = get_called_class().'_Service'; static::$service = $classname::getService($params['server_url'], @@ -35,5 +34,9 @@ class Class_WebService_SIGB_CdScript { return static::$service; } + + public static function resetService() { + static::$service = null; + } } ?> \ No newline at end of file diff --git a/library/Class/WebService/SIGB/CdScript/Service.php b/library/Class/WebService/SIGB/CdScript/Service.php index 5b03c682a65194023a18c52704208b97b0ac9531..93c67bad028ccde977ca7b5bfedbc450b2c803b8 100644 --- a/library/Class/WebService/SIGB/CdScript/Service.php +++ b/library/Class/WebService/SIGB/CdScript/Service.php @@ -67,7 +67,8 @@ class Class_Webservice_SIGB_CdScript_Service extends Class_WebService_SIGB_Abstr return ''; if(!$user = Class_Users::getIdentity()) - return ''; + return Class_Url::assemble(['controller' => 'auth', + 'action' => 'ajax-login']); $data = array_merge($this->getRemoteLibraryId(), ['res' => $item->getSubfield('b'), diff --git a/tests/application/modules/opac/controllers/NoticeAjaxControllerCdScriptTest.php b/tests/application/modules/opac/controllers/NoticeAjaxControllerCdScriptTest.php index 9ca4d608a3084d2e18a1a0404ed06801ee381e5e..7f65631e959bbc53fc7d7a86608a24f4a4ff4eeb 100644 --- a/tests/application/modules/opac/controllers/NoticeAjaxControllerCdScriptTest.php +++ b/tests/application/modules/opac/controllers/NoticeAjaxControllerCdScriptTest.php @@ -20,31 +20,14 @@ */ -class NoticeAjaxControllerCdScriptRecordTest extends AbstractControllerTestCase { +abstract class NoticeAjaxControllerCdScriptRecordTestCase extends AbstractControllerTestCase { protected - $_storm_default_to_volatile = true, - $_record_le_kiosque, - $_item_le_kiosque, - $_service, - $_sigb_le_kiosque, - $_paul; + $_storm_default_to_volatile = true; public function setUp() { parent::setUp(); - $this->_paul = $this->fixture('Class_Users', - ['id' => 15, - 'login' => 'paul', - 'nom' => 'Le Pollux', - 'prenom' => 'Paul', - 'id_sigb' => '654987', - 'idabon' => '23901000323008', - 'mail' => 'anemail@web.com', - 'naissance' => '2002-12-14', - 'password' => 'pollux', - 'date_fin' => '2015-12-14']); - - ZendAfi_Auth::getInstance()->logUser($this->_paul); + ZendAfi_Auth::getInstance()->clearIdentity(); $config = Class_Profil::getCurrentProfil()->getCfgNoticeAsArray(); $config['exemplaires']['grouper'] = '1'; @@ -59,7 +42,7 @@ class NoticeAjaxControllerCdScriptRecordTest extends AbstractControllerTestCase ['id' => 3, 'libelle' => 'Le kiosque library']); - $this->_item_le_kiosque = $this->fixture('Class_Exemplaire', + $item_le_kiosque = $this->fixture('Class_Exemplaire', ['id' => 1, 'code_barres' => '456789', 'id_origine' => '456789', @@ -69,15 +52,60 @@ class NoticeAjaxControllerCdScriptRecordTest extends AbstractControllerTestCase 'cote' => '', 'zone995' => 'a:3:{i:0;a:2:{s:4:"code";s:1:"a";s:6:"valeur";s:10:"Le Kiosque";}i:1;a:2:{s:4:"code";s:1:"b";s:6:"valeur";s:3:"kio";}i:2;a:2:{s:4:"code";s:1:"f";s:6:"valeur";s:3:"319";}}']); - $this->_record_le_kiosque = $this->fixture('Class_Notice', - ['id' => 2, - 'exemplaires' => [$this->_item_le_kiosque]]); + $this->fixture('Class_Notice', + ['id' => 2, + 'exemplaires' => [$item_le_kiosque]]); + + Class_WebService_SIGB_CdScript + ::getService(['server_url' => 'www.jumel39.fr/docnum.php', + 'remote_library_id' => 2]) + ->setTimeSource(new TimeSourceForTest('2015-10-28 09:00:00')); + } + + + public function tearDown() { + Class_WebService_SIGB_CdScript::resetService(); + parent::tearDown(); + } +} + - $this->_service = Class_WebService_SIGB_CdScript::getService(['server_url' => 'www.jumel39.fr/docnum.php', - 'remote_library_id' => 2]); - $this->_service->setTimeSource(new TimeSourceForTest('2015-10-28 09:00:00')); - $this->_sigb_le_kiosque = $this->_service->getNotice('456789')->getExemplaireByCodeBarre('456789'); + +class NoticeAjaxControllerCdScriptRecordWithoutLoginTest extends NoticeAjaxControllerCdScriptRecordTestCase { + public function setUp() { + parent::setUp(); + $this->dispatch('/opac/noticeajax/exemplaires/id_notice/2', true); + } + + + /** @test */ + public function availabilityShouldContainsLinkToAjaxLogin() { + $this->assertXPathContentContains('//table//td/a[contains(@href, "auth/ajax-login")]', + 'Description en ligne', + $this->_response->getBody()); + } +} + + + +class NoticeAjaxControllerCdScriptRecordAsPaulTest extends NoticeAjaxControllerCdScriptRecordTestCase { + public function setUp() { + parent::setUp(); + + $paul = $this->fixture('Class_Users', + ['id' => 15, + 'login' => 'paul', + 'nom' => 'Le Pollux', + 'prenom' => 'Paul', + 'id_sigb' => '654987', + 'idabon' => '23901000323008', + 'mail' => 'anemail@web.com', + 'naissance' => '2002-12-14', + 'password' => 'pollux', + 'date_fin' => '2015-12-14']); + + ZendAfi_Auth::getInstance()->logUser($paul); $this->dispatch('/opac/noticeajax/exemplaires/id_notice/2', true); }