diff --git a/FEATURES/52054 b/FEATURES/52054 new file mode 100644 index 0000000000000000000000000000000000000000..b3114ff8aeb76e289497280731ca3a70e3624096 --- /dev/null +++ b/FEATURES/52054 @@ -0,0 +1,10 @@ + '52054' => + ['Label' => $this->_('Recherche fédérée pour MusicMe'), + 'Desc' => $this->_('Moissonnage des notices de musicMe'), + 'Image' => '', + 'Video' => 'https://www.youtube.com/watch?v=xxMHIK31ZPc', + 'Category' => 'Bibliothèque numérique', + 'Right' => function($feature_description, $user) {return true;}, + 'Wiki' => 'http://wiki.bokeh-library-portal.org/index.php?title=MusicMe', + 'Test' => '', + 'Date' => '2017-11-14'], \ No newline at end of file diff --git a/VERSIONS_WIP/52054 b/VERSIONS_WIP/52054 new file mode 100644 index 0000000000000000000000000000000000000000..6a58a6f0707faff0e5048d965c5f297bf6df0ee7 --- /dev/null +++ b/VERSIONS_WIP/52054 @@ -0,0 +1 @@ + - ticket #52054 : Aspiration des notices de MusicMe \ No newline at end of file diff --git a/application/modules/opac/controllers/AuthController.php b/application/modules/opac/controllers/AuthController.php index b3a171a11f486d4b119605eff23bde8932dd5a2f..0088ec3d381fd8826c5b79ce5e598426db41331e 100644 --- a/application/modules/opac/controllers/AuthController.php +++ b/application/modules/opac/controllers/AuthController.php @@ -738,7 +738,7 @@ class Auth_Strategy_Logged extends Auth_Strategy_Abstract{ class Auth_Strategy_Cas_Abstract extends Auth_Strategy_Abstract{ public function urlServiceCas() { - if ($url_musicme = $this->redirectMusicMe()) + if ($url_musicme = $this->redirectMusicme()) return $url_musicme; $ticket = (new Class_CasTicket())->getTicketForCurrentUser(); @@ -755,10 +755,10 @@ class Auth_Strategy_Cas_Abstract extends Auth_Strategy_Abstract{ } - public function redirectMusicMe() { + public function redirectMusicme() { if (strpos($this->controller->getCasServerUrl(),'musicme') !== false) { - $musicme = new Class_Systeme_ModulesMenu_MusicMe(); - return $musicme->getDynamiqueUrl(); + $module_menu = Class_DigitalResource::getInstance()->getModuleMenuFor('Musicme'); + return $module_menu->getDynamiqueUrl(); } return false; diff --git a/application/modules/opac/controllers/CasServerController.php b/application/modules/opac/controllers/CasServerController.php index 2662ce7e0295760e195bf4cd8cba234b9bbc2fb3..54cb4e97d842b003ddf65aefad088d65f2bf5cbb 100644 --- a/application/modules/opac/controllers/CasServerController.php +++ b/application/modules/opac/controllers/CasServerController.php @@ -41,7 +41,7 @@ class CasServerController extends ZendAfi_Controller_Action { } - public function returnValidMusicMeResponse($user) { + public function returnValidMusicmeResponse($user) { $this->getResponse()->setHeader('Content-Type', 'application/xml;charset=utf-8'); $this->getResponse()->setBody( '<User> <ID>'.$user->getId().'</ID> @@ -54,7 +54,7 @@ class CasServerController extends ZendAfi_Controller_Action { } - public function returnMusicMeFailureTicketResponse($error,$ticket=null) { + public function returnMusicmeFailureTicketResponse($error,$ticket=null) { $this->getResponse()->setHeader('Content-Type', 'application/xml;charset=utf-8'); $xml="<User />"; $this->getResponse()->setBody($xml); @@ -77,13 +77,13 @@ class CasServerController extends ZendAfi_Controller_Action { $ticket=$this->_request->getParam('ticket'); if (strlen($ticket)<1 || strlen($bibid)<1) { - return $this->returnMusicMeFailureTicketResponse('INVALID_REQUEST'); + return $this->returnMusicmeFailureTicketResponse('INVALID_REQUEST'); } if ($user = (new Class_CasTicket())->userForTicket($ticket)) - return $this->returnValidMusicMeResponse($user); + return $this->returnValidMusicmeResponse($user); - return $this->returnMusicMeFailureTicketResponse('INVALID_TICKET',$ticket); + return $this->returnMusicmeFailureTicketResponse('INVALID_TICKET',$ticket); } diff --git a/application/modules/opac/controllers/ModulesController.php b/application/modules/opac/controllers/ModulesController.php index 8fa1c122bfda586cda40af6a33d29f606f7862b1..3dfa1208fc7bcab52357ff10ed11e2678d19300a 100644 --- a/application/modules/opac/controllers/ModulesController.php +++ b/application/modules/opac/controllers/ModulesController.php @@ -31,7 +31,6 @@ class ModulesController extends ZendAfi_Controller_Action { 'orthodidacte' => 'Orthodidacte', 'cite-de-la-musique' => 'CiteDeLaMusique', 'artevod' => 'ArteVOD', - 'musicme' => 'MusicMe', 'numilog' => 'Numilog']; $action = $this->_request->getActionName(); @@ -41,11 +40,12 @@ class ModulesController extends ZendAfi_Controller_Action { $digital_resource = Class_DigitalResource::getInstance(); - if ($digital_resource->getPluginsSSOActions()->includes($action)) + if ($digital_resource->getPluginsSSOActions()->includes($action)) { $this->_forward($action, 'index', $digital_resource->getModuleNameForAction($action), $this->_request->getParams()); + } } diff --git a/cosmogramme/sql/patch/patch_339.php b/cosmogramme/sql/patch/patch_339.php new file mode 100644 index 0000000000000000000000000000000000000000..03c742c2340af352bc77e452f1b6b92f857e7a51 --- /dev/null +++ b/cosmogramme/sql/patch/patch_339.php @@ -0,0 +1,12 @@ +<?php +(new Class_Migration_DigitalResource_Musicme())->run(); +$adapter = Zend_Db_Table_Abstract::getDefaultAdapter(); + +try{ + $adapter = Zend_Db_Table_Abstract::getDefaultAdapter(); + $adapter->query('update album set url_origine = "http://www.lasourisquiraconte.com" where type_doc_id="LaSourisQuiRaconte" and url_origine is null'); + $adapter->query('update album set url_origine = "http://skilleos.com/sigb/sso/" where type_doc_id="Skilleos" and url_origine is null'); + $adapter->query('update album set url_origine = "http://www.lekiosk.com/" where type_doc_id="Lekiosk" and url_origine is null'); +} catch(Exception $e) {} + +?> \ No newline at end of file diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index 9eb73df0a9f2c6907dc4aa6416820b466e87fff0..54168b05adee764b982345b295c73c1a3fa648f8 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -158,9 +158,6 @@ class Class_AdminVarLoader extends Storm_Model_Loader { 'NUMERIQUE_PREMIUM_URL' => Class_AdminVar_Meta::newDefault('')->bePrivate(), - 'MUSICME_URL' => Class_AdminVar_Meta::newDefault('')->bePrivate(), - 'MUSICME_BIB_ID' => Class_AdminVar_Meta::newDefault('')->bePrivate(), - 'JAMENDO_CLIENT_ID' => Class_AdminVar_Meta::newDefault($this->_('ID client Jamendo')), 'SOUNDCLOUD_CLIENT_ID' => Class_AdminVar_Meta::newDefault($this->_('ID client SoundCloud')), @@ -754,14 +751,6 @@ class Class_AdminVarLoader extends Storm_Model_Loader { } - /** - * @return bool - */ - public function isMusicMeEnabled() { - return ('' != Class_AdminVar::get('MUSICME_URL')); - } - - /** * @return bool */ diff --git a/library/Class/Migration/DigitalResource/Abstract.php b/library/Class/Migration/DigitalResource/Abstract.php new file mode 100644 index 0000000000000000000000000000000000000000..a9a6dcf42a83aab18c3bdd47fab57c8918d8aece --- /dev/null +++ b/library/Class/Migration/DigitalResource/Abstract.php @@ -0,0 +1,134 @@ +<?php +/** + * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +abstract class Class_Migration_DigitalResource_Abstract { + use Trait_MemoryCleaner; + + protected $_found_in_profil = false; + + + public function run() { + $this + ->renameAdminVars() + ->renameMenusKeys() + ->upgradePermissions() + ->renameBatches(); + } + + + protected function renameAdminVars() { + foreach($this->_getAdminVarMapping() as $old => $new) + $this->_renameAdminVar($old, $new); + + Class_AdminVar::clearCache(); + return $this; + } + + + protected function _renameAdminVar($old, $new) { + if(!$old_var = Class_AdminVar::find($old)) + return $this; + + $old_var->delete(); + + Class_AdminVar::set($new, $old_var->getValeur()); + Class_AdminVar::clearCache(); + return $this; + } + + + protected function upgradePermissions() { + foreach(Class_UserGroup::findAll() as $group) + $this->replacePermission($group); + $this->_cleanMemory(); + return $this; + } + + + protected function replacePermission($group) { + $old_rights = $group->getRightsToken(); + + if((pow(2, $this->_getOldRightToken()) & $old_rights) === pow(2, $this->_getOldRightToken())) { + $group + ->setRights($group->getRights()) + ->save(); + $permission = $this->_getConfig() + ->getPermission(); + $permission->permitTo($group, new Class_Entity()); + } + + return $group; + } + + + protected function renameMenusKeys() { + foreach(Class_Profil::findTopProfils() as $profil) + $this->searchAndRename($profil); + $this->_cleanMemory(); + return $this; + } + + + protected function searchAndRename($profil) { + $this->_found_in_profil = false; + $cfg_menu = $profil->getCfgMenusAsArray(); + $cfg_menu = $this->recursiveSearchAndRename($this->_getOldMenuName(), $this->_getConfig()->getName(), $cfg_menu); + + if($this->_found_in_profil) + $profil + ->setCfgMenus($cfg_menu) + ->save(); + + return $profil; + } + + + protected function recursiveSearchAndRename($search, $replace, $subject){ + foreach($subject as $key => $value) { + if($search === $value){ + $this->_found_in_profil = true; + $subject[$key] = $replace; + return $subject; + } + if(is_array($value)) + $subject[$key] = $this->recursiveSearchAndRename($search, $replace, $value); + } + return $subject; + } + + + + protected function renameBatches() { + if(!$batch = Class_Batch::findFirstBy(['type' => $this->_getOldBatchName()])) + return; + + $batch->setType($this->_getConfig()->getName())->save(); + return $this; + } + + + abstract protected function _getOldRightToken(); + abstract protected function _getAdminVarMapping(); + abstract protected function _getConfig(); + abstract protected function _getOldMenuName(); + abstract protected function _getOldBatchName(); +} \ No newline at end of file diff --git a/library/Class/Migration/DigitalResource/Assimil.php b/library/Class/Migration/DigitalResource/Assimil.php index 60eff976f2f2889f1bf51f510e1fef816560d7f6..b5b584be2f818612fdd2aa6bfc7006c404fea886 100644 --- a/library/Class/Migration/DigitalResource/Assimil.php +++ b/library/Class/Migration/DigitalResource/Assimil.php @@ -20,108 +20,29 @@ */ -class Class_Migration_DigitalResource_Assimil { - use Trait_MemoryCleaner; +class Class_Migration_DigitalResource_Assimil extends Class_Migration_DigitalResource_Abstract { - const OLD_ASSIMIL_RIGHT_TOKEN = 30; - - protected $_found_assimil_in_profil = false; - - - public function run() { - $this - ->renameAdminVar() - ->renameMenusKeys() - ->upgradePermissions() - ->renameBatches(); + protected function _getOldRightToken() { + return 30; } - protected function renameAdminVar() { - if(!$old_var = Class_AdminVAr::find('ASSIMIL')) - return $this; - - if(!Class_AdminVAr::set('Assimil_Assimil', $old_var->getValeur())) - return $this; - - $old_var->delete(); - - Class_AdminVar::clearCache(); - return $this; + protected function _getAdminVarMapping() { + return ['ASSIMIL' => 'Assimil_Assimil']; } - protected function renameBatches() { - if(!$batch = Class_Batch::findFirstBy(['type' => 'ASSIMIL'])) - return; - - $batch->setType(Assimil_Config::getName())->save(); - return $this; + protected function _getConfig() { + return Assimil_Config::getInstance(); } - protected function upgradePermissions() { - foreach(Class_UserGroup::findAll() as $group) - $this->replacePermission($group); - $this->_cleanMemory(); - return $this; + protected function _getOldMenuName() { + return 'ASSIMIL'; } - protected function replacePermission($group) { - $old_rights = $group->getRightsToken(); - $permissions = []; - - if((pow(2, static::OLD_ASSIMIL_RIGHT_TOKEN) & $old_rights) === pow(2, static::OLD_ASSIMIL_RIGHT_TOKEN)) - $permissions[] = Assimil_Config::getInstance()->getPermission(); - - $group - ->setRights($group->getRights()) - ->save(); - - (new Storm_Model_Collection($permissions)) - ->eachDo(function($permission) use ($group) - { - $permission->permitTo($group, new Class_Entity()); - }); - - return $group; + protected function _getOldBatchName() { + return 'ASSIMIL'; } - - - protected function renameMenusKeys() { - foreach(Class_Profil::findAll() as $profil) - $this->searchAndRename($profil); - $this->_cleanMemory(); - return $this; - } - - - protected function searchAndRename($profil) { - $this->_found_assimil_in_profil = false; - $cfg_menu = $profil->getCfgMenusAsArray(); - $cfg_menu = $this->recursiveSearchAndRename('ASSIMIL', Assimil_Config::getName(), $cfg_menu); - - if($this->_found_assimil_in_profil) - $profil - ->setCfgMenus($cfg_menu) - ->save(); - - return $profil; - } - - - protected function recursiveSearchAndRename($search, $replace, $subject){ - foreach($subject as $key => $value) { - if($search === $value){ - $this->_found_assimil_in_profil = true; - $subject[$key] = $replace; - return $subject; - } - if(is_array($value)) - $subject[$key] = $this->recursiveSearchAndRename($search, $replace, $value); - } - return $subject; - } - } \ No newline at end of file diff --git a/library/Class/Migration/DigitalResource/LeKiosk.php b/library/Class/Migration/DigitalResource/LeKiosk.php index 93f026a65f387805c5d167c7280ce3e8af58d754..5d3ec60c5b6f09d523e973ca6106b1589b58ad64 100644 --- a/library/Class/Migration/DigitalResource/LeKiosk.php +++ b/library/Class/Migration/DigitalResource/LeKiosk.php @@ -20,100 +20,30 @@ */ -class Class_Migration_DigitalResource_LeKiosk { - use Trait_MemoryCleaner; +class Class_Migration_DigitalResource_LeKiosk extends Class_Migration_DigitalResource_Abstract { - const OLD_LEKIOSK_RIGHT_TOKEN = 21; - - protected $_found_lekiosk_in_profil = false; - - - public function run() { - $this - ->renameAdminVars() - ->renameMenusKeys() - ->upgradePermissions(); - } - - - protected function renameAdminVars() { - foreach(['LEKIOSK_ID' => 'Lekiosk_ID', - 'LEKIOSK_SSO_MODE' => 'Lekiosk_SSO_MODE'] as $old => $new) - $this->_renameAdminVar($old, $new); - - Class_AdminVar::clearCache(); - return $this; - } - - - protected function _renameAdminVar($old, $new) { - if(!$old_var = Class_AdminVAr::find($old)) - return $this; - - $old_var->delete(); - - Class_AdminVAr::set($new, $old_var->getValeur()); - return $this; - } - - - protected function upgradePermissions() { - foreach(Class_UserGroup::findAll() as $group) - $this->replacePermission($group); - $this->_cleanMemory(); - return $this; + protected function _getOldRightToken() { + return 21; } - protected function replacePermission($group) { - $old_rights = $group->getRightsToken(); - - if((pow(2, static::OLD_LEKIOSK_RIGHT_TOKEN) & $old_rights) === pow(2, static::OLD_LEKIOSK_RIGHT_TOKEN)) { - $group - ->setRights($group->getRights()) - ->save(); - $permission = Lekiosk_Config::getInstance() - ->getPermission(); - $permission->permitTo($group, new Class_Entity()); - } - - return $group; + protected function _getAdminVarMapping() { + return ['LEKIOSK_ID' => 'Lekiosk_ID', + 'LEKIOSK_SSO_MODE' => 'Lekiosk_SSO_MODE']; } - protected function renameMenusKeys() { - foreach(Class_Profil::findTopProfils() as $profil) - $this->searchAndRename($profil); - $this->_cleanMemory(); - return $this; + protected function _getConfig() { + return Lekiosk_Config::getInstance(); } - protected function searchAndRename($profil) { - $this->_found_lekiosk_in_profil = false; - $cfg_menu = $profil->getCfgMenusAsArray(); - $cfg_menu = $this->recursiveSearchAndRename('LEKIOSK', Lekiosk_Config::getName(), $cfg_menu); - - if($this->_found_lekiosk_in_profil) - $profil - ->setCfgMenus($cfg_menu) - ->save(); - - return $profil; + protected function _getOldMenuName() { + return 'LEKIOSK'; } - protected function recursiveSearchAndRename($search, $replace, $subject){ - foreach($subject as $key => $value) { - if($search === $value){ - $this->_found_lekiosk_in_profil = true; - $subject[$key] = $replace; - return $subject; - } - if(is_array($value)) - $subject[$key] = $this->recursiveSearchAndRename($search, $replace, $value); - } - return $subject; + protected function _getOldBatchName() { + return 'LEKIOSK'; } - } \ No newline at end of file diff --git a/library/Class/Migration/DigitalResource/Musicme.php b/library/Class/Migration/DigitalResource/Musicme.php new file mode 100644 index 0000000000000000000000000000000000000000..c682eebc73c221e981ff2e26618527e2caa218b2 --- /dev/null +++ b/library/Class/Migration/DigitalResource/Musicme.php @@ -0,0 +1,50 @@ +<?php +/** + * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Class_Migration_DigitalResource_Musicme extends Class_Migration_DigitalResource_Abstract { + + + protected function _getOldRightToken() { + return 7; + } + + + protected function _getAdminVarMapping() { + return ['MUSICME_URL' => 'Musicme_URL', + 'MUSICME_BIB_ID' => 'Musicme_BIB_ID']; + } + + + protected function _getConfig() { + return Musicme_Config::getInstance(); + } + + + protected function _getOldMenuName() { + return 'MUSICME'; + } + + + protected function _getOldBatchName() { + return 'MUSICME'; + } +} \ No newline at end of file diff --git a/library/Class/MusicMeLink.php b/library/Class/MusicMeLink.php deleted file mode 100644 index a24c51d27333131fc5646674d7a788548100ca23..0000000000000000000000000000000000000000 --- a/library/Class/MusicMeLink.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php -/** - * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved. - * - * BOKEH is free software; you can redistribute it and/or modify - * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by - * the Free Software Foundation. - * - * There are special exceptions to the terms and conditions of the AGPL as it - * is applied to this software (see README file). - * - * BOKEH is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE - * along with BOKEH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -class Class_MusicMeLink { - use Trait_TimeSource; - - const CVS_SOURCEXPIRATIONTIME = 30; - - protected $_user; - - public static function forUser($user) { - return new self($user); - } - - - public function __construct($user) { - $this->_user = $user; - } - - - public static function staticLink() { - return BASE_URL.'/modules/musicme'; - } - - - public function baseUrl() { - $url = Class_AdminVar::get('MUSICME_URL'); - return $url; - } - - - public function url() { - $bib_id = Class_AdminVar::get('MUSICME_BIB_ID'); - $iduser = strtolower($this->_user->getLogin()); - $formatted_date=date('YmdHi',$this->getCurrentTime()); - $params = ['iduser' => $iduser, - 'ticket' => (new Class_CasTicket())->getTicketForUser($this->_user), - 'MediaLibraryID' => $bib_id - ]; - $params['service'] = $this->baseUrl().'?'.http_build_query(array_filter($params)); - return $this->baseUrl().'?'.http_build_query(array_filter($params)); - } -} \ No newline at end of file diff --git a/library/Class/Systeme/ModulesMenu.php b/library/Class/Systeme/ModulesMenu.php index 7e35071bf35509845967ffa1c7d609773f339291..b529f71905adc8912fa2e115e2fbd470a05da030 100644 --- a/library/Class/Systeme/ModulesMenu.php +++ b/library/Class/Systeme/ModulesMenu.php @@ -119,7 +119,6 @@ class Class_Systeme_ModulesMenu extends Class_Systeme_ModulesAbstract { "NUMILOG" => new Class_Systeme_ModulesMenu_Numilog(), "ARTEVOD" => new Class_Systeme_ModulesMenu_ArteVOD(), "ORTHODIDACTE" => new Class_Systeme_ModulesMenu_Orthodidacte(), - "MUSICME" => new Class_Systeme_ModulesMenu_MusicMe(), "MYCOW" => new Class_Systeme_ModulesMenu_MyCow(), "PLANETNEMO" => new Class_Systeme_ModulesMenu_PlanetNemo(), "KIDLILANGUES" => new Class_Systeme_ModulesMenu_Kidilangues(), diff --git a/library/Class/Systeme/ModulesMenu/MusicMe.php b/library/Class/Systeme/ModulesMenu/MusicMe.php deleted file mode 100644 index 46d8df9159e93d0f047126d74b2d7b4fd6dd95ce..0000000000000000000000000000000000000000 --- a/library/Class/Systeme/ModulesMenu/MusicMe.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -/** - * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved. - * - * BOKEH is free software; you can redistribute it and/or modify - * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by - * the Free Software Foundation. - * - * There are special exceptions to the terms and conditions of the AGPL as it - * is applied to this software (see README file). - * - * BOKEH is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE - * along with BOKEH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -class Class_Systeme_ModulesMenu_MusicMe extends Class_Systeme_ModulesMenu_SSOAbstract { - - protected - $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES, - $_type_module = 'MusicMe', - $_url = ['controller' => 'modules', - 'action' => 'musicme']; - - - public function __construct() { - parent::__construct(); - $this->_libelle = $this->_('Lien vers MusicMe'); - } - - - public function urlForUser($user) { - if (!$user->hasRightAccesMusicMe()) - return ''; - - $musicme_link=Class_MusicMeLink::forUser($user); - $url=$musicme_link->url(); - if (!strlen($url)>0) - $this->setMessage($musicme_link->getMessage()); - - return $url; - } - - - public function isVisibleForProfil($profil) { - return Class_AdminVar::isMusicMeEnabled(); - } -} \ No newline at end of file diff --git a/library/Class/UserGroup.php b/library/Class/UserGroup.php index a365adb0858822c312197883ae995da70468d66d..68f95e9daf63f9967ed166ff963caf77c69e2672 100644 --- a/library/Class/UserGroup.php +++ b/library/Class/UserGroup.php @@ -136,7 +136,6 @@ class Class_UserGroup extends Storm_Model_Abstract { const RIGHT_ACCES_CVS = 4; const RIGHT_ACCES_VODECLIC = 5; const RIGHT_ACCES_TOUTAPPRENDRE = 6; - const RIGHT_ACCES_MUSICME = 7; const RIGHT_ACCES_NUMERIQUEPREMIUM = 20; const RIGHT_ACCES_CYBERLIBRIS = 22; const RIGHT_ACCES_MYCOW = 24; @@ -183,7 +182,6 @@ class Class_UserGroup extends Storm_Model_Abstract { self::RIGHT_ACCES_VODECLIC => 'Bibliothèque numérique: accéder à Vodéclic', self::RIGHT_ACCES_TOUTAPPRENDRE => 'Bibliothèque numérique: accéder à Tout Apprendre', self::RIGHT_ACCES_NUMERIQUEPREMIUM => 'Bibliothèque numérique: accéder à Numérique Premium', - self::RIGHT_ACCES_MUSICME => 'Bibliothèque numérique: accéder à Music Me', self::RIGHT_ACCES_MYCOW => 'Bibliothèque numérique: accéder à MyCOW.EU', self::RIGHT_ACCES_PLANETNEMO => 'Bibliothèque numérique: accéder à planetnemo.fr', self::RIGHT_ACCES_KIDILANGUES => 'Bibliothèque numérique: accéder à Kidilangues', @@ -235,7 +233,6 @@ class Class_UserGroup extends Storm_Model_Abstract { 'Numilog' => [Class_UserGroup::RIGHT_ACCES_NUMILOG], 'Vodeclic' => [Class_UserGroup::RIGHT_ACCES_VODECLIC], 'ToutApprendre' => [Class_UserGroup::RIGHT_ACCES_TOUTAPPRENDRE], - 'MusicMe' => [Class_UserGroup::RIGHT_ACCES_MUSICME], 'NumeriquePremium' => [Class_UserGroup::RIGHT_ACCES_NUMERIQUEPREMIUM], 'MyCow' => [Class_UserGroup::RIGHT_ACCES_MYCOW], 'Kidilangues' => [Class_UserGroup::RIGHT_ACCES_KIDILANGUES], diff --git a/library/Class/Users.php b/library/Class/Users.php index 70e0e32881c4b74d63031722387c83317e7d86c4..584228fbc516e7c4a070af823d588484fc211717 100644 --- a/library/Class/Users.php +++ b/library/Class/Users.php @@ -925,11 +925,6 @@ class Class_Users extends Storm_Model_Abstract { } - public function hasRightAccesMusicMe() { - return $this->isAbonneAndHasRightToAccess(Class_UserGroup::RIGHT_ACCES_MUSICME); - } - - public function hasRightAccessCyberlibris() { return $this->isAbonneAndHasRightToAccess(Class_UserGroup::RIGHT_ACCES_CYBERLIBRIS); } diff --git a/library/digital_resources/LaSourisQuiRaconte/Service/Story.php b/library/digital_resources/LaSourisQuiRaconte/Service/Story.php index 0b9c0ff1c04f9e948081a43148e693433cfbb540..0138148f6e9bc98b096217cc29157f1111e41836 100644 --- a/library/digital_resources/LaSourisQuiRaconte/Service/Story.php +++ b/library/digital_resources/LaSourisQuiRaconte/Service/Story.php @@ -45,6 +45,11 @@ class LaSourisQuiRaconte_Service_Story extends Class_WebService_BibNumerique_Res } + public function getBaseUrl() { + return LaSourisQuiRaconte_Config::LSQR_URL; + } + + protected function getTypeDoc() { return LaSourisQuiRaconte_Config::getInstance()->getDocType(); } diff --git a/library/digital_resources/LaSourisQuiRaconte/tests/LaSourisQuiRaconteTest.php b/library/digital_resources/LaSourisQuiRaconte/tests/LaSourisQuiRaconteTest.php index b3b0eae6ee5c4f5d9c90851c5b0193513af3b59c..2aa00636121d8a9692fb84101d6e400476c3771d 100644 --- a/library/digital_resources/LaSourisQuiRaconte/tests/LaSourisQuiRaconteTest.php +++ b/library/digital_resources/LaSourisQuiRaconte/tests/LaSourisQuiRaconteTest.php @@ -271,6 +271,13 @@ class LaSourisQuiRaconteHarvestTest extends ModelTestCase { $this->_leon_geant->getExternalUri()); } + /** @test */ + public function originUrlShouldbeLaSourisQuiRaconte() { + $this->assertEquals('http://www.lasourisquiraconte.com', + $this->_leon_geant->getUrlOrigine()); + + } + /** @test */ public function droleDeChatSubjectsShouldBeAmourEnfantsDeuil() { @@ -325,11 +332,13 @@ class LaSourisQuiRaconteHarvestTest extends ModelTestCase { class LaSourisQuiRaconteViewRecordTest extends AbstractControllerTestCase { - protected $_storm_default_to_volatile = true; + protected $_storm_default_to_volatile = true, + $service; public function setUp() { parent::setUp(); - (new LaSourisQuiRaconteFixtures())->prepare()->harvest(); + $this->service = (new LaSourisQuiRaconteFixtures())->prepare(); + $this->service->harvest(); Class_Album::find(1)->index(); } @@ -340,6 +349,25 @@ class LaSourisQuiRaconteViewRecordTest extends AbstractControllerTestCase { } + /** @test */ + public function newHarvestShouldKeepNewTitle() { + Class_Album::find(1)->setTitre('My title modification')->save(); + $this->service->harvest(); + Class_Album::find(1)->index(); + $this->assertEquals('My title modification', Class_Notice::find(1)->getTitrePrincipal()); + $this->assertCount(1,Class_Album::findAllBy(['id_origine' => Class_Album::find(1)->getIdOrigine()])); + } + + /** @test */ + public function newHarvestWithDifferentOriginUrlShouldCreateNewAlbum() { + Class_Album::find(1)->setTitre('My title modification')->save(); + Class_Album::find(1)->setUrlOrigine('Other url')->save(); + $this->service->harvest(); + Class_Album::find(1)->index(); + $this->assertCount(2,Class_Album::findAllBy(['id_origine' => Class_Album::find(1)->getIdOrigine()])); + } + + /** @test */ public function recordIsbnShouldBe978_2_36302_128_1() { $this->assertEquals('978-2-36302-128-1', Class_Notice::find(1)->getIsbn()); diff --git a/library/digital_resources/Lekiosk/Service/Album.php b/library/digital_resources/Lekiosk/Service/Album.php index 4443a24a33c4f73f0b26e68a32ff294fe6e0af8c..77cc7d8fa63fb2391677be6307265b1f64406144 100644 --- a/library/digital_resources/Lekiosk/Service/Album.php +++ b/library/digital_resources/Lekiosk/Service/Album.php @@ -27,6 +27,10 @@ class Lekiosk_Service_Album extends Class_WebService_BibNumerique_RessourceNumer ->addEditor($this->getEditeur()); } + public function getBaseUrl() { + return Lekiosk_Config::getInstance()->getUrl(); + } + public function getRessourceCategorieLibelle() { return Lekiosk_Config::getInstance()->getName(); diff --git a/library/digital_resources/Lekiosk/tests/LeKioskTest.php b/library/digital_resources/Lekiosk/tests/LeKioskTest.php index 989189ca42c981be5f9f4c1a22fc3869d7e7b41c..34d1ac96d3f184fe5fc3c7d3f9cb4e6f5f169ac6 100644 --- a/library/digital_resources/Lekiosk/tests/LeKioskTest.php +++ b/library/digital_resources/Lekiosk/tests/LeKioskTest.php @@ -324,6 +324,11 @@ class LeKioskServiceHarvestTest extends LekioskServiceTestCase { $this->assertEquals(851749, $this->_10_national_sport->getIdOrigine()); } + /** @test */ + public function nationalSportIdShouldHaveUrlOrigine() { + $this->assertEquals('http://www.lekiosk.com/', $this->_10_national_sport->getUrlOrigine()); + } + /** @test */ public function nationalSportTitleShouldBe10NationalSport() { diff --git a/library/digital_resources/Musicme/Album.php b/library/digital_resources/Musicme/Album.php new file mode 100644 index 0000000000000000000000000000000000000000..2a5bafb5daff5a75fd899c8b17960cd92feacf31 --- /dev/null +++ b/library/digital_resources/Musicme/Album.php @@ -0,0 +1,56 @@ +<?php +/** + * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Musicme_Service_Album extends Class_WebService_BibNumerique_RessourceNumerique { + protected + $_isbn, + $_genres = []; + + + public function addGenre($label) { + $this->_genres []= Class_CodifGenre::findOrCreateFromLabel($label)->getId(); + } + + public function setIsbn($isbn) { + $this->_isbn = $isbn; + return $this; + } + + + public function fillAlbum($album) { + $album->setIsbn($this->_isbn) + ->setTypeDocId($this->getTypeDoc()) + ->addEditor($this->getEditeur()) + ->setGenre(implode(';', $this->_genres)); + return $this; + } + + + protected function getTypeDoc() { + return LaSourisQuiRaconte_Config::getInstance()->getDocType(); + } + + + public function getRessourceCategorieLibelle() { + return LaSourisQuiRaconte_Config::getInstance()->getDocTypeLabel(); + } +} \ No newline at end of file diff --git a/library/digital_resources/Musicme/Batch.php b/library/digital_resources/Musicme/Batch.php new file mode 100644 index 0000000000000000000000000000000000000000..f5725fb5096d2c627543c04578a0af8cdb53ebfb --- /dev/null +++ b/library/digital_resources/Musicme/Batch.php @@ -0,0 +1,23 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Musicme_Batch extends Class_DigitalResource_Batch {} \ No newline at end of file diff --git a/library/digital_resources/Musicme/Config.php b/library/digital_resources/Musicme/Config.php new file mode 100644 index 0000000000000000000000000000000000000000..5c4ca076c5b7fe04606afcf99870bb56d72d1bc7 --- /dev/null +++ b/library/digital_resources/Musicme/Config.php @@ -0,0 +1,70 @@ +<?php +/** + * Copyright (c) 2012-2016, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +class Musicme_Config extends Class_DigitalResource_Config { + + public function getConfig() { + return [ + 'DocTypeLabel' => $this->_('musicMe'), + 'PermissionLabel' => $this->_('Bibliothèque numérique: accéder à musicMe'), + 'MenuLabel' => $this->_('Lien vers musicMe'), + 'Introduction' => $this->_('Plateforme d\'écoute et de téléchargement de musique.'), + 'NotAllowedMessage' => $this->_('Votre abonnement ne permet pas l\'accès à cette ressource.'), + + 'HelpLink' => 'http://wiki.bokeh-library-portal.org/index.php/MusicMe', + 'Url' => 'http://www.musicme.com/', + 'Icon' => 'https://static.wixstatic.com/media/679c8e_71d2ebe18f5141769ccb3d7cb6d66cf0.png', + 'Mail' => 'support@musicme.com', + 'MailUrl' => 'https://www.musicme.com/#/support.php?cat=2', + + 'AdminVars' => [ + 'BIB_ID' => Class_AdminVar_Meta::newDefault($this->_('Identifiant fournit par musicMe'))->bePrivate(), + 'URL' => Class_AdminVar_Meta::newDefault($this->_('Url fournit par musicMe'))->bePrivate(), + 'EXPORT_URL' => Class_AdminVar_Meta::newDefault($this->_('Url du dépot de ressources founit par musicMe'))->bePrivate(), + 'COVER_IMG_URL' => Class_AdminVar_Meta::newDefault($this->_('Url du dépot des images de musicMe'), ['value' => 'https://covers.hosting-media.net/jpgr575'] )->bePrivate(), + ], + + 'SsoAction' => true, + 'Batch' => 'Musicme_Batch', + 'Service' => 'Musicme_Service', + 'ModuleMenu' => 'Musicme_ModuleMenu', + ]; + } + + + public function getSsoUrl($user) { + $iduser = strtolower($user->getLogin()); + + $formatted_date = date('YmdHi',$this->getCurrentTime()); + + $params = ['iduser' => $iduser, + 'ticket' => (new Class_CasTicket())->getTicketForUser($user), + 'MediaLibraryID' => $this->getAdminVar('BIB_ID')]; + + $params['service'] = $this->getAdminVar('URL') . '?' . http_build_query(array_filter($params)); + return $this->getAdminVar('URL') . '?' . http_build_query(array_filter($params)); + } + + + public function isEnabled() { + return '' != $this->getAdminVar('BIB_ID'); + } +} diff --git a/library/digital_resources/Musicme/ModuleMenu.php b/library/digital_resources/Musicme/ModuleMenu.php new file mode 100644 index 0000000000000000000000000000000000000000..0ba69433233315ef96de51b4f08bbd021f37c81b --- /dev/null +++ b/library/digital_resources/Musicme/ModuleMenu.php @@ -0,0 +1,23 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Musicme_ModuleMenu extends Class_DigitalResource_ModuleMenu {} \ No newline at end of file diff --git a/library/digital_resources/Musicme/Service.php b/library/digital_resources/Musicme/Service.php new file mode 100644 index 0000000000000000000000000000000000000000..029b6c48970fd817852fe9c0bf06a21b91af602d --- /dev/null +++ b/library/digital_resources/Musicme/Service.php @@ -0,0 +1,59 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Musicme_Service extends Class_DigitalResource_Service { + protected $_parser, + $_albums = []; + + + /* Fonction appelée à la fin du moissonnage pour supprimer les albums obsolètes. + La méthode $this->_getHarvestedIds(); vous permet de récupérer les identifiants des albums moissonnés. */ + protected function _deleteNonHarvested() { + return $this; + } + + + + /* Fonction appelée par la mécanique de moissonnage. + C'est ici que le parser doit créer les albums */ + protected function loadPage($page_number = 1) { + $client = $this->getHttpClient(); + + $xml = gzdecode($client->open_url($this->_config->getAdminVar('EXPORT_URL'))); + + $this->_parser = new Musicme_Service_XMLParser(); + $this->_parser->parseXML($xml); + + $this->_albums = $this->_parser->getAlbums(); + + return $this; + } + + public function getPageCount() { + return 1; + } + + public function getRessourcesNumeriques() { + return $this->_albums; + } +} +?> \ No newline at end of file diff --git a/library/digital_resources/Musicme/Service/Album.php b/library/digital_resources/Musicme/Service/Album.php new file mode 100644 index 0000000000000000000000000000000000000000..a4ba314d42bdb1549f768f0f3fafdce826cfc1eb --- /dev/null +++ b/library/digital_resources/Musicme/Service/Album.php @@ -0,0 +1,55 @@ +<?php +/** + * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Musicme_Service_Album extends Class_WebService_BibNumerique_RessourceNumerique { + protected $_editors = []; + + + public function getBaseUrl() { + return Musicme_Config::getInstance()->getAdminVar('URL'); + } + + + protected function getTypeDoc() { + return Musicme_Config::getInstance()->getDocType(); + } + + public function fillAlbum($album) { + $this->addPoster(Musicme_Config::getInstance()->getAdminVar('COVER_IMG_URL').'/'.$this->getId().'.jpg'); + $album + ->setTypeDocId($this->getTypeDoc()); + + foreach ($this->_editors as $editor) + $album->addEditor(trim($editor)); + return $this; + } + + + public function setEditors($editors) { + $this->_editors = explode('/',$editors); + } + + + public function getRessourceCategorieLibelle() { + return Musicme_Config::getInstance()->getDocTypeLabel(); + } +} \ No newline at end of file diff --git a/library/digital_resources/Musicme/Service/XMLParser.php b/library/digital_resources/Musicme/Service/XMLParser.php new file mode 100644 index 0000000000000000000000000000000000000000..ee058f67da8357c4219358974f71352249f1119d --- /dev/null +++ b/library/digital_resources/Musicme/Service/XMLParser.php @@ -0,0 +1,85 @@ +<?php +/** + * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +class Musicme_Service_XMLParser { + protected + $_albums = [], + $_artists = [], + $_current_album; + + public function parseXML($xml) { + $this->_parser = new Class_WebService_FasterXMLParser(); + $this->_parser->setElementHandler($this); + $this->_parser->parse($xml); + return $this; + } + + + public function startAlbum($attributes) { + $this->_current_album = new Musicme_Service_Album(); + $this->_current_album->setId($attributes['BARCODE']); + } + + + public function endTitle($data) { + $this->_current_album->setTitle($data); + } + + + public function endArtist($data) { + $this->_current_album->addAuthor(new Class_Notice_Author($data)); + } + + + public function endAlbum() { + $this->_albums[] = $this->_current_album; + } + + + public function endDateRelease($data) { + $this->_current_album->setYear($data); + } + + + public function endLabel($data){ + $this->_current_album->setEditors($data); + } + + + public function endPrimaryDocUrl($data) { + $this->_current_album->setExternalUri($data); + } + + + public function endStyle($data) { + foreach (explode(',',$data) as $style) + $this->_current_album->addMatiere(trim($style)); + } + + + public function endUrl($data) { + $this->_current_album->setExternalUri($data); + } + + + public function getAlbums() { + return $this->_albums; + } +} \ No newline at end of file diff --git a/library/digital_resources/Musicme/View/Helper/Album.php b/library/digital_resources/Musicme/View/Helper/Album.php new file mode 100644 index 0000000000000000000000000000000000000000..fbe6ccbdb94960bb25cbba56209e3a1705ffbf0e --- /dev/null +++ b/library/digital_resources/Musicme/View/Helper/Album.php @@ -0,0 +1,53 @@ +<?php +/** + * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +class Musicme_View_Helper_Album extends ZendAfi_View_Helper_TagRessourceNumerique { + + protected $_album; + + public function album($album) { + $this->_album = $album; + + $url = $this->view->url(['module' => 'opac', + 'controller' => 'modules', + 'action' => 'musicme', + 'album_id' => $album->getId()], null, true); + + if (!Class_Users::getIdentity()) + return $this->_tag('p', + $this->view->tagAnchor($url, + $this->_('Vous devez être connecté sous un compte avec abonnement valide pour pouvoir accéder à l\'album'))); + + if (!$this->canAccessRessourceNumerique()) + return $this->_tag('p', + $this->_('Votre abonnement ne permet pas d\'accéder à la ressource. Merci de contacter la médiathèque.')); + + + return $this->view->tagAnchor($url, + $this->_('Accéder à "%s" dans un nouvel onglet', $album->getTitre()), + ['target' => '_blank']); + } + + + protected function hasRightAccesRessourcesNumeriques($user) { + return Musicme_Config::getInstance()->hasRightAccess($user); + } +} \ No newline at end of file diff --git a/library/digital_resources/Musicme/controllers/IndexController.php b/library/digital_resources/Musicme/controllers/IndexController.php new file mode 100644 index 0000000000000000000000000000000000000000..d97e079214695af9d7fe8091082a9a95246832ca --- /dev/null +++ b/library/digital_resources/Musicme/controllers/IndexController.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Musicme_Plugin_IndexController extends Class_DigitalResource_Controller { + public function getExternalUri($album, $module_menu) { + $sso_url = explode('?', $module_menu->getDynamiqueUrl()); + + return str_replace('http://www.musicme.com', + $sso_url[0], + str_replace('"','%22',$album->getExternalUri())) + . '?' . (isset($sso_url[1]) ? $sso_url[1] : ''); + } +} \ No newline at end of file diff --git a/library/digital_resources/Musicme/images/icon.png b/library/digital_resources/Musicme/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..efa5478e33d3da99058b701c449c3c4e9443abf3 Binary files /dev/null and b/library/digital_resources/Musicme/images/icon.png differ diff --git a/library/digital_resources/Musicme/tests/MusicmeTest.php b/library/digital_resources/Musicme/tests/MusicmeTest.php new file mode 100644 index 0000000000000000000000000000000000000000..4d08407bf837973d9cd3ddd0ca8c7014b4595275 --- /dev/null +++ b/library/digital_resources/Musicme/tests/MusicmeTest.php @@ -0,0 +1,383 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class MusicmeFixtures { + use Storm_Test_THelpers; + public function activate() { + Class_AdminVar::newInstanceWithId('Musicme_BIB_ID', ['valeur' => 'QUEST']); + Class_AdminVar::newInstanceWithId('Musicme_URL', ['valeur' => 'http://linkmusicme.com']); + Class_AdminVar::newInstanceWithId('Musicme_EXPORT_URL', ['valeur' => 'http://easyaxe.musicme.com/partnerstop.xml.gz']); + Class_AdminVar::newInstanceWithId('Musicme_COVER_IMG_URL', ['valeur' => 'http://easyaxecover.com']); + return $this; + } + + + public function deactivate() { + Class_AdminVar::newInstanceWithId('Musicme_BIB_ID', ['valeur' => '']); + Class_AdminVar::newInstanceWithId('Musicme_URL', ['valeur' => '']); + Class_AdminVar::newInstanceWithId('Musicme_EXPORT_URL', ['valeur' => '']); + Class_AdminVar::newInstanceWithId('Musicme_COVER_IMG_URL', ['valeur' => '']); + return $this; + } + + public function prepare() { + $musicme_xml = file_get_contents(__DIR__ . '/musicme.xml.gz'); + $http_client = $this->mock() + ->whenCalled('open_url') + ->with('http://easyaxe.musicme.com/partnerstop.xml.gz') + ->answers($musicme_xml) + ->whenCalled('open_url') + ->with('http://easyaxecover.com/0000000063128.jpg') + ->answers(true) + ->whenCalled('open_url') + ->with('http://easyaxecover.com/0190295740580.jpg') + ->answers(true) + ->whenCalled('open_url') + ->with('http://easyaxecover.com/0008811031725.jpg') + ->answers(true); + + + + Musicme_Service::setDefaultHttpClient($http_client); + return new Musicme_Service( + new Musicme_Config( + new Class_DigitalResource_Wrapper(Class_DigitalResource::getInstance(), + 'Musicme'))); + + } + + public function logValidUser() { + $group = $this->fixture('Class_UserGroup', ['id' => 1]); + + $user = $this->fixture('Class_Users', + ['id' => 1, + 'login' => 'Tom', + 'password' => 'pwd']); + $user + ->beAbonneSIGB() + ->setDateFin('9999-01-01') + ->setIdabon('2345') + ->setBib($this->fixture('Class_Bib', + ['id' => 2, + 'libelle' => 'Annecy'])) + ->setUserGroups([$group]) + ->save(); + ZendAfi_Auth::getInstance()->logUser($user); + + $this->fixture('Class_Permission', + ['id' => 1, + 'code' => 'Musicme']) + ->permitTo($group, new Class_Entity()); + } + +} + + +class MusicmeSSOTest extends AbstractControllerTestCase { + + protected + $_storm_default_to_volatile = true; + + public function setUp() { + parent::setUp(); + Storm_Cache::beVolatile(); + (new MusicmeFixtures())->prepare(); + $user= $this->fixture('Class_Users', + ['id' => 1, + 'login' => 'Tom', + 'password' => 'pwd']); + ZendAfi_Auth::getInstance()->logUser($user); + } + + + /** @test */ + public function userWithRoleInviteShouldNotHaveAccessToModulesLSQR() { + $this->dispatch('/opac/modules/musicme', true); + $this->assertFlashMessengerContentContains('Votre abonnement ne permet pas l\'accès à cette ressource.'); + } + + + /** @test */ + public function musicMeUrlShouldExtractUrlFromResponse() { + (new MusicmeFixtures())->logValidUser(); + $this->dispatch('/opac/modules/musicme', true); + $ticket='ST-'.md5( Zend_Session::getId() . '4'); + $this->assertFlashMessengerContentContains('Votre abonnement ne permet pas l\'accès à cette ressource.'); + } + + + +} + +class MusicmeHarvestTest extends ModelTestCase { + protected + $_storm_default_to_volatile = true, + $_destination; + + public function setUp() { + parent::setUp(); + (new MusicmeFixtures())->activate()->prepare()->harvest(); + + Class_Album::clearCache(); + $this->_destination = Class_Album::find(1); + } + + + /** @test */ + public function TitleShouldBeDestinationParadise() { + $this->assertEquals('Destination Paradise', $this->_destination->getTitre()); + } + + + /** @test */ + public function ArtistsShouldBeNilsVanZandsAndFatmanScoop() { + $this->assertEquals('Nils Van Zandt', $this->_destination->getAuthors()[0]->getName()); + $this->assertEquals('Fatman Scoop', $this->_destination->getAuthors()[1]->getName()); + } + + + /** @test */ + public function publishersShouldIdolAndHappyMusic() { + $this->assertEquals('idol', $this->_destination->getEditors()[0]); + $this->assertEquals('happy music', $this->_destination->getEditors()[1]); + + } + + + /** @test */ + public function yearShouldBe1991ForSecondAlbum() { + $this->assertEquals('1991', Class_Album::find(2)->getAnnee()); + } + + + /** @test */ + public function styleShouldBeRap() { + $ids = explode(';', $this->_destination->getMatiere()); + $this->assertEquals('Rap', Class_CodifMatiere::find($ids[0])->getLibelle()); + $this->assertEquals('R&B', Class_CodifMatiere::find($ids[1])->getLibelle()); + $this->assertEquals('Soul', Class_CodifMatiere::find($ids[2])->getLibelle()); + } + + + /** @test */ + public function urlShouldBeSet() { + $this->assertEquals('http://www.musicme.com/Nils-Van-Zandt/albums/Destination-Paradise-0000000063128.html', $this->_destination->getExternalUri()); + } + + + /** @test */ + public function imageShouldBeSet() { + $this->assertEquals('http://easyaxecover.com/0000000063128.jpg', $this->_destination->getPoster()); + } +} + + + + +class ModulesControllerMusicmeTest extends AbstractControllerTestCase { + protected $_storm_default_to_volatile = true, + $fixtures ; + + public function setUp() { + parent::setUp(); + $this->fixtures = new MusicmeFixtures(); + $this->fixtures->prepare(); + } + + + /** @test */ + public function responseShouldContainsRedirectToLogin() { + $this->fixtures->deactivate(); + ZendAfi_Auth::getInstance()->clearIdentity(); + $this->dispatch('/opac/modules/musicme', true); + $this->assertXpath('//script[contains(text(), "location.href=")][contains(text(), "auth/login?redirect=http")]'); + } + + + /** @test */ + public function shouldRedirectToMusicme() { + $this->fixtures->activate(); + $this->fixtures->logValidUser(); + $this->dispatch('/opac/modules/musicme', true); + $this->assertXpathContentContains('//script', 'document.location.href="http://linkmusicme.com?', $this->_response->getBody()); + } + +} + + + + + +class CasServerControllerMusicmeValidateActionTest extends AbstractControllerTestCase { + protected $session_file_contents_logged; + protected $session_file_contents_nologin; + + public function setUp() { + parent::setUp(); + Storm_Cache::beVolatile(); + $fixtures = new MusicmeFixtures(); + $fixtures->prepare(); + $fixtures->activate(); + $fixtures->logValidUser(); + + } + + + /** @test */ + public function requestMusicmeWithNoTicketShouldRespondAccountDisabledXML() { + $this->dispatch('/opac/cas-server/validate-musicme?MediaLibraryID=150&ticket=ST-0a1b2c3d'); + $this->assertContains('<User />',$this->_response->getBody()); + } + + + /** @test */ + public function requestMusicmeWithValidTicketShouldRespondValidXML() { + $this->dispatch('/opac/cas-server/validate-musicme?ticket=ST-'.md5(Zend_Session::getId().'1').'&MediaLibraryID=http://test.com'); + $this->assertContains('<ID>1</ID>',$this->_response->getBody()); + } + + + /** @test */ + public function musicmeUrlShouldContainsTicket0a1b2c3d() { + $expected_ticket = 'ST-'.md5(Zend_Session::getId().'1'); + $musicme = Class_DigitalResource::getInstance()->getModuleMenuFor('Musicme'); + $this->assertEquals('http://linkmusicme.com?iduser=tom&ticket='.$expected_ticket.'&MediaLibraryID=QUEST&service=http%3A%2F%2Flinkmusicme.com%3Fiduser%3Dtom%26ticket%3D'.$expected_ticket.'%26MediaLibraryID%3DQUEST', Class_DigitalResource::getInstance()->getModuleMenuFor('Musicme')->getDynamiqueUrl()); + } + + + /** @test */ + public function casLoginActioShouldRedirectToServiceWithTicket() { + $this->dispatch('/opac/cas-server/login?service=http://test.com', true); + $this->assertRedirectTo( + 'http://test.com?ticket='.(new Class_CasTicket())->getTicketForCurrentUser(), + $this->getResponseLocation()); + } + + + /** @test */ + public function casIndexActionShouldForwardToLoginAction() { + $this->dispatch('/opac/cas-server/?service=http://test.com', true); + $this->assertRedirectTo( + 'http://test.com?ticket='.(new Class_CasTicket())->getTicketForCurrentUser(), + $this->getResponseLocation()); + } + +} + + + + + +class MusicmeViewRecordTest extends AbstractControllerTestCase { + protected $_storm_default_to_volatile = true, + $fixtures; + + public function setUp() { + parent::setUp(); + $this->service = (new MusicmeFixtures())->activate()->prepare(); + $this->service->harvest(); + Class_Album::find(1)->index(); + } + + + /** @test */ + public function recordTitleShouldBeDestinationParadise() { + $this->assertEquals('Destination Paradise', Class_Notice::find(1)->getTitrePrincipal()); + } + + /** @test */ + public function urlOrigineShouldBeSetToUrl() { + $this->assertEquals('http://linkmusicme.com',Class_Album::find(1)->getUrlOrigine()); + } + + /** @test */ + public function newHavestShouldKeepNewTitle() { + Class_Album::find(1)->setTitre('My title modification')->save(); + $this->service->harvest(); + Class_Album::find(1)->index(); + $this->assertEquals('My title modification', Class_Notice::find(1)->getTitrePrincipal()); + } + + + /** @test */ + public function withoutUserConnectionLinkToModuleLSQRShouldIndicateToConnect() { + ZendAfi_Auth::getInstance()->clearIdentity(); + $this->dispatch('/noticeajax/resnumeriques/id/1', true); + $this->assertXPathContentContains('//a[contains(@href, "modules/musicme")]', 'Vous devez '); + } + + + /** @test */ + public function withUserConnectedLinkToModuleShouldIndicateAccessDigitalResource() { + (new MusicmeFixtures())->logValidUser(); + $this->dispatch('/noticeajax/resnumeriques/id/1', true); + $this->assertXPathContentContains('//a[@href= "/modules/musicme/album_id/1"]', ' "Destination Paradise" dans un nouvel onglet'); + } + + + /** @test */ + public function modulesMusicMeWithAlbumidShouldRedirectToMusicMe() { + (new MusicmeFixtures())->logValidUser(); + $this->dispatch('/modules/musicme/album_id/1', true); + $this->assertXPathContentContains('//script', 'http://linkmusicme.com/Nils-Van-Zandt/albums/Destination-Paradise-0000000063128.html?iduser=tom&ticket=ST-' . md5(Zend_Session::getId() . '1') . '&MediaLibraryID=QUEST&service='); + + } + + + + public function logValidUserNotAllowed() { + $user = $this->fixture('Class_Users', + ['id' => 10, + 'login' => 'NotAllowed', + 'password' => 'pwd']); + $user + ->beAbonneSIGB() + ->setDateFin('9999-01-01') + ->setIdabon('2345') + ->setBib($this->fixture('Class_Bib', + ['id' => 2, + 'libelle' => 'Annecy'])) + ->setUserGroups([]) + ->save(); + ZendAfi_Auth::getInstance()->logUser($user); + + } + + /** @test */ + public function viewNoticeMusicMeWithNotValidUserShouldDisplayCantAccess() { + $this->logValidUserNotAllowed(); + + $this->dispatch('/noticeajax/resnumeriques?id_notice=1', true); + $this->assertXPathContentContains('//p', utf8_encode('Votre abonnement ne permet pas d\'accéder à la ressource. Merci de contacter la médiathèque.')); + + + } + + + /** @test */ + public function albumWithDoubleQuotesShouldReturnUrlWithoutDoubleQuotes() { + (new MusicmeFixtures())->logValidUser(); + $this->dispatch('/modules/musicme/album_id/3', true); + $this->assertXPathContentContains('//script', 'http://linkmusicme.com/David-Bowie/albums/%22Heroes%22-0190295740580.html?iduser=tom&ticket=ST-' . md5(Zend_Session::getId() . '1') . '&MediaLibraryID=QUEST&service=', $this->_response->getBody()); + } + +} \ No newline at end of file diff --git a/library/digital_resources/Musicme/tests/musicme.xml.gz b/library/digital_resources/Musicme/tests/musicme.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..c513829de5eb4a61fc0d6788d69494e0c938b15a Binary files /dev/null and b/library/digital_resources/Musicme/tests/musicme.xml.gz differ diff --git a/library/digital_resources/Skilleos/Service/Parser.php b/library/digital_resources/Skilleos/Service/Parser.php index 0a20bd917626c08aca71ec644f496509a299a533..d787b58dd13e557817b7491ebe2bc53c14caf970 100644 --- a/library/digital_resources/Skilleos/Service/Parser.php +++ b/library/digital_resources/Skilleos/Service/Parser.php @@ -50,5 +50,11 @@ class Skilleos_Service_Parser extends Class_WebService_BibNumerique_RessourceNum return Skilleos_Config::getInstance()->getDocTypeLabel(); } + + public function getBaseUrl() { + return Skilleos_Config::SKILLEOS_URL; + } + + } ?> \ No newline at end of file diff --git a/library/digital_resources/Skilleos/tests/SkilleosTest.php b/library/digital_resources/Skilleos/tests/SkilleosTest.php index 544ddfea930066edbc7b8d5f39c4582f0aaf2b60..03f9e93ae65ff510521d5e214b3d4aa1c6c64f30 100644 --- a/library/digital_resources/Skilleos/tests/SkilleosTest.php +++ b/library/digital_resources/Skilleos/tests/SkilleosTest.php @@ -264,6 +264,12 @@ class SkilleosServiceHarvestTest extends SkilleosServiceTestCase { } + /** @test */ + public function urlOriginShouldBeSet() { + $this->assertEquals('http://skilleos.com/sigb/sso/',Class_Album::find(1)->getUrlOrigine()); + } + + /** @test */ public function categoryShouldBeSkilleos() { $this->assertEquals('Cours en ligne Skilleos',Class_Album::find(1)->getCategoryLabel()); diff --git a/public/opac/js/digital_connectors.js b/public/opac/js/digital_connectors.js index f9f924330f6e67a29266047614030fb5dff9f879..1082e08ffce508dbbc54a4e07f114fb590e47ec8 100644 --- a/public/opac/js/digital_connectors.js +++ b/public/opac/js/digital_connectors.js @@ -41,17 +41,6 @@ "name" : "", "url" : "http://wiki.bokeh-library-portal.org/index.php/SoundCloud"} }, - "MUSICME": { - "label" : "MusicMe", - "enabled": "isMusicMeEnabled", - "url" : "http://www.musicme.com/", - "image_url" : "http://bokeh-library-portal.org/userfiles/media/ressources_numeriques/musicMe.jpg", - "desc": "musicMe est un site d'écoute et de téléchargement de musique.", - "features": ["SSO"], - "sales_contact": {"mail" : "", - "name" : "", - "url" : ""} - }, "ARTEVOD": { "label" : "ArteVOD", "enabled": "isArteVODEnabled", diff --git a/tests/application/modules/admin/controllers/UserGroupControllerTest.php b/tests/application/modules/admin/controllers/UserGroupControllerTest.php index f58a398f5923cb6b6ff4f51f97677c8c572d2b87..4a79bed20cc44964ac72e0f9f414a1cacf8ece73 100644 --- a/tests/application/modules/admin/controllers/UserGroupControllerTest.php +++ b/tests/application/modules/admin/controllers/UserGroupControllerTest.php @@ -1065,7 +1065,7 @@ class Admin_UserGroupControllerRessourcesNumeriquesTest extends Admin_UserGroupC ['Numilog', 'Numilog'], ['CVS', 'CVS'], ['ToutApprendre', 'Tout Apprendre'], - ['MusicMe', 'Music Me'], + ['Musicme', 'musicMe'], ['NumeriquePremium', 'Numérique Premium']]; } diff --git a/tests/application/modules/opac/controllers/AuthControllerTest.php b/tests/application/modules/opac/controllers/AuthControllerTest.php index 76ed125f5e5a508bbb1e09eff05348e922076f0e..95234f89f68d935a144a63f1c553abc456265dfa 100644 --- a/tests/application/modules/opac/controllers/AuthControllerTest.php +++ b/tests/application/modules/opac/controllers/AuthControllerTest.php @@ -941,15 +941,26 @@ abstract class AuthControllerPostSimpleSuccessfulTestCase extends AuthController public function setUp() { parent::setUp(); - $this->group_musicme = $this->fixture('Class_UserGroup', - ['id' => 20, - 'libelle' => 'Multimedia']) - ->addRight(Class_UserGroup::RIGHT_ACCES_MUSICME); + $group = $this->fixture('Class_UserGroup', + ['id' => 20, + 'libelle' => 'Multimedia']); + + Musicme_Config::getInstance()->getPermissions(); + $permission_id = Class_Permission::findFirstBy(['code' => 'Musicme'])->getId(); + + $this->fixture('Class_UserGroup_Permission', + ['id' => 1, + 'id_group' => 20, + 'id_permission' => $permission_id, + 'id_model' => null, + 'model_class' => null + ]); + $this->_marcel = Storm_Test_ObjectWrapper::on( Class_Users::newInstanceWithId(2, ['nom' => 'Marcel','login' =>'foo']) ->beAbonneSIGB() - ->setUserGroups([$this->group_musicme])); + ->setUserGroups([$group])); Class_Users::cacheInstance($this->_marcel); @@ -1191,10 +1202,10 @@ class AuthControllerPostSuccessfulFromLecturaClientTest extends AuthControllerLe -class AuthControllerPostSuccessfulFromMusicMeCASClientTest extends AuthControllerPostSimpleSuccessfulTestCase { +class AuthControllerPostSuccessfulFromMusicmeCASClientTest extends AuthControllerPostSimpleSuccessfulTestCase { public function setUp() { parent::setUp(); - RessourcesNumeriquesFixtures::activateMusicMe(); + RessourcesNumeriquesFixtures::activateMusicme(); $this->postDispatch('/opac/auth/login', ['username' => 'foo', 'password' => 'bar', @@ -1203,18 +1214,22 @@ class AuthControllerPostSuccessfulFromMusicMeCASClientTest extends AuthControlle /** @test */ - public function responseShouldRedirectToMusicMeCasClientWithTicketAndBibId() { + public function responseShouldRedirectToMusicmeCasClientWithTicketAndBibId() { $ticket='ST-'.md5(Zend_Session::getId(). '2'); $this->assertRedirectTo('http://musicmeurl/?iduser=foo&ticket='.$ticket.'&MediaLibraryID=888&service=http%3A%2F%2Fmusicmeurl%2F%3Fiduser%3Dfoo%26ticket%3D'.$ticket.'%26MediaLibraryID%3D888'); } + /** @test */ - public function userFooMusicMeShouldBeLogged() { + public function userFooMusicmeShouldBeLogged() { $this->assertEquals('foo', Class_Users::getIdentity()->getLogin()); } } + + + class AuthControllerFromCASClientUserConnectedTest extends AuthControllerNobodyLoggedTestCase { public function setUp() { parent::setUp(); diff --git a/tests/application/modules/opac/controllers/CasServerControllerTest.php b/tests/application/modules/opac/controllers/CasServerControllerTest.php index 135f1da0ffa4f91cf7bbec9e306e60955d9846e3..d4bbaec55b82b5b38cff48d2054a7c830214a0dd 100644 --- a/tests/application/modules/opac/controllers/CasServerControllerTest.php +++ b/tests/application/modules/opac/controllers/CasServerControllerTest.php @@ -148,59 +148,3 @@ class CasServerControllerValidateActionTest extends AbstractControllerTestCase { $this->assertRedirectTo('http://go-out.com'); } } - - - - -class CasServerControllerMusicMeValidateActionTest extends AbstractControllerTestCase { - protected $session_file_contents_logged; - protected $session_file_contents_nologin; - - public function setUp() { - parent::setUp(); - Storm_Cache::beVolatile(); - $tom = Class_Users::newInstanceWithId(300, - ['nom' => 'Ate', - 'prenom' => 'Tom']); - ZendAfi_Auth::getInstance()->logUser($tom); - } - - - /** @test */ - public function requestMusicMeWithNoTicketShouldRespondAccountDisabledXML() { - $this->dispatch('/opac/cas-server/validate-musicme?MediaLibraryID=150&ticket=ST-0a1b2c3d'); - $this->assertContains('<User />',$this->_response->getBody()); - } - - - /** @test */ - public function requestMusicMeWithValidTicketShouldRespondValidXML() { - $this->dispatch('/opac/cas-server/validate-musicme?ticket=ST-'.md5(Zend_Session::getId().'300').'&MediaLibraryID=http://test.com'); - $this->assertContains('<ID>300</ID>',$this->_response->getBody()); - } - - - /** @test */ - public function musicmeUrlShouldContainsTicket0a1b2c3d() { - $expected_ticket = 'ST-'.md5(Zend_Session::getId().'300'); - $this->assertContains('ticket='.$expected_ticket.'&', Class_MusicMeLink::forUser(Class_Users::find(300))->url()); - } - - - /** @test */ - public function casLoginActioShouldRedirectToServiceWithTicket() { - $this->dispatch('/opac/cas-server/login?service=http://test.com', true); - $this->assertRedirectTo( - 'http://test.com?ticket='.(new Class_CasTicket())->getTicketForCurrentUser(), - $this->getResponseLocation()); - } - - - /** @test */ - public function casIndexActionShouldForwardToLoginAction() { - $this->dispatch('/opac/cas-server/?service=http://test.com', true); - $this->assertRedirectTo( - 'http://test.com?ticket='.(new Class_CasTicket())->getTicketForCurrentUser(), - $this->getResponseLocation()); - } -} \ No newline at end of file diff --git a/tests/application/modules/opac/controllers/ModulesControllerTest.php b/tests/application/modules/opac/controllers/ModulesControllerTest.php index 61e5b59eab7c73748bf9805585edd06b4d4ebe06..0da2a6cd870383ac16fb131cf5417981a89dd736 100644 --- a/tests/application/modules/opac/controllers/ModulesControllerTest.php +++ b/tests/application/modules/opac/controllers/ModulesControllerTest.php @@ -350,37 +350,4 @@ class ModulesControllerBibliondemandSsoTest extends AbstractControllerTestCase { $this->dispatch('/modules/sso/id/21', true); $this->assertXPathContentContains('//script', 'document.location.href="http://numerique-pasdecalais.bibliondemand.com/logon.aspx?provider=SsoCas&sso-id=cg62-saintomer&returnUrl='. urlencode('http://music.1dtouch.com/users/auth/assa?dest=albums/137962&bibid=CG62').'"', $this->_response->getBody()); } -} - - - - - -class ModulesControllerMusicMeTest extends AbstractControllerTestCase { - protected $_storm_default_to_volatile = true; - - public function setUp() { - parent::setUp(); - Class_AdminVar::newInstanceWithId('MUSICME_URL',['valeur' => 'http://music_me.com/ecoute']); - } - - - /** @test */ - public function responseShouldContainsRedirectToLogin() { - ZendAfi_Auth::getInstance()->clearIdentity(); - $this->dispatch('/opac/modules/musicme'); - $this->assertXpath('//script[contains(text(), "location.href=")][contains(text(), "auth/login?redirect=http")]'); - } - - - /** @test */ - public function shouldRedirectToNumilog() { - $group = $this->fixture('Class_UserGroup', ['id' => 1]) - ->addRight(Class_UserGroup::RIGHT_ACCES_MUSICME); - - Class_Users::getIdentity()->setUserGroups([$group]); - - $this->dispatch('/opac/modules/musicme'); - $this->assertXpathContentContains('//script', 'document.location.href="http://music_me.com/ecoute'); - } -} +} \ No newline at end of file diff --git a/tests/db/UpgradeDBTest.php b/tests/db/UpgradeDBTest.php index 167ae3369a8328ef4247046988928016b01558b5..e559607d3b9b6049e0c58a5e0a72e49c02f9af24 100644 --- a/tests/db/UpgradeDBTest.php +++ b/tests/db/UpgradeDBTest.php @@ -1867,6 +1867,7 @@ class UpgradeDB_337_Test extends UpgradeDBTestCase { class UpgradeDB_338_Test extends UpgradeDBTestCase { + static $skilleos; public function prepare() { try { $this->query('ALTER TABLE multimedia_device DROP column note'); @@ -1878,3 +1879,41 @@ class UpgradeDB_338_Test extends UpgradeDBTestCase { $this->assertColumn('multimedia_device', 'note'); } } + + + +class UpgradeDB_339_Test extends UpgradeDBTestCase { + static $skilleos, $lasouris, $lekiosk; + public function prepare() { + try { + $this->query('insert into album(titre, type_doc_id) values("bibifoc", "Skilleos")'); + $this->query('insert into album(titre, type_doc_id) values("bibifoc", "LaSourisQuiRaconte ")'); + $this->query('insert into album(titre, type_doc_id) values("bibifoc", "Lekiosk ")'); + + static::$skilleos = $this->query('select id from album where titre like "bibifoc" and type_doc_id = "Skilleos" limit 1')->fetch()['id']; + static::$lasouris = $this->query('select id from album where titre like "bibifoc" and type_doc_id = "LaSourisQuiRaconte" limit 1')->fetch()['id']; + static::$lekiosk = $this->query('select id from album where titre like "bibifoc" and type_doc_id = "Lekiosk" limit 1')->fetch()['id']; + + } catch(Exception $e) {} + } + + /** @test */ + public function placeholderForMusicmeMigrationPatch() {} + + /** @test */ + public function skilleosShouldHaveUrlOrine() { + $this->assertEquals('http://skilleos.com/sigb/sso/',Class_Album::find(static::$skilleos)->getUrlOrigine()); + } + + + /** @test */ + public function laSourisQuiRaconteShouldHaveUrlOrine() { + $this->assertEquals('http://www.lasourisquiraconte.com',Class_Album::find(static::$lasouris)->getUrlOrigine()); + } + + + /** @test */ + public function leKioskShouldHaveUrlOrine() { + $this->assertEquals('http://www.lekiosk.com/',Class_Album::find(static::$lekiosk)->getUrlOrigine()); + } +} diff --git a/tests/fixtures/RessourcesNumeriquesFixtures.php b/tests/fixtures/RessourcesNumeriquesFixtures.php index a7ba10e1b5497b3652dc716ceecff7f28b182b19..3f0c9482648de85112a48fdcb4e89c6074aec41c 100644 --- a/tests/fixtures/RessourcesNumeriquesFixtures.php +++ b/tests/fixtures/RessourcesNumeriquesFixtures.php @@ -29,7 +29,7 @@ class RessourcesNumeriquesFixtures { self::deactivateNumeriquePremium(); self::deactivateTypo3(); self::disableCVS(); - self::deactivateMusicMe(); + self::deactivateMusicme(); self::deactivate1Dtouch(); self::deactivateMyCow(); self::deactivatePlanetNemo(); @@ -51,7 +51,7 @@ class RessourcesNumeriquesFixtures { self::activateNumeriquePremium(); self::activateTypo3(); self::activateCVS(); - self::activateMusicMe(); + self::activateMusicme(); self::activate1Dtouch(); self::activateOrphea(); self::activateMyCow(); @@ -163,15 +163,15 @@ class RessourcesNumeriquesFixtures { } - public static function activateMusicMe() { - Class_AdminVar::newInstanceWithId('MUSICME_URL',['valeur' => 'http://musicmeurl/']); - Class_AdminVar::newInstanceWithId('MUSICME_BIB_ID',['valeur' => '888']); + public static function activateMusicme() { + Class_AdminVar::newInstanceWithId('Musicme_URL',['valeur' => 'http://musicmeurl/']); + Class_AdminVar::newInstanceWithId('Musicme_BIB_ID',['valeur' => '888']); } - public static function deactivateMusicMe() { - Class_AdminVar::newInstanceWithId('MUSICME_URL',['valeur' => '']); - Class_AdminVar::newInstanceWithId('MUSICME_BIB_ID',['valeur' => '']); + public static function deactivateMusicme() { + Class_AdminVar::newInstanceWithId('Musicme_URL',['valeur' => '']); + Class_AdminVar::newInstanceWithId('Musicme_BIB_ID',['valeur' => '']); } diff --git a/tests/library/Class/Migration/DigitalResource/AssimilTest.php b/tests/library/Class/Migration/DigitalResource/AssimilTest.php index d1d36889922cfb3d110fab578e89b8d5da838168..d09e90e87495ab7f309801e33f0b74fed23e0a0b 100644 --- a/tests/library/Class/Migration/DigitalResource/AssimilTest.php +++ b/tests/library/Class/Migration/DigitalResource/AssimilTest.php @@ -65,13 +65,14 @@ class Class_Migration_DigitialResource_AssimilTest extends ModelTestCase { $profil_adulte = $this->fixture('Class_Profil', ['id' => 22, - 'rewrite_url' => 'adulte']) + 'parent_id' => null]) ->setBrowser('opac') ->setLibelle('Profil Adulte') ->setCfgMenus($cfg_menus); $profil_without_assimil = $this->fixture('Class_Profil', ['id' => 23, + 'parent_id' => null, 'rewrite_url' => 'adulte']) ->setBrowser('opac') ->setLibelle('Profil Adulte') diff --git a/tests/library/Class/Migration/DigitalResource/MusicMeTest.php b/tests/library/Class/Migration/DigitalResource/MusicMeTest.php new file mode 100644 index 0000000000000000000000000000000000000000..143d2900055f41fd544043a870a41c1e1b3b8882 --- /dev/null +++ b/tests/library/Class/Migration/DigitalResource/MusicMeTest.php @@ -0,0 +1,142 @@ +<?php +/** + * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Class_Migration_DigitialResource_MusicmeTest extends ModelTestCase { + protected + $_storm_default_to_volatile = true, + $_migration; + + public function setUp() { + parent::setUp(); + Class_DigitalResource::resetInstance(); + + $cfg_menus = ['H' => ['libelle' => 'Menu horizontal', + 'picto' => 'vide.gif', + 'menus' => [ + ['type_menu' => 'MENU', + 'libelle' => 'Pratique', + 'picto' => 'bookmark.png', + 'preferences' => [], + 'sous_menus' => [ + ['type_menu' => 'ACCUEIL', + 'libelle' => 'Accueil', + 'picto' => 'vide.gif', + 'preferences' => [], + 'sous_menus' => ''], + + ['type_menu' => 'MUSICME', + 'libelle' => 'Lien vers Musicme', + 'preferences' => [], + 'picto' => 'vide.gif'] ]]]]]; + + $cfg_menus_without_lekiosk = ['H' => ['libelle' => 'Menu horizontal', + 'picto' => 'vide.gif', + 'menus' => [ + ['type_menu' => 'MENU', + 'libelle' => 'Pratique', + 'picto' => 'bookmark.png', + 'preferences' => [], + 'sous_menus' => [ + ['type_menu' => 'ACCUEIL', + 'libelle' => 'Accueil', + 'picto' => 'vide.gif', + 'preferences' => [], + 'sous_menus' => ''] ]]]]]; + + + $profil_adulte = $this->fixture('Class_Profil', + ['id' => 22, + 'parent_id' => null]) + ->setBrowser('opac') + ->setLibelle('Profil Adulte') + ->setCfgMenus($cfg_menus); + + $profil_without_lekiosk = $this->fixture('Class_Profil', + ['id' => 23, + 'rewrite_url' => 'adulte']) + ->setBrowser('opac') + ->setLibelle('Profil Adulte') + ->setCfgMenus($cfg_menus_without_lekiosk); + + + Class_Profil::setCurrentProfil($profil_adulte); + + $this->fixture('Class_UserGroup', + ['id' => 2, + 'libelle' => 'team ONE', + 'rights_token' => pow(2, 7)]); + + $this->fixture('Class_AdminVar', + ['id' => 'MUSICME_URL', + 'valeur' => 'http://mediathequefr.musicme.com/']); + + $this->fixture('Class_AdminVar', + ['id' => 'MUSICME_BIB_ID', + 'valeur' => '123']); + + $this->_migration = (new Class_Migration_DigitalResource_Musicme()) + ->setMemoryCleaner(function(){}) + ->run(); + } + + + public function tearDown() { + Class_DigitalResource::resetInstance(); + parent::tearDown(); + } + + + /** @test */ + public function adminVarMusicmeUrlShoudBeUpdated() { + $this->assertEquals(2, Class_AdminVar::count()); + $this->assertNotNull(Class_AdminVar::findFirstBy(['clef' => 'Musicme_URL', + 'valeur' => 'http://mediathequefr.musicme.com/'])); + } + + + /** @test */ + public function adminVarMusicmeBibIdShoudBeUpdated() { + $this->assertEquals(2, Class_AdminVar::count()); + $this->assertNotNull(Class_AdminVar::findFirstBy(['clef' => 'Musicme_BIB_ID', + 'valeur' => '123'])); + } + + + /** @test */ + public function profilMenuWithAssimilShouldContainsMusicme() { + $this->assertEquals('Musicme', Class_Profil::find(22)->getCfgMenusAsArray()['H']['menus'][0]['sous_menus'][1]['type_menu']); + } + + + /** @test */ + public function teamOneShouldHavePermissionOnMusicme() { + if (!$permissions = Class_UserGroup::find(2)->getPermissions()) + return $this->fail(); + $this->assertEquals('Musicme', array_shift($permissions)->getCode()); + } + + + /** @test */ + public function teamOneRightsShouldBeCleaned() { + $this->assertEmpty(Class_UserGroup::find(2)->getRightsToken()); + } +} diff --git a/tests/library/Class/MoteurRechercheTest.php b/tests/library/Class/MoteurRechercheTest.php index 1b9102d782ac34a06c910f8d402835e544ad93dd..e5f2aafbb8ca7aa4e2e17a84a96b1d816dae99e4 100644 --- a/tests/library/Class/MoteurRechercheTest.php +++ b/tests/library/Class/MoteurRechercheTest.php @@ -309,13 +309,13 @@ class MoteurRechercheSimpleTest extends MoteurRechercheTestCase { [['expressionRecherche' => '', 'digital_lib' => '1'], 'nb_mots'=> 0, - 'req_liste' => 'select id_notice, facettes from notices Where (type_doc in (\'100\',\'101\',\'102\',\'103\',\'104\',\'105\',\'106\',\'107\',\'108\',\'109\',\'110\',\'111\',\'112\',\'114\',\'113\',\'115\',\'116\',\'117\',\'119\',\'Assimil\',\'LaSourisQuiRaconte\',\'Lekiosk\',\'Omeka\',\'Skilleos\'))'], + 'req_liste' => 'select id_notice, facettes from notices Where (type_doc in (\'100\',\'101\',\'102\',\'103\',\'104\',\'105\',\'106\',\'107\',\'108\',\'109\',\'110\',\'111\',\'112\',\'114\',\'113\',\'115\',\'116\',\'117\',\'119\',\'Assimil\',\'LaSourisQuiRaconte\',\'Lekiosk\',\'Musicme\',\'Omeka\',\'Skilleos\'))'], [['expressionRecherche' => 'logo', 'digital_lib' => '1'], 'nb_mots'=> 1, - 'req_liste' => "select id_notice, facettes from notices Where " . $match_axes . " AGAINST('+(LOGO LOGOS LOGO)' IN BOOLEAN MODE) and (type_doc in ('100','101','102','103','104','105','106','107','108','109','110','111','112','114','113','115','116','117','119','Assimil','LaSourisQuiRaconte','Lekiosk','Omeka','Skilleos')) order by (MATCH(alpha_titre) AGAINST(' LOGO') * 1.5) + (MATCH(alpha_auteur) AGAINST(' LOGO')) desc"], + 'req_liste' => "select id_notice, facettes from notices Where " . $match_axes . " AGAINST('+(LOGO LOGOS LOGO)' IN BOOLEAN MODE) and (type_doc in ('100','101','102','103','104','105','106','107','108','109','110','111','112','114','113','115','116','117','119','Assimil','LaSourisQuiRaconte','Lekiosk','Musicme','Omeka','Skilleos')) order by (MATCH(alpha_titre) AGAINST(' LOGO') * 1.5) + (MATCH(alpha_auteur) AGAINST(' LOGO')) desc"], [['expressionRecherche' => '', 'id_panier' => 4], diff --git a/tests/library/Class/MusicMeLinkTest.php b/tests/library/Class/MusicMeLinkTest.php deleted file mode 100644 index ff7bd2c03948908e6b1fe691ae13f0b5a6eaa31d..0000000000000000000000000000000000000000 --- a/tests/library/Class/MusicMeLinkTest.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php -/** - * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved. - * - * BOKEH is free software; you can redistribute it and/or modify - * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by - * the Free Software Foundation. - * - * There are special exceptions to the terms and conditions of the AGPL as it - * is applied to this software (see README file). - * - * BOKEH is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE - * along with BOKEH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -abstract class MusicMeLinkTestCase extends Storm_Test_ModelTestCase { - protected $_http_client; - protected $_jerry; - public function setUp() { - parent::setUp(); - $this->_http_client = Storm_Test_ObjectWrapper::mock(); - - Class_WebService_Abstract::setDefaultHttpClient($this->_http_client); - RessourcesNumeriquesFixtures::activateMusicMe(); - $this->_jerry = Class_Users::getLoader() - ->newInstanceWithId(4) - ->setIdabon(34) - ->setLogin(34) - ->setPseudo('JKhan') - ->setPrenom('Jerry') - ->setNom('Khan') - ->setMail('feu@essence.fr') - ->setPassword('secret') - ->setDateFin('2023-09-02') - ->setNaissance('1977-06-27') - ->setBib(Class_Bib::newInstanceWithId(34, ['libelle' => 'Annecy'])); - - $this->_musicme = Class_MusicMeLink::forUser($this->_jerry); - - } -} - - - -class MusicMeLinkWithAbonTest extends MusicMeLinkTestCase { - /** @test */ - public function urlWithLogginShouldBeMusicmeSSO() { - $this->assertEquals('http://musicmeurl/', - $this->_musicme->baseUrl()); - } - -/** @test */ - public function musicMeUrlShouldExtractUrlFromResponse() { - $ticket='ST-'.md5( Zend_Session::getId() . '4'); - $this->assertEquals('http://musicmeurl/?iduser=34&ticket='.$ticket. - '&MediaLibraryID=888&service=http%3A%2F%2Fmusicmeurl%2F%3Fiduser%3D34%26ticket%3D'.$ticket.'%26MediaLibraryID%3D888', - $this->_musicme->url()); - } -} diff --git a/tests/library/Class/Systeme/ModulesMenu/MusicMeTest.php b/tests/library/Class/Systeme/ModulesMenu/MusicMeTest.php deleted file mode 100644 index 2b5b54ba249e2531a19b9828b2d25b0d010b7548..0000000000000000000000000000000000000000 --- a/tests/library/Class/Systeme/ModulesMenu/MusicMeTest.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php -/** - * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved. - * - * BOKEH is free software; you can redistribute it and/or modify - * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by - * the Free Software Foundation. - * - * There are special exceptions to the terms and conditions of the AGPL as it - * is applied to this software (see README file). - * - * BOKEH is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE - * along with BOKEH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -class Class_Systeme_ModulesMenu_MusicMeTest extends Storm_Test_ModelTestCase { - public function setUp() { - parent::setUp(); - RessourcesNumeriquesFixtures::activate(); - $this->menu = new Class_Systeme_ModulesMenu_MusicMe(); - $this->user = $this->fixture('Class_Users', [ - 'id'=> 34 , - 'password' => 'toto' , - 'login' => '34', - 'idabon' => 34, - 'date_debut' => '1999-02-10', - 'date_fin' => '2025-09-12', - 'user_groups' => [$this->fixture('Class_UserGroup', [ - 'id' => 20, - 'libelle' => 'MusicMe' - ])->addRight(Class_UserGroup::RIGHT_ACCES_MUSICME)] - ])->beAbonneSIGB(); - ZendAfi_Auth::getInstance()->logUser($this->user); - Zend_Registry::get('translate')->setLocale('fr'); - } - - - /** @test */ - public function urlWithUserLoggedShouldBeLink() { - $this->assertContains('musicme', $this->menu->getDynamiqueUrl()); - } - - - /** @test */ - public function urlWithAbonnementInvalidShouldBeJSAlertAbonnementInvalid() { - $this->user->setDateFin('2000-03-01'); - $url = $this->menu->getDynamiqueUrl(); - $this->assertContains('Votre abonnement ne permet pas', $this->menu->getMessage()); - } -} -?> \ No newline at end of file diff --git a/tests/library/Class/Systeme/ModulesMenuTest.php b/tests/library/Class/Systeme/ModulesMenuTest.php index a410fe1a13277c9e8df46c9ddeeda23f6bf90261..e096899645344efa9ad0161025a3d87207a32f84 100644 --- a/tests/library/Class/Systeme/ModulesMenuTest.php +++ b/tests/library/Class/Systeme/ModulesMenuTest.php @@ -25,7 +25,7 @@ abstract class ModulesMenuBibNumeriqueTestCase extends Storm_Test_ModelTestCase public function availableServices() { return [ ['VODECLIC', 'Vodeclic'], - ['MUSICME', 'MusicMe'], + ['MUSICME', 'Musicme'], ['LEKIOSK', 'LeKiosk'], ['TOUTAPPRENDRE', 'Tout Apprendre'], ['NUMILOG', 'Numilog'], diff --git a/tests/library/ZendAfi/View/Helper/Status/JsonTest.php b/tests/library/ZendAfi/View/Helper/Status/JsonTest.php index 05a316a898c77fa5ce24ad5bea76405cf017c1cc..31b40663fa242d4725d2ab4df66be98e371d832d 100644 --- a/tests/library/ZendAfi/View/Helper/Status/JsonTest.php +++ b/tests/library/ZendAfi/View/Helper/Status/JsonTest.php @@ -180,17 +180,6 @@ class ZendAfi_View_Helper_Status_JsonTest extends ZendAfi_View_Helper_Status_Tes - /** @test */ - public function MusicMeShouldEnabled() { - $this->assertContains(["code" => "MUSICME", - "label" => "MusicMe", - "enabled" => true, - "features" => ["SSO"] - ], - $this->_report['digital_connectors']); - } - - /** @test */ public function ToutApprendreShouldEnabled() { $this->assertContains(["code" => "TOUTAPPRENDRE",