From f84a70405218f7b846151fbf1b32bc77fbab0a3f Mon Sep 17 00:00:00 2001 From: llaffont <llaffont@git-test.afi-sa.fr> Date: Fri, 10 Aug 2012 10:00:40 +0000 Subject: [PATCH] =?UTF-8?q?Multimedia:=20renvoie=20erreur=20sur=20r=C3=A9s?= =?UTF-8?q?a=20auto=20si=20r=C3=A9sa=20d=C3=A9j=C3=A0=20en=20cours=20par?= =?UTF-8?q?=20un=20autre=20utilisateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../opac/controllers/AbonneController.php | 28 ++++------ categories.org | 2 +- .../Class/Multimedia/AuthenticateRequest.php | 21 +++++++ .../AbonneControllerMultimediaTest.php | 56 ++++++++++++++++++- 4 files changed, 87 insertions(+), 20 deletions(-) diff --git a/application/modules/opac/controllers/AbonneController.php b/application/modules/opac/controllers/AbonneController.php index 49db64f93be..e887b24b03a 100644 --- a/application/modules/opac/controllers/AbonneController.php +++ b/application/modules/opac/controllers/AbonneController.php @@ -501,26 +501,22 @@ class AbonneController extends Zend_Controller_Action { $response->until = ''; $request = Class_Multimedia_AuthenticateRequest::newWithRequest($this->_request); - if (!$request->isValid()) { - $response->error = $request->getError(); - $this->_response->setBody(json_encode($response)); - return; - } - $user = $request->getUser(); - foreach (array('id', 'login', 'password', 'nom', 'prenom') as $attribute) { - $response->$attribute = $user->$attribute; - } + if ($user = $request->getUser()) { + foreach (array('id', 'login', 'password', 'nom', 'prenom') as $attribute) + $response->$attribute = $user->$attribute; - $response->groupes = $user->getUserGroupsLabels(); - $response->date_naissance = $user->getDateNaissanceIso8601(); + $response->groupes = $user->getUserGroupsLabels(); + $response->date_naissance = $user->getDateNaissanceIso8601(); + } - if (null != ($device = $request->getDevice()) - and null != ($hold = $device->getCurrentHoldForUser($user)) - ) { + if ($request->isValid()) { $response->auth = 1; - $response->until = date('c', $hold->getEnd()); - } + $response->until = date('c', $request->getCurrentHoldEnd()); + } else { + $response->error = $request->getError(); + } + $this->_response->setBody(json_encode($response)); } diff --git a/categories.org b/categories.org index 10c9168ede8..9305e8f95f1 100644 --- a/categories.org +++ b/categories.org @@ -24,7 +24,7 @@ Rajouter erreurs: **** TODO réservation prévue sur une durée < slot: peux pas réserver, réservation prévue dans xx mn => Rajouter une durée minimale de réservation auto (par ex., si on réserve en plein milieu d'un slot et que le slot suivant déjà réservé, on peut ou pas utiliser le poste selon le temps restant avant ce prochain slot) **** TODO réservation auto. pas activée et aucune réservation pour l'utilisateur **** TODO c'est pas l'utilisateur qui a réservé (réservation en cours) -**** DONE poste/device non trouvé +**** DONE poste/device non trouvé (DeviceNotFound) CLOSED: [2012-08-10 Fri 11:28] ** Réservation d'un poste [1/3] [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::abstract%20class%20AbonneControllerMultimediaAuthenticateTestCase%20extends%20AbstractControllerTestCase%20{][Test controller Abonne]] diff --git a/library/Class/Multimedia/AuthenticateRequest.php b/library/Class/Multimedia/AuthenticateRequest.php index 4d86d2ed1d3..5f5e28545d4 100644 --- a/library/Class/Multimedia/AuthenticateRequest.php +++ b/library/Class/Multimedia/AuthenticateRequest.php @@ -71,8 +71,29 @@ class Class_Multimedia_AuthenticateRequest { if (!$this->_device) return $this->_error('DeviceNotFound'); + if (!$this->getCurrentHold()) + return $this->_error('DeviceNotHeldByUser'); + return $this->beValid(); } + + + /** + * @return Class_Multimedia_DeviceHold + */ + public function getCurrentHold() { + if (!isset($this->_current_hold) && isset($this->_device) && isset($this->_user)) + $this->_current_hold = $this->_device->getCurrentHoldForUser($this->_user); + return $this->_current_hold; + } + + + /** + * @return string + */ + public function getCurrentHoldEnd() { + return $this->getCurrentHold()->getEnd(); + } /** @return boolean */ diff --git a/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php b/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php index 51bd8eceb54..ea1d154ffcb 100644 --- a/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php +++ b/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php @@ -267,15 +267,60 @@ class AbonneControllerMultimediaAuthenticateLaurentTest extends AbonneController -class AbonneControllerMultimediaAuthenticateLaurentDeviceNotFoundTest extends AbonneControllerMultimediaAuthenticateValidTestCase { +class AbonneControllerMultimediaAuthenticateLaurentDeviceNotHeldByUserTest extends AbonneControllerMultimediaAuthenticateValidTestCase { use TAbonneControllerMultimediaFixtureWithUserLaurentInDevsAgiles; protected function _launch() { $this->onLoaderOfModel('Class_Multimedia_Location') ->whenCalled('findByIdOrigine') - ->answers(Class_Multimedia_Location::newInstanceWithId(1)); + ->answers($location = Class_Multimedia_Location::newInstanceWithId(1) + ->setAuthDelay(1) + ->setAutohold(1)); + + $this->onLoaderOfModel('Class_Multimedia_Device') + ->whenCalled('findByIdOrigineAndLocation') + ->answers(Class_Multimedia_Device::newInstanceWithId(1) + ->setGroup(Class_Multimedia_DeviceGroup::newInstanceWithId(34)->setLocation($location))); + $this->onLoaderOfModel('Class_Multimedia_DeviceHold') + ->whenCalled('getHoldOnDeviceAtTime') + ->answers(Class_Multimedia_DeviceHold::newInstanceWithId(333) + ->setIdUser(9878) + ->setStart(strtotime('2012-09-12 08:30:00')) + ->setEnd(strtotime('2012-09-12 16:40:00'))); + parent::_launch(); + } + + + /** @test */ + public function jsonShouldContainsErrorDeviceNotHeldByUser() { + $this->assertEquals('DeviceNotHeldByUser', $this->_json->error); + } + + + /** @test */ + public function loginShoudBelaurent() { + $this->assertEquals('laurent', $this->_json->login); + } + + + /** @test */ + public function authShouldBeZero() { + $this->assertEquals('0', $this->_json->auth); + } + +} + + + +class AbonneControllerMultimediaAuthenticateLaurentDeviceNotFoundTest extends AbonneControllerMultimediaAuthenticateValidTestCase { + use TAbonneControllerMultimediaFixtureWithUserLaurentInDevsAgiles; + protected function _launch() { + $this->onLoaderOfModel('Class_Multimedia_Location') + ->whenCalled('findByIdOrigine') + ->answers(Class_Multimedia_Location::newInstanceWithId(1)); + $this->onLoaderOfModel('Class_Multimedia_Device') ->whenCalled('findByIdOrigineAndLocation') ->answers(null); @@ -288,9 +333,14 @@ class AbonneControllerMultimediaAuthenticateLaurentDeviceNotFoundTest extends Ab public function jsonShouldContainsErrorDeviceNotFound() { $this->assertEquals('DeviceNotFound', $this->_json->error); } -} + /** @test */ + public function loginShoudBelaurent() { + $this->assertEquals('laurent', $this->_json->login); + } +} + class AbonneControllerMultimediaAuthenticateArnaudTest extends AbonneControllerMultimediaAuthenticateValidTestCase { -- GitLab