From 4b8af4996fbbdc28eac29da34b4ebf62b4895b4e Mon Sep 17 00:00:00 2001
From: pbarroca <pbarroca@afi-sa.fr>
Date: Wed, 6 Jun 2018 15:43:17 +0200
Subject: [PATCH] hotline #75070 : add captcha in Nanook pre-registration

---
 VERSIONS_HOTLINE/75970                        |  1 +
 .../ZendAfi/Form/PreRegistration/Nanook.php   |  5 ++-
 .../AuthControllerPreRegistrationTest.php     | 41 ++++++++++++++++++-
 3 files changed, 44 insertions(+), 3 deletions(-)
 create mode 100644 VERSIONS_HOTLINE/75970

diff --git a/VERSIONS_HOTLINE/75970 b/VERSIONS_HOTLINE/75970
new file mode 100644
index 00000000000..63683c744c7
--- /dev/null
+++ b/VERSIONS_HOTLINE/75970
@@ -0,0 +1 @@
+ - ticket #75970 : Abonné : Pré-inscription Nanook : ajout de contre-mesures antispam
\ No newline at end of file
diff --git a/library/ZendAfi/Form/PreRegistration/Nanook.php b/library/ZendAfi/Form/PreRegistration/Nanook.php
index e6e3a7561f9..ea929951cbb 100644
--- a/library/ZendAfi/Form/PreRegistration/Nanook.php
+++ b/library/ZendAfi/Form/PreRegistration/Nanook.php
@@ -25,7 +25,6 @@ class ZendAfi_Form_PreRegistration_Nanook extends ZendAfi_Form {
     parent::init();
 
     $this
-
       ->addElement('select',
                    'site',
                    ['label' => $this->_('Médiathèque'),
@@ -56,6 +55,10 @@ class ZendAfi_Form_PreRegistration_Nanook extends ZendAfi_Form {
                     'allowEmpty' => false,
                     'validators' => [new ZendAfi_Validate_MailEquals('mail')]])
 
+      ->addElement('text',
+                   'emailCheck',
+                   ['data-spambots' => 'true'])
+
       ->addElement('password',
                    'password',
                    ['label' => $this->_('Mot de passe'),
diff --git a/tests/application/modules/opac/controllers/AuthControllerPreRegistrationTest.php b/tests/application/modules/opac/controllers/AuthControllerPreRegistrationTest.php
index 4142899c34c..9397349268d 100644
--- a/tests/application/modules/opac/controllers/AuthControllerPreRegistrationTest.php
+++ b/tests/application/modules/opac/controllers/AuthControllerPreRegistrationTest.php
@@ -319,6 +319,12 @@ class AuthControllerPreRegistrationNanookDispatchTest
   public function selectSiteShouldContainsOptionAcardia() {
     $this->assertXPathContentContains('//form//select[@name="site"]//option[@value="1"]', 'Arcadia');
   }
+
+
+  /** @test */
+  public function formShouldContainsCaptcha() {
+    $this->assertXPath('//input[@name="emailCheck"]');
+  }
 }
 
 
@@ -353,7 +359,8 @@ class AuthControllerPreRegistrationNanookPostDispatchTest
                                                         'birthDate' => '2001-05-05',
                                                         'town' => 'titi',
                                                         'zipcode' => '123456',
-                                                        'address' => '123']);
+                                                        'address' => '123',
+                                                        'emailCheck' => '']);
   }
 
 
@@ -419,7 +426,8 @@ class AuthControllerPreRegistrationNanookPostDispatchErrorTest
                                                         'birthDate' => '2001-05-05',
                                                         'town' => 'titi',
                                                         'zipcode' => '123456',
-                                                        'address' => '123']);
+                                                        'address' => '123',
+                                                        'emailCheck' => '']);
   }
 
 
@@ -431,6 +439,35 @@ class AuthControllerPreRegistrationNanookPostDispatchErrorTest
 
 
 
+class AuthControllerPreRegistrationNanookPostDispatchSpamTest
+  extends AuthControllerPreRegistrationNanookTestCase {
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->postDispatch('/opac/auth/pre-registration', ['site' => '1',
+                                                        'lastName' => 'Jiro',
+                                                        'firstName' => 'Tom',
+                                                        'mail' => 'test@test.fr',
+                                                        'mail2' => 'test@test.fr',
+                                                        'password' => 'pwd123456',
+                                                        'password2' => 'pwd123456',
+                                                        'birthDate' => '2001-05-05',
+                                                        'town' => 'titi',
+                                                        'zipcode' => '123456',
+                                                        'address' => '123',
+                                                        'emailCheck' => 'russian-pal@poutine.ru']);
+  }
+
+
+  /** @test */
+  public function shouldRedirectToHome() {
+    $this->assertRedirectTo('/');
+  }
+}
+
+
+
 
 class AuthControllerPreRegistrationWithNoPreRegistrationTest extends AuthControllerPreRegistrationNanookTestCase {
   public function setUp() {
-- 
GitLab