From e3fc7d5a3237c6b5bc154483d652a392358f7c7c Mon Sep 17 00:00:00 2001
From: Laurent Giovannoni <laurent.giovannoni@maarch.org>
Date: Mon, 27 Feb 2017 17:13:41 +0100
Subject: [PATCH] FEAT add unit test skell

---
 core/Test/StatusControllerTest.php | 132 +++++++++++++++++++++++++++++
 core/Test/define.php               |  65 ++++++++++++++
 2 files changed, 197 insertions(+)
 create mode 100644 core/Test/StatusControllerTest.php
 create mode 100644 core/Test/define.php

diff --git a/core/Test/StatusControllerTest.php b/core/Test/StatusControllerTest.php
new file mode 100644
index 00000000000..807f37550e2
--- /dev/null
+++ b/core/Test/StatusControllerTest.php
@@ -0,0 +1,132 @@
+<?php
+
+require_once __DIR__.'/define.php';
+
+class StatusControllerTest extends PHPUnit_Framework_TestCase
+{
+    public function testGetList()
+    {
+        $action = new \Core\Controllers\StatusController();
+
+        $environment = \Slim\Http\Environment::mock(
+            [
+                'REQUEST_METHOD' => 'GET',
+                //'REQUEST_URI' => '/status',
+                //'QUERY_STRING'=>'foo=bar',
+            ]
+        );
+
+        $request = \Slim\Http\Request::createFromEnvironment($environment);
+        $response = new \Slim\Http\Response();
+        $response = $action->getList($request, $response, []);
+
+        $this->assertNotNull((string)$response->getBody());
+    }
+
+    public function testGetById()
+    {
+        $action = new \Core\Controllers\StatusController();
+
+        $environment = \Slim\Http\Environment::mock(
+            [
+                'REQUEST_METHOD' => 'GET',
+            ]
+        );
+
+        $aArgs = [
+            'id'=> 'NEW'
+        ];
+
+        $request = \Slim\Http\Request::createFromEnvironment($environment);
+        $response = new \Slim\Http\Response();
+        $response = $action->getById($request, $response, $aArgs);
+        $compare = '[{"status":[{"id":"NEW","label_status":"Nouveau",'
+            . '"is_system":"Y","is_folder_status":"N","img_filename":'
+            . '"fm-letter-status-new","maarch_module":"apps",'
+            . '"can_be_searched":"Y","can_be_modified":"Y"}]}]';
+
+        $this->assertSame((string)$response->getBody(), $compare);
+    }
+
+    public function testCreate()
+    {
+        $action = new \Core\Controllers\StatusController();
+
+        $query  = 'id=TEST&';
+        $query .= 'label_status=TEST';
+
+        $environment = \Slim\Http\Environment::mock(
+            [
+                'REQUEST_METHOD' => 'POST',
+                'QUERY_STRING'=> $query,
+            ]
+        );
+        
+        $aArgs = [
+            'id'=> 'NEW'
+        ];
+
+        $request = \Slim\Http\Request::createFromEnvironment($environment);
+        $response = new \Slim\Http\Response();
+        $response = $action->create($request, $response, $aArgs);
+
+        $compare = '[{"status":[{"id":"TEST","label_status":"TEST",'
+            . '"is_system":"Y","is_folder_status":"N","img_filename":null,'
+            . '"maarch_module":"apps","can_be_searched":"Y",'
+            . '"can_be_modified":"Y"}]}]';
+        
+        $this->assertSame((string)$response->getBody(), $compare);
+    }
+
+    public function testUpdate()
+    {
+        $action = new \Core\Controllers\StatusController();
+
+        $query  = 'id=TEST&';
+        $query .= 'label_status=TEST AFTER UP';
+
+        $environment = \Slim\Http\Environment::mock(
+            [
+                'REQUEST_METHOD' => 'PUT',
+                'QUERY_STRING'=> $query,
+            ]
+        );
+        
+        $aArgs = [
+            'id'=> 'NEW'
+        ];
+
+        $request = \Slim\Http\Request::createFromEnvironment($environment);
+        $response = new \Slim\Http\Response();
+        $response = $action->update($request, $response, $aArgs);
+
+        $compare = '[{"status":[{"id":"TEST","label_status":"TEST AFTER UP",'
+            . '"is_system":"Y","is_folder_status":"N","img_filename":null,'
+            . '"maarch_module":"apps","can_be_searched":"Y",'
+            . '"can_be_modified":"Y"}]}]';
+        
+        $this->assertSame((string)$response->getBody(), $compare);
+    }
+
+    public function testDelete()
+    {
+        $action = new \Core\Controllers\StatusController();
+
+        $environment = \Slim\Http\Environment::mock(
+            [
+                'REQUEST_METHOD' => 'DELETE',
+            ]
+        );
+
+        $aArgs = [
+            'id'=> 'TEST'
+        ];
+
+        $request = \Slim\Http\Request::createFromEnvironment($environment);
+        $response = new \Slim\Http\Response();
+        $response = $action->delete($request, $response, $aArgs);
+        
+        $this->assertSame((string)$response->getBody(), '[{"status":true}]');
+    }
+
+}
\ No newline at end of file
diff --git a/core/Test/define.php b/core/Test/define.php
new file mode 100644
index 00000000000..5aea23a212e
--- /dev/null
+++ b/core/Test/define.php
@@ -0,0 +1,65 @@
+<?php
+
+require_once 'vendor/autoload.php';
+require_once 'core/class/class_functions.php';
+include_once('core/init.php');
+require_once('core/class/class_portal.php');
+require_once('core/class/class_db.php');
+require_once('core/class/class_request.php');
+require_once('core/class/class_core_tools.php');
+require_once('core/class/web_service/class_web_service.php');
+require_once('core/services/CoreConfig.php');
+
+//for auth
+$_SERVER['PHP_AUTH_USER'] = 'superadmin';
+$_SERVER['PHP_AUTH_PW'] = 'superadmin';
+
+//load Maarch session vars
+$portal = new portal();
+$portal->unset_session();
+$portal->build_config();
+$coreTools = new core_tools();
+$_SESSION['custom_override_id'] = $coreTools->get_custom_id();
+if (isset($_SESSION['custom_override_id'])
+    && ! empty($_SESSION['custom_override_id'])
+    && isset($_SESSION['config']['corepath'])
+    && ! empty($_SESSION['config']['corepath'])
+) {
+    $path = $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
+        . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR;
+    set_include_path(
+        $path . PATH_SEPARATOR . $_SESSION['config']['corepath']
+        . PATH_SEPARATOR . get_include_path()
+    );
+} else if (isset($_SESSION['config']['corepath'])
+    && ! empty($_SESSION['config']['corepath'])
+) {
+    set_include_path(
+        $_SESSION['config']['corepath'] . PATH_SEPARATOR . get_include_path()
+    );
+}
+// Load configuration from xml into session
+Core_CoreConfig_Service::buildCoreConfig('core' . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 'config.xml');
+$_SESSION['config']['app_id'] = $_SESSION['businessapps'][0]['appid'];
+require_once 'apps/' .$_SESSION['businessapps'][0]['appid']. '/class/class_business_app_tools.php';
+
+Core_CoreConfig_Service::buildBusinessAppConfig();
+
+// Load Modules configuration from xml into session
+Core_CoreConfig_Service::loadModulesConfig($_SESSION['modules']);
+Core_CoreConfig_Service::loadAppServices();
+Core_CoreConfig_Service::loadModulesServices($_SESSION['modules']);
+
+
+//login management
+require_once('apps/maarch_entreprise/class/class_login.php');
+$loginObj = new login();
+$loginMethods = $loginObj->build_login_method();
+require_once('core/services/Session.php');
+$oSessionService = new \Core_Session_Service();
+$loginObj->execute_login_script($loginMethods, true);
+
+if ($_SESSION['error']) {
+    //TODO : return http bad authent error
+    echo $_SESSION['error'];exit();
+}
-- 
GitLab