Files
luos/tests/unit/workflow/engine/methods/emailServer/EmailServerAjaxTest.php

209 lines
6.1 KiB
PHP
Raw Normal View History

<?php
namespace Tests\unit\workflow\engine\methods\emailServer;
use Faker\Factory;
use ProcessMaker\Model\EmailServerModel;
use ProcessMaker\Model\User;
use RBAC;
use Tests\TestCase;
class EmailServerAjaxTest extends TestCase
{
/**
* This set initial parameters for each test.
*/
public function setUp()
{
parent::setUp();
$this->settingUserLogged();
}
/**
* This starts a valid user in session with the appropriate permissions.
* @global object $RBAC
*/
private function settingUserLogged()
{
global $RBAC;
$user = User::where('USR_ID', '=', 1)
->get()
->first();
$_SESSION['USER_LOGGED'] = $user['USR_UID'];
$RBAC = RBAC::getSingleton(PATH_DATA, session_id());
$RBAC->initRBAC();
$RBAC->loadUserRolePermission('PROCESSMAKER', $_SESSION['USER_LOGGED']);
}
/**
* This allows multiple calls to the require_once statement, use the original
* content by creating several documents in the temporary folder.
* @global object $RBAC
* @return string
*/
private function requireOnceForEmailServerAjax(): string
{
$fileName = PATH_METHODS . 'emailServer/emailServerAjax.php';
$tempFile = tempnam(sys_get_temp_dir(), basename($fileName, '.php'));
if ($tempFile !== false) {
file_put_contents($tempFile, file_get_contents($fileName));
global $RBAC;
$RBAC->authorizedActions[basename($tempFile)] = [
'INS' => ['PM_SETUP'],
'UPD' => ['PM_SETUP'],
'DEL' => ['PM_SETUP'],
'LST' => ['PM_SETUP'],
'TEST' => ['PM_SETUP'],
'createAuthUrl' => ['PM_SETUP']
];
ob_start();
require_once $tempFile;
return ob_get_clean();
}
return "";
}
/**
* This tests the createAuthUrl option at the endpoint emailServerAjax.php.
* @test
*/
public function it_should_verify_the_option_create_auth_url()
{
$faker = Factory::create();
$post = [
'option' => 'createAuthUrl',
'clientID' => $faker->regexify('[0-9]{12}\-[a-zA-Z]{20}'),
'clientSecret' => $faker->regexify('[a-zA-Z]{10}'),
'emailEngine' => 'GMAILAPI',
'fromAccount' => $faker->email,
'senderEmail' => $faker->email,
'senderName' => $faker->name,
'sendTestMail' => 1,
'mailTo' => $faker->email,
'setDefaultConfiguration' => 1
];
$_POST = array_merge($_POST, $post);
$content = $this->requireOnceForEmailServerAjax();
$data = json_decode($content, JSON_OBJECT_AS_ARRAY);
$this->assertContains(200, $data);
}
/**
* This tests the INS option at the endpoint emailServerAjax.php.
* @test
*/
public function it_should_verify_the_option_ins()
{
$faker = Factory::create();
$post = [
'option' => 'INS',
'cboEmailEngine' => 'PHPMAILER',
'server' => 'smtp.gmail.com',
'port' => '465',
'incomingServer' => '',
'incomingPort' => '',
'reqAuthentication' => 1,
'accountFrom' => $faker->email,
'password' => $faker->password,
'fromMail' => $faker->email,
'fromName' => $faker->name,
'smtpSecure' => 'ssl',
'sendTestMail' => 1,
'mailTo' => $faker->email,
'emailServerDefault' => 1,
];
$_POST = array_merge($_POST, $post);
$content = $this->requireOnceForEmailServerAjax();
$data = json_decode($content, JSON_OBJECT_AS_ARRAY);
$this->assertContains("OK", $data);
}
/**
* This tests the UPD option at the endpoint emailServerAjax.php.
* @test
*/
public function it_should_verify_the_option_upd()
{
$faker = Factory::create();
$emailServer = factory(EmailServerModel::class)->create([
'MESS_ENGINE' => 'PHPMAILER',
]);
$post = [
'option' => 'UPD',
'emailServerUid' => $emailServer->MESS_UID,
'cboEmailEngine' => 'PHPMAILER',
'server' => 'smtp.gmail.com',
'port' => '465',
'incomingServer' => '',
'incomingPort' => '',
'reqAuthentication' => 1,
'accountFrom' => $faker->email,
'password' => $faker->password,
'fromMail' => $faker->email,
'fromName' => $faker->name,
'smtpSecure' => 'ssl',
'sendTestMail' => 1,
'mailTo' => $faker->email,
'emailServerDefault' => 1,
];
$_POST = array_merge($_POST, $post);
$content = $this->requireOnceForEmailServerAjax();
$data = json_decode($content, JSON_OBJECT_AS_ARRAY);
$this->assertContains("OK", $data);
}
/**
* This tests the DEL option at the endpoint emailServerAjax.php.
* @test
*/
public function it_should_verify_the_option_del()
{
$emailServer = factory(EmailServerModel::class)->create([
'MESS_ENGINE' => 'PHPMAILER',
]);
$post = [
'option' => 'DEL',
'emailServerUid' => $emailServer->MESS_UID
];
$_POST = array_merge($_POST, $post);
$content = $this->requireOnceForEmailServerAjax();
$data = json_decode($content, JSON_OBJECT_AS_ARRAY);
$this->assertContains("OK", $data);
}
/**
* This tests the LST option at the endpoint emailServerAjax.php.
* @test
*/
public function it_should_verify_the_option_lst()
{
$post = [
'option' => 'LST',
'pageSize' => 25,
'search' => ''
];
$_POST = array_merge($_POST, $post);
$content = $this->requireOnceForEmailServerAjax();
$data = json_decode($content, JSON_OBJECT_AS_ARRAY);
$this->assertContains("OK", $data);
$this->assertTrue(isset($data["resultRoot"]));
$this->assertTrue(is_array($data["resultRoot"]));
}
}