Merged in bugfix/PMCORE-959 (pull request #7322)

PMCORE-959

Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
Andrea Adamczyk
2020-04-23 13:53:16 +00:00
committed by Julio Cesar Laura Avendaño
11 changed files with 330 additions and 5 deletions

View File

@@ -364,6 +364,46 @@ class EmailServerTest extends TestCase
$emailServer->sendTestMail($data);
}
/**
* It test the delete method
*
* @covers \ProcessMaker\BusinessModel\EmailServer::delete()
* @test
*/
public function it_should_test_the_delete_method()
{
$email = factory(EmailServerModel::class)->create();
$emailServer = new EmailServer();
$res = $emailServer->delete($email['MESS_UID']);
$this->assertNull($res);
$this->expectExceptionMessage("**ID_EMAIL_SERVER_DOES_NOT_EXIST**");
$emailServer->getEmailServer($email['MESS_UID']);
}
/**
* It test the delete method with an IMAP email server
*
* @covers \ProcessMaker\BusinessModel\EmailServer::delete()
* @test
*/
public function it_should_test_the_delete_method_with_imap()
{
$email = factory(EmailServerModel::class)->create([
'MESS_ENGINE' => 'IMAP'
]);
$emailServer = new EmailServer();
$res = $emailServer->delete($email['MESS_UID']);
$this->assertNull($res);
$this->expectExceptionMessage("**ID_EMAIL_SERVER_DOES_NOT_EXIST**");
$emailServer->getEmailServer($email['MESS_UID']);
}
/**
* Call the tearDown method
*/

View File

@@ -2,6 +2,7 @@
namespace Tests\unit\workflow\engine\src\ProcessMaker\Model;
use EmailServer;
use ProcessMaker\Model\Application;
use ProcessMaker\Model\AbeConfiguration;
use ProcessMaker\Model\AbeRequest;
@@ -105,4 +106,82 @@ class AbeConfigurationTest extends TestCase
//Asserts the result has one record
$this->assertEmpty($res);
}
/**
* It should test the updateReceiverUidToEmpty method
*
* @covers \ProcessMaker\Model\AbeConfiguration::updateReceiverUidToEmpty()
* @test
*/
public function it_should_test_the_update_abe_configuration_receiver_uid_method()
{
$emailServer = factory(EmailServerModel::class)->create();
$abeConfigurationFactory = factory(AbeConfiguration::class)->create([
'ABE_EMAIL_SERVER_UID' => $emailServer['MESS_UID']
]);
$abeConfiguration = new AbeConfiguration();
$abeConfiguration->updateReceiverUidToEmpty($emailServer['MESS_UID']);
$query = AbeConfiguration::query()->select();
$query->where('ABE_UID', $abeConfigurationFactory['ABE_UID']);
$updatedAbe = $query->get()->values()->toArray();
$this->assertEquals($updatedAbe[0]['ABE_EMAIL_SERVER_RECEIVER_UID'], '');
}
/**
* It should test the updateEmailServerUidToDefaultOrEmpty method when there is not a default server
*
* @covers \ProcessMaker\Model\AbeConfiguration::updateEmailServerUidToDefaultOrEmpty()
* @test
*/
public function it_should_test_the_update_abe_configuration_email_server_uid_method_when_there_is_not_a_default_server()
{
EmailServerModel::query()->delete();
$emailServer = factory(EmailServerModel::class)->create();
$abeConfigurationFactory = factory(AbeConfiguration::class)->create([
'ABE_EMAIL_SERVER_UID' => $emailServer['MESS_UID']
]);
$abeConfiguration = new AbeConfiguration();
$abeConfiguration->updateEmailServerUidToDefaultOrEmpty($emailServer['MESS_UID']);
$query = AbeConfiguration::query()->select();
$query->where('ABE_UID', $abeConfigurationFactory['ABE_UID']);
$updatedAbe = $query->get()->values()->toArray();
$this->assertEquals($updatedAbe[0]['ABE_EMAIL_SERVER_UID'], '');
}
/**
* It should test the updateEmailServerUidToDefaultOrEmpty method when there is a default server
*
* @covers \ProcessMaker\Model\AbeConfiguration::updateEmailServerUidToDefaultOrEmpty()
* @test
*/
public function it_should_test_the_update_abe_configuration_email_server_uid_method_when_there_is_a_default_server()
{
EmailServerModel::query()->delete();
$emailServer = factory(EmailServerModel::class)->create();
$defaultServer = factory(EmailServerModel::class)->create([
'MESS_DEFAULT' => 1
]);
$abeConfigurationFactory = factory(AbeConfiguration::class)->create([
'ABE_EMAIL_SERVER_UID' => $emailServer['MESS_UID']
]);
$abeConfiguration = new AbeConfiguration();
$abeConfiguration->updateEmailServerUidToDefaultOrEmpty($emailServer['MESS_UID']);
$query = AbeConfiguration::query()->select();
$query->where('ABE_UID', $abeConfigurationFactory['ABE_UID']);
$updatedAbe = $query->get()->values()->toArray();
$this->assertEquals($updatedAbe[0]['ABE_EMAIL_SERVER_UID'], $defaultServer['MESS_UID']);
}
}

