From 8dfca660eff293b36537b4f41815a14256e1c5ae Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Thu, 18 Jun 2020 17:12:09 -0400 Subject: [PATCH] PMCORE-1403 --- .../PmFunctions/PMFSendMessageTest.php | 110 ++++++++++++++++++ workflow/engine/classes/class.pmFunctions.php | 15 ++- 2 files changed, 119 insertions(+), 6 deletions(-) create mode 100644 tests/unit/workflow/engine/classes/PmFunctions/PMFSendMessageTest.php diff --git a/tests/unit/workflow/engine/classes/PmFunctions/PMFSendMessageTest.php b/tests/unit/workflow/engine/classes/PmFunctions/PMFSendMessageTest.php new file mode 100644 index 000000000..a3ab1c3b1 --- /dev/null +++ b/tests/unit/workflow/engine/classes/PmFunctions/PMFSendMessageTest.php @@ -0,0 +1,110 @@ +create([ + 'PRO_UID' => $proUid, + 'USR_UID' => $usrUid, + 'PRF_PATH' => '/' + ]); + return $template; + } + + /** + * Create a email server configuration. + * + * @return ProcessMaker\Model\EmailServerModel; + */ + private function createEmailServer() + { + $passwordEnv = env('emailAccountPassword'); + $password = G::encrypt("hash:" . $passwordEnv, 'EMAILENCRYPT'); + $emailServer = factory(EmailServerModel::class)->create([ + 'MESS_ENGINE' => env('emailEngine'), + 'MESS_SERVER' => env('emailServer'), + 'MESS_PORT' => env('emailPort'), + 'MESS_INCOMING_SERVER' => '', + 'MESS_INCOMING_PORT' => 0, + 'MESS_RAUTH' => 1, + 'MESS_ACCOUNT' => env('emailAccount'), + 'MESS_PASSWORD' => $password, + 'MESS_FROM_MAIL' => env('emailAccount'), + 'MESS_FROM_NAME' => '', + 'SMTPSECURE' => 'ssl', + 'MESS_TRY_SEND_INMEDIATLY' => 1, + 'MAIL_TO' => $password, + 'MESS_DEFAULT' => 1, + ]); + return $emailServer; + } + + /** + * Test send a message when the case in $_SESSION['APPLICATION'] is the same + * + * @test + */ + public function it_send_message_related_to_same_case() + { + $user = factory(User::class)->create(); + $process = factory(Process::class)->create(); + $app = factory(Application::class)->create(['PRO_UID' => $process->PRO_UID]); + $template = $this->createTemplate($process->PRO_UID, $user->USR_UID); + $emailServer = $this->createEmailServer(); + // Set the same case in session + $_SESSION['APPLICATION'] = $app->APP_UID; + // Call the function + $result = PMFSendMessage($app->APP_UID, $emailServer->MESS_ACCOUNT, $emailServer->MESS_ACCOUNT, '', '', 'open case other', basename($template->PRF_PATH)); + $this->assertEquals(1, $result); + // Check if the appNumber matches + $query = AppMessage::query()->select(); + $query->where('APP_UID', $app->APP_UID); + $row = $query->get()->toArray(); + $this->assertEquals($app->APP_NUMBER, $row[0]['APP_NUMBER']); + } + /** + * Test send a message when the case in $_SESSION['APPLICATION'] is different + * + * @test + */ + public function it_send_message_related_to_different_case() + { + $user = factory(User::class)->create(); + $process = factory(Process::class)->create(); + $app = factory(Application::class)->create(['PRO_UID' => $process->PRO_UID]); + $app2 = factory(Application::class)->create(['PRO_UID' => $process->PRO_UID]); + $template = $this->createTemplate($process->PRO_UID, $user->USR_UID); + $emailServer = $this->createEmailServer(); + // Set different case in session + $_SESSION['APPLICATION'] = $app2->APP_UID; + // Call the functions + $result = PMFSendMessage($app->APP_UID, $emailServer->MESS_ACCOUNT, $emailServer->MESS_ACCOUNT, '', '', 'open case other', basename($template->PRF_PATH)); + $this->assertEquals(1, $result); + // Check if the appNumber matches + $query = AppMessage::query()->select(); + $query->where('APP_UID', $app->APP_UID); + $row = $query->get()->toArray(); + $this->assertEquals($app->APP_NUMBER, $row[0]['APP_NUMBER']); + } +} diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 49ee94616..8414b2469 100644 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -1083,11 +1083,15 @@ function PMFSendMessage( global $oPMScript; - if (isset($oPMScript->aFields) && is_array($oPMScript->aFields)) { - if (is_array($emailTemplateVariables)) { - $emailTemplateVariables = array_merge($oPMScript->aFields, $emailTemplateVariables); - } else { - $emailTemplateVariables = $oPMScript->aFields; + if (isset($_SESSION['APPLICATION'])) { + if ($caseId == $_SESSION['APPLICATION']) { + if (isset($oPMScript->aFields) && is_array($oPMScript->aFields)) { + if (is_array($emailTemplateVariables)) { + $emailTemplateVariables = array_merge($oPMScript->aFields, $emailTemplateVariables); + } else { + $emailTemplateVariables = $oPMScript->aFields; + } + } } } @@ -1112,7 +1116,6 @@ function PMFSendMessage( if ($result->status_code == 0) { return 1; } else { - error_log($result->message); return 0; } }