From 78007d6412d43a059ba09a57470c91c494311b5f Mon Sep 17 00:00:00 2001
From: llaffont <llaffont@afi-sa.fr>
Date: Sat, 28 Nov 2015 17:37:35 +0100
Subject: [PATCH] dev #30973 pnb_backoffice_table

fix declare ips
---
 .../admin/controllers/IndexController.php     |  1 +
 .../ZendAfi/Validate/Dilicom/IpAdresses.php   |  2 +-
 .../controllers/AdminIndexControllerTest.php  | 29 +++++++++++++++----
 3 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/application/modules/admin/controllers/IndexController.php b/application/modules/admin/controllers/IndexController.php
index 2fdbe8da7df..c12ea844fab 100644
--- a/application/modules/admin/controllers/IndexController.php
+++ b/application/modules/admin/controllers/IndexController.php
@@ -70,6 +70,7 @@ class Admin_IndexController extends ZendAfi_Controller_Action {
                      $this->view->url(['action' => 'adminvar']));
 
     if ($this->_request->isPost() && $form->isValid($this->_request->getPost())) {
+      xdebug_break();
       $new_valeur = $form->getAdminVarValue();
 
       $var->setValeur($new_valeur);
diff --git a/library/ZendAfi/Validate/Dilicom/IpAdresses.php b/library/ZendAfi/Validate/Dilicom/IpAdresses.php
index a7abfe37f35..ec2e36066ef 100644
--- a/library/ZendAfi/Validate/Dilicom/IpAdresses.php
+++ b/library/ZendAfi/Validate/Dilicom/IpAdresses.php
@@ -45,7 +45,7 @@ class ZendAfi_Validate_Dilicom_IpAdresses extends Zend_Validate_Abstract{
 
     $this->_setValue(implode(',', $result->returnMessage));
 
-    if ('OK' !== $result->returnStatus) {
+    if (!in_array($result->returnStatus, ['OK', 'WARNING'])) {
       $this->_error(self::DECLARE_IP_FAIL);
       return false;
     }
diff --git a/tests/application/modules/admin/controllers/AdminIndexControllerTest.php b/tests/application/modules/admin/controllers/AdminIndexControllerTest.php
index e4e5b415c64..5938cfe3075 100644
--- a/tests/application/modules/admin/controllers/AdminIndexControllerTest.php
+++ b/tests/application/modules/admin/controllers/AdminIndexControllerTest.php
@@ -534,8 +534,12 @@ abstract class AdminIndexControllerDilicomPnbIpAdressesTestCase extends Admin_Ab
       ->whenCalled('setAuth')->answers(null)
       ->whenCalled('open_url')->answers(json_encode(['returnStatus' => 'OK',
                                                      'returnMessage' => []]));
+
+    Class_AdminVar::set('DILICOM_PNB_IP_ADRESSES', '');
+
     RessourcesNumeriquesFixtures::activateDilicom();
 
+
     Class_WebService_BibNumerique_Dilicom_Hub::setDefaultHttpClient($this->_http);
   }
 
@@ -604,8 +608,8 @@ class AdminIndexControllerAdminVarDilicomDeclareIpPostTest extends AdminIndexCon
 
     $this->postDispatch('/admin/index/adminvaredit/cle/DILICOM_PNB_IP_ADRESSES',
                         ['cle' => 'DILICOM_PNB_IP_ADRESSES',
-                         'valeurs' => ['xxx',
-                                       '123.156.15.3']]);
+                         'values' => ['xxx',
+                                      '123.156.15.3']]);
 
     $this->assertXPathContentContains('//div//ul[@class="errors"]/li', 'xxx is not a valid address');
   }
@@ -617,8 +621,8 @@ class AdminIndexControllerAdminVarDilicomDeclareIpPostTest extends AdminIndexCon
 
     $this->postDispatch('/admin/index/adminvaredit/cle/DILICOM_PNB_IP_ADRESSES',
                         ['cle' => 'DILICOM_PNB_IP_ADRESSES',
-                         'valeurs' => ['xxx',
-                                       '123.156.15.3']]);
+                         'values' => ['xxx',
+                                      '123.156.15.3']]);
 
     $this->assertXPathContentContains('//div//ul[@class="errors"]/li', 'configuration du PNB Dilicom incomplète');
   }
@@ -631,11 +635,26 @@ class AdminIndexControllerAdminVarDilicomDeclareIpPostTest extends AdminIndexCon
 
     $this->postDispatch('/admin/index/adminvaredit/cle/DILICOM_PNB_IP_ADRESSES',
                         ['cle' => 'DILICOM_PNB_IP_ADRESSES',
-                         'valeur' => ['xxx',
+                         'values' => ['xxx',
                                       '123.156.15.3']]);
 
     $this->assertXPathContentContains('//div//ul[@class="errors"]/li', 'échec de communication avec le serveur PNB Dilicom');
   }
+
+
+  /** @test */
+  public function hubWarningMessageShouldNotPreventSave() {
+    $this->_http->whenCalled('open_url')
+                ->answers(json_encode(['requestId' => 'xxx',
+                                       'returnStatus' => 'WARNING',
+                                       'returnMessage' => ['xxx is already declared']]));
+
+    $this->postDispatch('/admin/index/adminvaredit/cle/DILICOM_PNB_IP_ADRESSES',
+                        ['cle' => 'DILICOM_PNB_IP_ADRESSES',
+                         'values' => ['123.156.15.3']]);
+
+    $this->assertEquals('123.156.15.3', Class_AdminVar::get('DILICOM_PNB_IP_ADRESSES'));
+  }
 }
 
 
-- 
GitLab