View File

@@ -0,0 +1,77 @@
<?php
namespace Tests\unit\workflow\engine\src\ProcessMaker\Model;
use ProcessMaker\Model\EmailEvent;
use ProcessMaker\Model\EmailServerModel;
use Tests\TestCase;
class EmailEventTest extends TestCase
{
/**
* Call the setUp parent method
*/
public function setUp()
{
parent::setUp(); // TODO: Change the autogenerated stub
}
/**
* It tests the updateServerAndFromToDefaultOrEmpty method
*
* @covers \ProcessMaker\Model\EmailEvent::updateServerAndFromToDefaultOrEmpty()
* @test
*/
public function it_should_test_the_update_event_method()
{
EmailServerModel::query()->delete();
$emailServer = factory(EmailServerModel::class)->create();
$emailEventFactory = factory(EmailEvent::class)->create([
'EMAIL_SERVER_UID' => $emailServer['MESS_UID']
]);
$emailEvent = new EmailEvent();
$emailEvent->updateServerAndFromToDefaultOrEmpty($emailServer['MESS_UID']);
$query = EmailEvent::query()->select();
$query->where('EMAIL_EVENT_UID', $emailEventFactory['EMAIL_EVENT_UID']);
$updatedEmailEvent = $query->get()->values()->toArray();
$this->assertEquals($updatedEmailEvent[0]['EMAIL_SERVER_UID'], '');
}
/**
* It tests the updateServerAndFromToDefaultOrEmpty method with a default email server
*
* @covers \ProcessMaker\Model\EmailEvent::updateServerAndFromToDefaultOrEmpty()
* @test
*/
public function it_should_test_the_update_event_method_with_a_default_email_server()
{
EmailServerModel::query()->delete();
$emailServer = factory(EmailServerModel::class)->create();
$emailServerDefault = factory(EmailServerModel::class)->create([
'MESS_DEFAULT' => 1
]);
$emailEventFactory = factory(EmailEvent::class)->create([
'EMAIL_SERVER_UID' => $emailServer['MESS_UID']
]);
$emailEvent = new EmailEvent();
$emailEvent->updateServerAndFromToDefaultOrEmpty($emailServer['MESS_UID']);
$query = EmailEvent::query()->select();
$query->where('EMAIL_EVENT_UID', $emailEventFactory['EMAIL_EVENT_UID']);
$updatedEmailEvent = $query->get()->values()->toArray();
$this->assertEquals($updatedEmailEvent[0]['EMAIL_SERVER_UID'], $emailServerDefault['MESS_UID']);
}
/**
* Call the tearDown parent method
*/
public function tearDown()
{
parent::tearDown(); // TODO: Change the autogenerated stub
}
}

View File

@@ -86,4 +86,38 @@ class EmailServerModelTest extends TestCase
//Assert the result es not empty
$this->assertNotEmpty($res);
}
/**
* It tests the isImap method when there is an IMAP server
*
* @covers \ProcessMaker\Model\EmailServerModel::isImap()
* @test
*/
public function it_should_test_the_is_imap_method_when_there_is_an_imap_server()
{
EmailServerModel::query()->delete();
$emailServer = factory(EmailServerModel::class)->create([
'MESS_ENGINE' => 'IMAP'
]);
$emailServerModel = new EmailServerModel();
$r = $emailServerModel->isImap($emailServer['MESS_UID']);
$this->assertTrue($r);
}
/**
* It tests the isImap method when there is not an IMAP server
*
* @covers \ProcessMaker\Model\EmailServerModel::isImap()
* @test
*/
public function it_should_test_the_is_imap_method_when_there_is_not_an_imap_server()
{
EmailServerModel::query()->delete();
$emailServer = factory(EmailServerModel::class)->create();
$emailServerModel = new EmailServerModel();
$r = $emailServerModel->isImap($emailServer['MESS_UID']);
$this->assertFalse($r);
}
}

File diff suppressed because one or more lines are too long

View File

@@ -7100,8 +7100,8 @@ msgstr "Delete data..."
# TRANSLATION
# LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE
#: LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE
msgid "[LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE] Do you want to delete the Email Server?"
msgstr "Do you want to delete the Email Server?"
msgid "[LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE] Are you sure you want to delete this Email Server? the components that were using it will now use the default email server."
msgstr "Are you sure you want to delete this Email Server? the components that were using it will now use the default email server."
# TRANSLATION
# LABEL/ID_EMAIL_SERVER_DOES_NOT_EXIST

View File

@@ -58003,7 +58003,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_EMAIL_SERVER_CONFIRM_DELETE','en','Do you want to delete the Email Server?','2014-12-24') ,
( 'LABEL','ID_EMAIL_SERVER_DEFAULT','en','Default','2014-12-24') ,
( 'LABEL','ID_EMAIL_SERVER_DELETE_DATA','en','Delete data...','2014-12-24') ,
( 'LABEL','ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE','en','Do you want to delete the Email Server?','2015-01-15') ,
( 'LABEL','ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE','en','Are you sure you want to delete this Email Server? the components that were using it will now use the default email server.','2015-01-15') ,
( 'LABEL','ID_EMAIL_SERVER_DOES_NOT_EXIST','en','The email server with {0}: {1} does not exist.','2014-12-24') ,
( 'LABEL','ID_EMAIL_SERVER_EDIT','en','Edit Email Server','2014-12-24') ,
( 'LABEL','ID_EMAIL_SERVER_FROM_MAIL_EMPTY','en','The email has not been sent because configuration email in the Email Server Settings (admin/settings/email) is empty. Please fill this information.','2016-03-13') ,

