From 172f429f2f0f5e5c6be0475b4c4d595bdbf52ae5 Mon Sep 17 00:00:00 2001 From: llaffont <llaffont@afi-sa.fr> Date: Fri, 22 Aug 2014 15:30:42 +0200 Subject: [PATCH] hotline #15519 add Cyberlibris ID for SSO --- VERSIONS | 1 + library/Class/AdminVar.php | 21 ++-- library/Class/NumilogLink.php | 10 +- library/Class/Users.php | 109 +++++++++--------- library/ZendAfi/View/Helper/RenderAlbum.php | 13 ++- .../controllers/AdminIndexControllerTest.php | 15 ++- .../ZendAfi/View/Helper/RenderAlbumTest.php | 70 +++++++++-- 7 files changed, 152 insertions(+), 87 deletions(-) diff --git a/VERSIONS b/VERSIONS index aaba87820a2..8fcac500b66 100644 --- a/VERSIONS +++ b/VERSIONS @@ -1,3 +1,4 @@ +- ticket #15519: Cyberlibris: validation du SSO Cyberlibris depuis une page notice - ticket #15309: SIGB Orphée: correction de l'intégration des notices lorsque la zone 010 est répétée. diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index e01a388ef3f..2702c757d6c 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ class Class_AdminVar extends Storm_Model_Abstract { @@ -154,8 +154,8 @@ class Class_AdminVar extends Storm_Model_Abstract { * @return bool */ public static function isCVSEnabled() { - return (('' != self::get('CVS_BMKEY')) && ('' != self::get('CVS_BMID')) && - ('' != self::get('CVS_SOURCEPASSWORD')) && ('' != self::get('CVS_SOURCEKEY')) && + return (('' != self::get('CVS_BMKEY')) && ('' != self::get('CVS_BMID')) && + ('' != self::get('CVS_SOURCEPASSWORD')) && ('' != self::get('CVS_SOURCEKEY')) && ('' != self::get('CVS_SOURCEID')) && ('' != self::get('CVS_SOURCENAME')) ); } @@ -213,10 +213,10 @@ class Class_AdminVar extends Storm_Model_Abstract { * @return bool */ public static function isArteVodEnabled() { - return (('' != self::get('ARTE_VOD_LOGIN')) - && ('' != self::get('ARTE_VOD_KEY')) + return (('' != self::get('ARTE_VOD_LOGIN')) + && ('' != self::get('ARTE_VOD_KEY')) && ('' != self::get('ARTE_VOD_SSO_KEY'))); - } + } /** @@ -224,7 +224,7 @@ class Class_AdminVar extends Storm_Model_Abstract { */ public static function isMusicMeEnabled() { return ('' != self::get('MUSICME_URL')); - } + } /** @@ -318,6 +318,7 @@ class Class_AdminVar extends Storm_Model_Abstract { 'NUMILOG_OAI_URL' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>', 'NUMILOG_OAI_IDBIB' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>', 'CYBERLIBRIS_URL' => 'Adresse du serveur OAI Cyberlibris', + 'CYBERLIBRIS_ID' => 'Identifiant SSO Cyberlibris', 'OAI_SERVER' => 'Activation du serveur OAI. 0 = inactif, 1 = actif', 'PACK_MOBILE' => 'Activation des fonctions avancées du téléphone. 0 = inactif, 1 = actif', 'ARTE_VOD_LOGIN' => 'Login ARTE VOD', @@ -358,7 +359,7 @@ class Class_AdminVar extends Storm_Model_Abstract { 'EXTRA_SKIN_PATH' => 'Chemin vers les skins personnalisées, relatif à ' . Class_Profil_Skin::EXTRA_PATH, 'ENABLE_COLLABORATIVE_BROWSING' => 'Activation de la navigation collaborative. 0 = inactif, 1 = actif', 'KOHA_MULTI_SITES' => 'WS KOHA : Reservation d\'exemplaires pour les multi sites. 0 = inactif, 1 = actif', - 'LEKIOSK_ID' => 'Identifiant fournit par lekiosk.com', + 'LEKIOSK_ID' => 'Identifiant fournit par lekiosk.com' ]; return self::$_knownVars; } @@ -388,7 +389,7 @@ class Class_AdminVar extends Storm_Model_Abstract { } - /** @return bool */ + /** @return bool */ public static function getGoogleAnalyticsId() { $script = static::get('GOOGLE_ANALYTICS'); preg_match_all("/setAccount[\', \n\t]+\'([^\']+)\'/i", $script, $matches); @@ -418,7 +419,7 @@ class Class_AdminVar extends Storm_Model_Abstract { return self::isModuleEnabled('MENU_BOITE'); } - + public static function isAfficherDispoSurRechercheEnabled() { return self::isModuleEnabled('AFFICHER_DISPONIBILITE_SUR_RECHERCHE'); } diff --git a/library/Class/NumilogLink.php b/library/Class/NumilogLink.php index d5a670be35f..89651787a0b 100644 --- a/library/Class/NumilogLink.php +++ b/library/Class/NumilogLink.php @@ -16,14 +16,12 @@ * * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ class Class_NumilogLink extends Class_WebService_Abstract { use Trait_TimeSource; - const CVS_SOURCEXPIRATIONTIME = 30; - protected $_user; public static function forUser($user) { @@ -48,13 +46,13 @@ class Class_NumilogLink extends Class_WebService_Abstract { function getTicket() { return (new Class_CasTicket())->getTicketForUser($this->_user); - } + } function urlExternal($url_external){ if ($this->_user) return $url_external.'&ticket='.$this->getTicket(); - else + else return $url_external; } @@ -62,7 +60,7 @@ class Class_NumilogLink extends Class_WebService_Abstract { function url(){ if ($this->_user) return $this->getBaseUrl().'?ticket='.$this->getTicket(); - else + else return $this->getBaseUrl(); } diff --git a/library/Class/Users.php b/library/Class/Users.php index 2de09138898..1be18ba5649 100644 --- a/library/Class/Users.php +++ b/library/Class/Users.php @@ -16,11 +16,11 @@ * * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ class UsersLoader extends Storm_Model_Loader { - + public function countForNewsletter($id_newsletter) { // return Class_Users::countBy(['where' => 'mail is not null and mail != "" and ' } @@ -32,9 +32,9 @@ class UsersLoader extends Storm_Model_Loader { return $users; } - + protected function findUsersById($ids) { - if(!is_array($ids) + if(!is_array($ids) || 0 == count(array_filter($ids))) return []; @@ -76,7 +76,7 @@ class UsersLoader extends Storm_Model_Loader { if ($nb_users_to_fetch <= 0) break; - $params = ['role_level' => $group->getRoleLevel(), + $params = ['role_level' => $group->getRoleLevel(), 'limit' => $nb_users_to_fetch, 'where' => sprintf('(nom like \'%1$s\' or prenom like \'%1$s\' or login like \'%1$s\')', $like), 'order' => ['nom','prenom', 'login']]; @@ -175,7 +175,7 @@ class UsersLoader extends Storm_Model_Loader { return false; return $user->canAccessAllBibs(); } - + /** * @return array */ @@ -239,7 +239,7 @@ class Class_Users extends Storm_Model_Abstract { const MODE_CONTACT_SMS = 'is_contact_sms'; const CIVILITE_INDEFINIE = 0; const CIVILITE_MADAME = 1; - const CIVILITE_MONSIEUR = 2; + const CIVILITE_MONSIEUR = 2; protected $_table_name = 'bib_admin_users'; @@ -299,7 +299,7 @@ class Class_Users extends Storm_Model_Abstract { 'referenced_in' => 'id_site'], 'zone' => ['through' => 'bib'], - + 'panier_courant' => ['model' => 'Class_PanierNotice', 'referenced_in' => 'id_panier_courant']]; @@ -421,7 +421,7 @@ class Class_Users extends Storm_Model_Abstract { public function getModeContact() { return $this->getIsContactMail() ? self::MODE_CONTACT_MAIL - : ($this->getIsContactSms() + : ($this->getIsContactSms() ? self::MODE_CONTACT_SMS : self::MODE_CONTACT_LETTER); } @@ -480,7 +480,7 @@ class Class_Users extends Storm_Model_Abstract { return ($this->getDateFin() >= date("Y-m-d")); } - + /** * Retourne la Date au format YYYY/MM/DD * @return string @@ -489,24 +489,24 @@ class Class_Users extends Storm_Model_Abstract { return str_replace("-", "/", $this->getNaissance()); } - + /** * @return int */ public function getAge(){ if(!$date_naissance=$this->getDateNaissanceIso8601()) return null; - + $arr1 = explode('/', $date_naissance); $arr2 = explode('/', $this->getToday()); - + if(($arr1[1] < $arr2[1]) || (($arr1[1] == $arr2[1]) && ($arr1[2] <= $arr2[2]))) return $arr2[0] - $arr1[0]; return $arr2[0] - $arr1[0] - 1; } - - + + /** * @return string */ @@ -515,8 +515,8 @@ class Class_Users extends Storm_Model_Abstract { return $today; return date('Y/m/d'); } - - + + /** * @return array */ @@ -524,10 +524,10 @@ class Class_Users extends Storm_Model_Abstract { $groupes=array(); if ($this->getAge()>= 18) $groupes[]='adulte'; - else if($this->hasNaissance()) + else if($this->hasNaissance()) $groupes[]='mineur'; - - if ($this->hasIdabon()) + + if ($this->hasIdabon()) $groupes[]='abonne'; $groupes[]=$this->getLibelleRole(); return $groupes; @@ -560,19 +560,19 @@ class Class_Users extends Storm_Model_Abstract { * @return array */ public function getUserGroups() { - return array_merge(parent::_get('user_groups'), + return array_merge(parent::_get('user_groups'), Class_UserGroup::findAllBy(['role_level' => $this->getRoleLevel(), 'group_type' => Class_UserGroup::TYPE_DYNAMIC])); } - + /** * @return string */ public function getLibelleRole(){ return ZendAfi_Acl_AdminControllerRoles::getNomRole($this->getRoleLevel()); } - + /** * @return array */ @@ -637,7 +637,7 @@ class Class_Users extends Storm_Model_Abstract { public function getRights() { $rights = array(); $groups = $this->getUserGroups(); - foreach ($groups as $group) + foreach ($groups as $group) $rights = array_merge($rights, $group->getRights()); return array_values(array_unique($rights)); } @@ -718,6 +718,11 @@ class Class_Users extends Storm_Model_Abstract { } + public function hasRightAccessCyberlibris() { + return $this->isAbonneAndHasRightToAccess(Class_UserGroup::RIGHT_ACCES_CYBERLIBRIS); + } + + public function getFirstAvisByIdNotice($id_notice) { $notice = Class_Notice::getLoader()->find($id_notice); $avis = $notice->getAvisByUser($this); @@ -762,7 +767,7 @@ class Class_Users extends Storm_Model_Abstract { $cond[]="ID_SITE in($inSql)"; } } - + $recherche = array_merge(array('role' => '', 'login' => '', 'nom' => ''), $recherche); @@ -871,7 +876,7 @@ class Class_Users extends Storm_Model_Abstract { $ret["error"]=$error; return $ret; } - + Class_UsersNonValid::newInstance(['login' => $login, 'password' => $mdp, 'mail' => $mail, @@ -923,7 +928,7 @@ class Class_Users extends Storm_Model_Abstract { // Mot de passe oublié //------------------------------------------------------------------------------------------------------ function lostpass($user) { - if(!trim($user)) + if(!trim($user)) return array('error' => 1); if (!$user = Class_Users::getLoader()->findFirstBy(['login' => $user])) @@ -932,20 +937,20 @@ class Class_Users extends Storm_Model_Abstract { if (!$user) return ['error' => 2]; - if (!$user->hasMail()) + if (!$user->hasMail()) return ['error' => 4]; - + // envoi du mail $message_mail = sprintf("%s\n\n", $this->_('Vous avez fait une demande de mot de passe sur le portail.')); $message_mail .= $this->_("Votre identifiant : %s\n", $user->getLogin()); $message_mail .= $this->_("Votre mot de passe : %s\n", $user->getPassword()); $message_mail .= sprintf("%s\n\n", $this->_('Bonne navigation sur le portail')); - $erreur = (new Class_Mail())->sendMail(Class_Profil::getCurrentProfil()->getTitreSite(), - $message_mail, + $erreur = (new Class_Mail())->sendMail(Class_Profil::getCurrentProfil()->getTitreSite(), + $message_mail, $user->getMail()); - return $erreur + return $erreur ? ['message_mail' => '<p class="error">'.$erreur.'</p>'] : ['message_mail' => $this->_("Un mail vient de vous être envoyé avec vos paramètres de connexion.")]; } @@ -960,15 +965,15 @@ class Class_Users extends Storm_Model_Abstract { } else { $user = $this; } - - $pseudo = ($complet) ? + + $pseudo = ($complet) ? trim($user->PRENOM." ".$user->NOM): $user->PSEUDO; - if ($pseudo) + if ($pseudo) return $pseudo; - if ($user->PRENOM) + if ($user->PRENOM) return $user->PRENOM; @@ -994,7 +999,7 @@ class Class_Users extends Storm_Model_Abstract { public function getPanierCourant() { - return ($panier_courant = parent::getPanierCourant()) ? $panier_courant : Class_PanierNotice::newInstance(); + return ($panier_courant = parent::getPanierCourant()) ? $panier_courant : Class_PanierNotice::newInstance(); } @@ -1133,17 +1138,17 @@ class Class_Users extends Storm_Model_Abstract { - + public function beforeSave() { $this->setDateMaj(Class_Multimedia_Utils_DateTimeFormat::getInstance() ->getCurrentDateFormatInYmdHMS()); if(!$this->isNew()) return $this; - + $newletters = Class_Newsletter::findAllBy(['auto_subscribe'=>true]); $this->setNewsletters($newletters); - + } @@ -1262,7 +1267,7 @@ class Class_Users extends Storm_Model_Abstract { } - + /** * return StdClass */ @@ -1283,19 +1288,19 @@ class Class_Users extends Storm_Model_Abstract { return $this; } - + public function newPanier() { return Class_PanierNotice::newPanierForUser($this); } - + public function getEditablePaniers() { $user_paniers = $this->getPaniers(); if ($this->canAccessBackend()) - $user_paniers = array_unique(array_merge($user_paniers, + $user_paniers = array_unique(array_merge($user_paniers, Class_PanierNotice::findAllWithCatalogue())); Class_PanierNotice::sortPaniersByLibelle($user_paniers); - + return $user_paniers; } @@ -1321,21 +1326,21 @@ class Class_Users extends Storm_Model_Abstract { 'categories' => [], 'items' => $data_items, 'options' => ['multipleSelection' => false]]; - + } public function getPaniersDomainesJson() { $paniers = $this->getPaniers(); $paniers_domaines= []; - + foreach($paniers as $panier) { if(!$domaines = $panier->getCatalogues()) continue; - + foreach($domaines as $domaine) { $domaine_id = $domaine->getId(); - + if(!isset($paniers_domaines[$domaine_id])) $paniers_domaines[$domaine_id] = ['id' => $domaine_id, 'label' => $domaine->getLibelle(), @@ -1348,17 +1353,17 @@ class Class_Users extends Storm_Model_Abstract { $paniers_domaines[$domaine_id]['items'][] = $panier->toDataForJson(); } } - + return ['id' => 'paniers_domaines', 'label' => $this->_('Mes paniers rattachés à un domaine'), 'categories' => $paniers_domaines, 'items' => [], 'options' => ['multipleSelection' => false]]; - + } - + public function isNoticeInMyPanier($notice) { $mes_paniers = $this->getPaniers(); foreach($mes_paniers as $panier){ diff --git a/library/ZendAfi/View/Helper/RenderAlbum.php b/library/ZendAfi/View/Helper/RenderAlbum.php index 277fc735400..605c860635c 100644 --- a/library/ZendAfi/View/Helper/RenderAlbum.php +++ b/library/ZendAfi/View/Helper/RenderAlbum.php @@ -16,12 +16,12 @@ * * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ class ZendAfi_View_Helper_RenderAlbum extends Zend_View_Helper_HtmlElement { public function renderAlbum($album) { - return $album + return $album ? sprintf('<div id="resnum">%s</div>', $this->renderAlbumHelper($album)) : ''; } @@ -33,10 +33,13 @@ class ZendAfi_View_Helper_RenderAlbum extends Zend_View_Helper_HtmlElement { Class_ScriptLoader::getInstance()->loadBooklet($album->getId(), '#resnum'); return ''; } - - if ($album->isNumilog() || $album->isCyberlibris()) + + if ($album->isNumilog()) return $this->view->tagLivreNumerique($album); + if ($album->isCyberlibris()) + return $this->view->tagCyberlibrisBook($album); + if ($album->isDiaporama() && $album->hasOnlyImages()) return $this->view->tagSlideshow($album); @@ -54,7 +57,7 @@ class ZendAfi_View_Helper_RenderAlbum extends Zend_View_Helper_HtmlElement { if ($album->isCoursToutApprendre()) return $this->view->tagCoursToutApprendre($album); - + if ($album->isEPUB()) return $this->view->monocleReaderServerSide($album); diff --git a/tests/application/modules/admin/controllers/AdminIndexControllerTest.php b/tests/application/modules/admin/controllers/AdminIndexControllerTest.php index aab333cf2e3..d0ea2434649 100644 --- a/tests/application/modules/admin/controllers/AdminIndexControllerTest.php +++ b/tests/application/modules/admin/controllers/AdminIndexControllerTest.php @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ require_once 'AdminAbstractControllerTestCase.php'; @@ -183,12 +183,17 @@ class AdminIndexControllerAdminVarActionTest extends Admin_AbstractControllerTes $this->assertXpathContentContains('//td', 'WEBKIOSK_KEY'); } - + /** @test */ public function boitePanierAutoKeyShouldBePresent() { $this->assertXpathContentContains('//td', 'BOITE_PANIER_AUTO'); } + + /** @test */ + public function cyberlibrisIDShouldBePresent() { + $this->assertXpathContentContains('//td', 'CYBERLIBRIS_ID'); + } } @@ -234,7 +239,7 @@ class AdminIndexControllerAdminVarEditResaConditionActionTest extends Admin_Abst public function setUp() { parent::setUp(); - + $this->_resa_condition = Class_AdminVar::getLoader() ->newInstanceWithId('RESA_CONDITION') ->setValeur('Mes+conditions+de+reservation'); @@ -254,9 +259,9 @@ class AdminIndexControllerAdminVarEditResaConditionActionTest extends Admin_Abst /** @test */ public function postResaConditionShouldEncodeItsValeur() { - $this->postDispatch('/admin/index/adminvaredit/cle/RESA_CONDITION', + $this->postDispatch('/admin/index/adminvaredit/cle/RESA_CONDITION', array('valeur' => 'Il faut demander')); - + $this->assertEquals('Il+faut+demander', $this->_resa_condition->getValeur()); } } diff --git a/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php b/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php index bf6c128c8a0..4800484282e 100644 --- a/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php +++ b/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ abstract class ZendAfi_View_Helper_RenderAlbumTestCase extends ViewHelperTestCase { @@ -62,7 +62,7 @@ class ZendAfi_View_Helper_RenderAlbumEPUBTest extends ZendAfi_View_Helper_Render /** @test */ public function pageShouldContainsLinkToDownloadEPUB() { - $this->assertXPathContentContains($this->html, + $this->assertXPathContentContains($this->html, '//a[contains(@href,"/userfiles/album/999/big/media/versailles.epub")]', 'versailles.epub'); } @@ -70,7 +70,7 @@ class ZendAfi_View_Helper_RenderAlbumEPUBTest extends ZendAfi_View_Helper_Render /** @test */ public function pageShouldDisplayEPubFullScreenLink() { - $this->assertXPath($this->html, + $this->assertXPath($this->html, '//a[contains(@href, "bib-numerique/full-screen/id/123")]'); } @@ -98,10 +98,10 @@ class ZendAfi_View_Helper_RenderAlbumGallicaTest extends ZendAfi_View_Helper_Ren /** @test */ public function pageShouldContainsGallicaPlayer() { $this->assertXPath($this->html, - '//object//param[@name="FlashVars"][contains(@value, "1234")]', + '//object//param[@name="FlashVars"][contains(@value, "1234")]', $this->html); } - + } @@ -125,14 +125,14 @@ class ZendAfi_View_Helper_RenderAlbumFormationVodeclicTest extends ZendAfi_View_ ['id' => '20', 'libelle' => 'Multimedia']) ->addRight(Class_UserGroup::RIGHT_ACCES_VODECLIC); - + $logged_user->beAbonneSIGB() ->setUserGroups([$this->group_multimedia]); ZendAfi_Auth::getInstance()->logUser($logged_user); $this->_helper->renderAlbum($this->formation); - $this->assertContains('vodeclic_window.location = "http://biblio.vodeclic.com/formation/549"', + $this->assertContains('vodeclic_window.location = "http://biblio.vodeclic.com/formation/549"', Class_ScriptLoader::getInstance()->html()); } @@ -152,7 +152,7 @@ class ZendAfi_View_Helper_RenderAlbumNumeriquePremiumTest extends ZendAfi_View_H public function setUp() { parent::setUp(); $this->book = $this->fixture('Class_Album', - ['id' => 3, + ['id' => 3, 'libelle' => 'Emile Zola', 'external_uri' => 'http://www.numeriquepremium.com/content/books/9782760622173']) ->beNumeriquePremium(); @@ -169,7 +169,7 @@ class ZendAfi_View_Helper_RenderAlbumNumeriquePremiumTest extends ZendAfi_View_H /** @test */ public function linkToNumeriquePremiumPageShouldBePresentOnValidUser() { $logged_user = $this->fixture('Class_Users', - ['id' => 6, + ['id' => 6, 'nom'=>'Paul', 'login'=>'Polux', 'password'=>'123456', @@ -193,4 +193,56 @@ class ZendAfi_View_Helper_RenderAlbumNumeriquePremiumTest extends ZendAfi_View_H } + + +class ZendAfi_View_Helper_RenderAlbumCyberlibrisTest extends ZendAfi_View_Helper_RenderAlbumTestCase { + public function setUp() { + parent::setUp(); + + Class_AdminVar::newInstanceWithId('CYBERLIBRIS_ID', + ['valeur' => 'my_lib']); + + $this->book = $this->fixture('Class_Album', + ['id' => 3, + 'libelle' => 'Totem et Thora', + 'id_origine' => '88817216', + 'external_uri' => 'http://www.bibliovox.com/bookdetails.aspx?docID=88817216']) + ->beCyberlibris(); + } + + + /** @test */ + public function linkToBookShouldNotBeDisplay(){ + $this->assertContains('Vous devez être connecté', + $this->_helper->renderAlbum($this->book)); + } + + + /** @test */ + public function linkToCyberlibrisPageShouldBePresentOnValidUser() { + $logged_user = $this->fixture('Class_Users', + ['id' => 6, + 'nom'=>'Paul', + 'login'=>'Polux', + 'password'=>'123456', + 'id_site' => 1, + 'idabon' => '12345', + 'user_groups' => [$this->fixture('Class_UserGroup', + ['id' => '20', + 'libelle' => 'Multimedia', + 'rights' => [Class_UserGroup::RIGHT_ACCES_CYBERLIBRIS]])] + ]); + + $logged_user->beAbonneSIGB()->assertSave(); + + ZendAfi_Auth::getInstance()->logUser($logged_user); + $html = $this->_helper->renderAlbum($this->book); + $this->assertXPath($html, + '//a[@href="http://www.bibliovox.com/my_lib?docid=88817216"]', + $html); + } + +} + + ?> -- GitLab