From de5a6c43f9354984616915a0fb77cb9359664f76 Mon Sep 17 00:00:00 2001
From: Jean-Laurent <jean-laurent.duzant@xelians.fr>
Date: Mon, 16 May 2022 11:06:42 +0200
Subject: [PATCH] FIX #20145 TIME 0:15 check phone in testGetById, check
 fingerprint, add more test for testDelete && update .gitlab-ci.yml

---
 .gitlab-ci.yml                                | 64 ++++++++++++++++---
 src/app/user/controllers/UserController.php   |  4 --
 .../unitTests/app/user/UserControllerTest.php | 19 +++++-
 3 files changed, 74 insertions(+), 13 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 45e5fd67fe..6f02c14b81 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,6 +21,50 @@ before_script:
   - sed 's!<server>.*</server>!<server>postgres</server>!;s!<password>.*</password>!<password>maarch</password>!;s!<name>.*</name>!<name>MaarchParapheur</name>!;s!<user>.*</user>!<user>maarch</user>!;s!<enable>.*</enable>!<enable>true</enable>!' config/config.xml.default > config/config.xml
   - sed -i 's/rights="none" pattern="PDF"/rights="read | write" pattern="PDF"/' /etc/ImageMagick-6/policy.xml
 
+job_php-8.1:
+ image: php:8.1-apache
+ stage: test
+ services:
+   - name: postgres:10.1
+     command: [ "-c", "datestyle=iso,dmy" ]
+ script:
+   - curl --location -s --output /usr/local/bin/phpunit https://phar.phpunit.de/phpunit-9.phar
+   - chmod +x /usr/local/bin/phpunit
+   - phpunit --coverage-text --colors=never
+# only:
+#   - develop
+# except:
+#   - schedules
+ rules:
+   - if: '$CI_COMMIT_BRANCH =~ /(feat|fix)\/[0-9]{4,5}\/develop/'
+
+ artifacts:
+   paths:
+     - test/unitTests/build/
+   expire_in: 2h
+
+job_php-8.0:
+ image: php:8.0-apache
+ stage: test
+ services:
+   - name: postgres:10.1
+     command: [ "-c", "datestyle=iso,dmy" ]
+ script:
+   - curl --location -s --output /usr/local/bin/phpunit https://phar.phpunit.de/phpunit-9.phar
+   - chmod +x /usr/local/bin/phpunit
+   - phpunit --coverage-text --colors=never
+# only:
+#   - develop
+# except:
+#   - schedules
+ rules:
+   - if: '$CI_COMMIT_BRANCH =~ /(feat|fix)\/[0-9]{4,5}\/develop/'
+
+ artifacts:
+   paths:
+     - test/unitTests/build/
+   expire_in: 2h
+
 job_php-7.4:
   image: php:7.4-apache
   stage: test
@@ -31,10 +75,12 @@ job_php-7.4:
     - curl --location -s --output /usr/local/bin/phpunit https://phar.phpunit.de/phpunit-9.phar
     - chmod +x /usr/local/bin/phpunit
     - phpunit --coverage-text --colors=never -c phpunit.xml
-  only:
-    - develop
-  except:
-    - schedules
+  # only:
+  #   - develop
+  # except:
+  #   - schedules
+  rules:
+   - if: '$CI_COMMIT_BRANCH =~ /(feat|fix)\/[0-9]{4,5}\/develop/'
   artifacts:
     paths:
       - test/unitTests/build/
@@ -50,10 +96,12 @@ job_php-7.3:
     - curl --location -s --output /usr/local/bin/phpunit https://phar.phpunit.de/phpunit-9.phar
     - chmod +x /usr/local/bin/phpunit
     - phpunit --coverage-text --colors=never
-  only:
-    - develop
-  except:
-    - schedules
+  # only:
+  #   - develop
+  # except:
+  #   - schedules
+  rules:
+   - if: '$CI_COMMIT_BRANCH =~ /(feat|fix)\/[0-9]{4,5}\/develop/'
 
 
 commits:
diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index b62b4305f1..9851e737a8 100755
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -143,10 +143,6 @@ class UserController
             return $response->withStatus(400)->withJson(['errors' => 'Login already exists', 'lang' => 'userLoginAlreadyExists']);
         }
 
-        // if (!empty($body['x509Fingerprint'])) {
-        //     $body['x509_fingerprint'] = $body['x509Fingerprint'];
-        // }
-
         $body['x509_fingerprint'] = !empty($body['x509Fingerprint']) ? $body['x509Fingerprint'] : null;
 
         if (empty($body['phone'])) {
diff --git a/test/unitTests/app/user/UserControllerTest.php b/test/unitTests/app/user/UserControllerTest.php
index 3767bd83b3..6bd12b4a1b 100755
--- a/test/unitTests/app/user/UserControllerTest.php
+++ b/test/unitTests/app/user/UserControllerTest.php
@@ -181,6 +181,7 @@ class UserControllerTest extends TestCase
         $this->assertSame('email@test.fr', $responseBody->user->email);
         $this->assertSame('Prénom', $responseBody->user->firstname);
         $this->assertSame('Nom', $responseBody->user->lastname);
+        $this->assertSame('0701020304', $responseBody->user->phone);
 
         $response     = $userController->getById($request, new \Slim\Http\Response(), ['id' => -1]);
         $this->assertSame(400, $response->getStatusCode());
@@ -199,6 +200,7 @@ class UserControllerTest extends TestCase
 
         $this->assertNotEmpty($response);
         $this->assertNotEmpty($response['x509Fingerprint']);
+        $this->assertSame('fingerprint', $response['x509Fingerprint']);
         $GLOBALS['id']  = $previousUserId;
     }
 
@@ -332,8 +334,23 @@ class UserControllerTest extends TestCase
 
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
         $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        
         $response       = $userController->delete($request, new \Slim\Http\Response(), ['id' => self::$userIdToDelete]);
-
         $this->assertSame(204, $response->getStatusCode());
+
+        $response       = $userController->delete($request, new \Slim\Http\Response(), ['id' => self::$userIdToDelete]);
+        $responseBody   = json_decode((string)$response->getBody());
+        $this->assertSame(400, $response->getStatusCode());
+        $this->assertSame('User does not exist', $responseBody->errors);
+        
+        $response       = $userController->delete($request, new \Slim\Http\Response(), ['id' => '1']);
+        $responseBody   = json_decode((string)$response->getBody());
+        $this->assertSame(403, $response->getStatusCode());
+        $this->assertSame('Privilege forbidden', $responseBody->errors);
+
+        $response       = $userController->delete($request, new \Slim\Http\Response(), ['id' => 1.1]);
+        $responseBody   = json_decode((string)$response->getBody());
+        $this->assertSame(400, $response->getStatusCode());
+        $this->assertSame('Route id is not an integer', $responseBody->errors);
     }
 }
-- 
GitLab