View File

@@ -7,6 +7,9 @@ use Exception;
use G;
use Illuminate\Support\Facades\Crypt;
use ProcessMaker\Core\System;
use ProcessMaker\Model\AbeConfiguration;
use ProcessMaker\Model\EmailEvent;
use ProcessMaker\Model\EmailServerModel;
use SpoolRun;
use TemplatePower;
use WsBase;
@@ -1071,6 +1074,11 @@ class EmailServer
public function delete($emailServerUid)
{
try {
$emailServerModel = new EmailServerModel();
//Verify if the email server is IMAP
$isImap = $emailServerModel->isImap($emailServerUid);
$abeConfiguration = new AbeConfiguration();
//Verify data
$this->throwExceptionIfNotExistsEmailServer($emailServerUid, $this->arrayFieldNameForException["emailServerUid"]);
$this->throwExceptionIfIsDefault($emailServerUid, $this->arrayFieldNameForException["emailServerUid"]);
@@ -1078,6 +1086,18 @@ class EmailServer
$criteria->add(\EmailServerPeer::MESS_UID, $emailServerUid, \Criteria::EQUAL);
\EmailServerPeer::doDelete($criteria);
//If the email server protocol is IMAP, then the field Receiver account of the Email Response option in Actions by Email will be empty.
if ($isImap) {
$abeConfiguration->updateReceiverUidToEmpty($emailServerUid);
}
//Update the ABE_CONFIGURATION email server
$abeConfiguration->updateEmailServerUidToDefaultOrEmpty($emailServerUid);
//Update the events that use this server
$emailEvent = new EmailEvent();
$emailEvent->updateServerAndFromToDefaultOrEmpty($emailServerUid);
//Logging the delete action
$this->getDefaultContextLog();
$info = array(

View File

@@ -97,4 +97,41 @@ class AbeConfiguration extends model
return $res;
}
/**
* Update the Receiver Uid when the email server is deleted
*
* @param string $emailServerUid
* @return void
*/
public function updateReceiverUidToEmpty($emailServerUid)
{
$query = AbeConfiguration::query();
$query->where('ABE_EMAIL_SERVER_RECEIVER_UID', '=', $emailServerUid);
$query->update(['ABE_EMAIL_SERVER_RECEIVER_UID' => '']);
}
/**
* Update the Email Server Uid when the email server is deleted
*
* @param string $emailServerUid
* @return void
*/
public function updateEmailServerUidToDefaultOrEmpty($emailServerUid)
{
$emailServerModel = new EmailServerModel();
$emailServerDefault = $emailServerModel->getEmailServerDefault();
$query = AbeConfiguration::query();
$query->where('ABE_EMAIL_SERVER_UID', '=', $emailServerUid);
if (!empty($emailServerDefault)) {
$query->update(['ABE_EMAIL_SERVER_UID' => $emailServerDefault['MESS_UID']]);
} else {
$query->update(['ABE_EMAIL_SERVER_UID' => '']);
}
}
}

View File

@@ -3,11 +3,31 @@
namespace ProcessMaker\Model;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use ProcessMaker\Model\EmailServerModel;
class EmailEvent extends Model
{
protected $table = 'EMAIL_EVENT';
public $timestamps = false;
/**
* Update the email event when the email server is deleted
*
* @param $emailServerUid
* @return void
*/
public function updateServerAndFromToDefaultOrEmpty($emailServerUid)
{
$emailServerModel = new EmailServerModel();
$emailServerDefault = $emailServerModel->getEmailServerDefault();
$query = EmailEvent::query();
$query->where('EMAIL_SERVER_UID', '=', $emailServerUid);
if (!empty($emailServerDefault)) {
$query->update(['EMAIL_SERVER_UID' => $emailServerDefault['MESS_UID'], 'EMAIL_EVENT_FROM' => $emailServerDefault['MESS_ACCOUNT']]);
} else {
$query->update(['EMAIL_SERVER_UID' => '', 'EMAIL_EVENT_FROM' => '']);
}
}
}

View File

@@ -103,4 +103,22 @@ class EmailServerModel extends Model
return $firstElement;
}
/**
* Check if the email server is IMAP
*
* @param string $emailServerUid
* @return boolean
*/
public function isImap($emailServerUid)
{
$query = EmailServerModel::query()->select(['EMAIL_SERVER.MESS_UID']);
$query->where('EMAIL_SERVER.MESS_UID', '=', $emailServerUid);
$query->where('MESS_ENGINE', '=', 'IMAP');
$res = $query->get()->values()->toArray();
if (!empty($res)) {
return true;
}
return false;
}
}