From 16425e9934b8c5f2471f1e8cc1b6e5afdb10a9c2 Mon Sep 17 00:00:00 2001
From: Henri-Damien LAURENT <hdlaurent@afi-sa.net>
Date: Mon, 28 Aug 2023 16:02:16 +0000
Subject: [PATCH] hotline#179317 : CAS C3RB: error in date importation

---
 library/Class/WebService/C3rb.php                         | 6 +++---
 library/Class/WebService/Cas3.php                         | 3 ++-
 .../IdentityProviderAuthenticationC3rbTest.php            | 8 ++++----
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/library/Class/WebService/C3rb.php b/library/Class/WebService/C3rb.php
index f6294a8d92c..d492e8cfe0e 100644
--- a/library/Class/WebService/C3rb.php
+++ b/library/Class/WebService/C3rb.php
@@ -42,10 +42,10 @@ class Class_WebService_C3rb extends Class_WebService_Cas2 {
 
 
   protected function _validateValue(?string $value, string $function_name) {
-    return ((($function_name == 'naissance')
-             || ($function_name=='date_fin'))
+    return ((('naissance' === $function_name)
+             || ('date_fin' === $function_name))
             && $value)
-      ? date('Y-m-d', strtotime($value))
+      ? Class_TimeSource::tryFormatDate($value)
       : $value;
   }
 }
diff --git a/library/Class/WebService/Cas3.php b/library/Class/WebService/Cas3.php
index 00e66370067..0d543949afc 100644
--- a/library/Class/WebService/Cas3.php
+++ b/library/Class/WebService/Cas3.php
@@ -65,7 +65,8 @@ class Class_WebService_Cas3 extends Class_WebService_Cas2 {
     if (!$value)
       return '';
 
-    if (!(($function_name == 'naissance') ||($function_name == 'date_fin')) )
+    if (!(('naissance' === $function_name)
+          ||('date_fin' === $function_name)) )
       return $value;
 
     if (strlen($value) <= 4)
diff --git a/tests/scenarios/IdentityProvider/IdentityProviderAuthenticationC3rbTest.php b/tests/scenarios/IdentityProvider/IdentityProviderAuthenticationC3rbTest.php
index f2ccb32258a..1cfee70570d 100644
--- a/tests/scenarios/IdentityProvider/IdentityProviderAuthenticationC3rbTest.php
+++ b/tests/scenarios/IdentityProvider/IdentityProviderAuthenticationC3rbTest.php
@@ -212,7 +212,7 @@ class IdentityProviderAuthenticationC3rbToBokehUpdateTestCase
     <cas:attributes>
       <cas:user>myawesomeuser</cas:user>
       <cas:mail>awesome@user.fr</cas:mail>
-      <cas:birth></cas:birth>
+      <cas:birth>1973-01-23</cas:birth>
       <cas:nom>Awesome</cas:nom>
       <cas:prenom>MyEdited</cas:prenom>
       <cas:date_renouv>01/01/2024</cas:date_renouv>
@@ -259,13 +259,13 @@ class IdentityProviderAuthenticationC3rbToBokehUpdateTestCase
 
 
   /** @test */
-  public function userBirthShouldBeEmpty() {
-    $this->assertEquals('', Class_Users::getIdentity()->getNaissance());
+  public function userBirthShouldBe19730123() {
+    $this->assertEquals('1973-01-23', Class_Users::getIdentity()->getNaissance());
   }
 
 
   /** @test */
-  public function userDateFinShouldExpectation() {
+  public function userDateFinShouldBe20240101() {
     $this->assertEquals('2024-01-01', Class_Users::getIdentity()->getDateFin());
   }
 }
-- 
GitLab