From 8b5ef84fa77884be11c31b2cb2842f29c80cdda9 Mon Sep 17 00:00:00 2001 From: Andrea Adamczyk Date: Thu, 29 Aug 2019 12:09:04 -0400 Subject: [PATCH] Solving conflicts for PMC-1126 --- phpunit.xml | 1 + tests/bootstrap.php | 9 ++ .../engine/controllers/DesignerTest.php | 102 ++++++++++++++++++ workflow/engine/controllers/designer.php | 11 +- 4 files changed, 118 insertions(+), 5 deletions(-) create mode 100644 tests/unit/workflow/engine/controllers/DesignerTest.php diff --git a/phpunit.xml b/phpunit.xml index 00bbf36fa..118b4efec 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -9,6 +9,7 @@ stopOnFailure="false" syntaxCheck="true" bootstrap="tests/bootstrap.php" + stderr="true" > diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 0b6b11c78..dd706e340 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -37,6 +37,15 @@ define('PATH_RBAC', PATH_RBAC_HOME . 'engine/classes/'); define("PATH_CUSTOM_SKINS", PATH_DATA . "skins/"); define("PATH_TPL", PATH_CORE . "templates/"); define('PATH_C', PATH_DATA . 'compiled/'); +define('DB_HOST', env('DB_HOST')); +define('DB_NAME', env('DB_DATABASE')); +define('DB_USER', env('DB_USERNAME')); +define('DB_PASS', env('DB_PASSWORD')); +define('PATH_HOME', PATH_TRUNK . '/workflow/'); +define('PATH_HTML', PATH_HOME . 'public_html/'); +define('PATH_SMARTY_C', PATH_TRUNK . '/shared/compiled/smarty/c'); +define('PATH_SMARTY_CACHE', PATH_TRUNK . '/shared/compiled/smarty/cache'); +define('PATH_THIRDPARTY', PATH_TRUNK . '/thirdparty/'); // Set Time Zone $_SESSION['__SYSTEM_UTC_TIME_ZONE__'] = (int)(env('MAIN_SYSTEM_UTC_TIME_ZONE', 'workflow')) == 1; diff --git a/tests/unit/workflow/engine/controllers/DesignerTest.php b/tests/unit/workflow/engine/controllers/DesignerTest.php new file mode 100644 index 000000000..7ba5cbb3f --- /dev/null +++ b/tests/unit/workflow/engine/controllers/DesignerTest.php @@ -0,0 +1,102 @@ +create(); + //Create the application factory + $application = factory(Application::class)->create( + [ + 'APP_PIN' => G::encryptOld('LJ5W'), + ] + ); + + //Start the session for the user logged + session_start(); + + $_SESSION['CASE'] = $application->APP_NUMBER; + $_SESSION['PIN'] = "LJ5W"; + $_SESSION['USER_LOGGED'] = '00000000000000000000000000000001'; + + session_commit(); + + //Create the data sent to the tracker request + $httpData = (object)[ + "prj_uid" => $process->PRO_UID, + "prj_readonly" => "true", + "app_uid" => $application->APP_UID, + "tracker_designer" => "1" + ]; + + //Create the Designer object + $object = new Designer(); + + //Turn on output buffering + ob_start(); + + //Call the index method + $object->index($httpData); + + //Get current buffer contents and delete current output buffer in $res variable + $res = ob_get_clean(); + + //Assert the result does not have errors + $this->assertNotContains('Call to a member function getUsrUid() on null', $res); + $this->assertNotContains('Uncaught TypeError: Argument 2 passed to Illumincate\Routing\UrlGenerator::_construct() must be an instance of Illuminate\Http\Request, null given', + $res); + } + + /** + * Tests the Designer::index() method when the user logged is empty + * + * @test + */ + public function it_should_test_the_index_method_when_the_user_logged_is_empty() + { + //Create the process factory + $process = factory(Process::class)->create(); + //Create the application factory + $application = factory(Application::class)->create( + [ + 'APP_PIN' => G::encryptOld('LJ5W'), + ] + ); + + $_SESSION['CASE'] = $application->APP_NUMBER; + $_SESSION['PIN'] = "LJ5W"; + + session_commit(); + + //Create the data sent to the tracker request + $httpData = (object)[ + "prj_uid" => $process->PRO_UID, + "prj_readonly" => "true", + "app_uid" => $application->APP_UID, + "tracker_designer" => "1" + ]; + + //Create the Designer object + $object = new Designer(); + + //An exception is expected if the user logged is empty + $this->expectExceptionMessage("Local Authentication Error, user session is not started."); + + //Call the index method + $object->index($httpData); + } +} \ No newline at end of file diff --git a/workflow/engine/controllers/designer.php b/workflow/engine/controllers/designer.php index ee76774c3..40f508f93 100644 --- a/workflow/engine/controllers/designer.php +++ b/workflow/engine/controllers/designer.php @@ -40,12 +40,12 @@ class Designer extends Controller $clientToken = $this->getCredentials($httpData); $debug = false; //System::isDebugMode(); - $consolidated = 0; $enterprise = 0; $distribution = 0; - $usrUid = $RBAC->userObj->getUsrUid(); + $usrUid = (isset($RBAC->userObj)) ? $RBAC->userObj->getUsrUid() : ''; + $userProperties = UsersPropertiesPeer::retrieveByPk($usrUid); /*----------------------------------********---------------------------------*/ @@ -72,7 +72,8 @@ class Designer extends Controller $this->setVar("SYS_LANG", SYS_LANG); $this->setVar("SYS_SKIN", SYS_SKIN); $this->setVar('HTTP_SERVER_HOSTNAME', System::getHttpServerHostnameRequestsFrontEnd()); - $this->setVar('PMDYNAFORM_FIRST_TIME', $userProperties->getPmdynaformFirstTime()); + isset($userProperties) ? $this->setVar('PMDYNAFORM_FIRST_TIME', + $userProperties->getPmdynaformFirstTime()) : $this->setVar('PMDYNAFORM_FIRST_TIME', '0'); $inpuDocument = new InputDocument(); $this->setVar('maxFileSizeInformation', G::json_encode($inpuDocument->getMaxFileSize())); @@ -99,7 +100,8 @@ class Designer extends Controller $this->setVar('pmuiJsCacheFile', file(PATH_HTML . "lib-dev/pmUI/build.cache", FILE_IGNORE_NEW_LINES)); $this->setVar('pmuiCssCacheFile', file(PATH_HTML . "lib-dev/pmUI/css.cache", FILE_IGNORE_NEW_LINES)); - $this->setVar('designerCacheFile', file(PATH_HTML . "lib-dev/mafe/applications.cache", FILE_IGNORE_NEW_LINES)); + $this->setVar('designerCacheFile', + file(PATH_HTML . "lib-dev/mafe/applications.cache", FILE_IGNORE_NEW_LINES)); $this->setVar('mafeJsFiles', $mafeJsFiles); $this->setVar('mafeCssFiles', $mafeCssFiles); } else { @@ -253,7 +255,6 @@ class Designer extends Controller "Content-Type" => "multipart/form-data;", "Authorization" => "Basic " . base64_encode($client['CLIENT_ID'] . ":" . $client['CLIENT_SECRET']) ); - $request = new Request(array(), $request, array(), array(), array(), $server, null, $headers); $oauthServer = new Server(); $response = $oauthServer->postToken($request, true);