Add tests

This commit is contained in:
Dennis Eichhorn 2020-03-14 13:59:03 +01:00
parent 5b8b59a1f8
commit 3f9e1029c8
16 changed files with 1468 additions and 0 deletions

26
tests/Admin/AdminTest.php Normal file
View File

@ -0,0 +1,26 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Admin;
/**
* @internal
*/
class AdminTest extends \PHPUnit\Framework\TestCase
{
protected const MODULE_NAME = 'Admin';
protected const URI_LOAD = 'http://127.0.0.1/en/backend/admin';
use \Modules\tests\ModuleTestTrait;
}

View File

@ -0,0 +1,166 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Controller\Api;
use phpOMS\Account\AccountStatus;
use phpOMS\Account\AccountType;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Uri\HttpUri;
trait ApiControllerAccountTrait
{
/**
* @testdox A user can be returned
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountGet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', '1');
$this->module->apiAccountGet($request, $response);
self::assertEquals('admin', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A user can be updated
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountUpdate() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', 1);
$request->setData('email', 'oms@orange-management.de');
$this->module->apiAccountUpdate($request, $response);
$this->module->apiAccountGet($request, $response);
self::assertEquals('oms@orange-management.de', $response->get('')['response']->getEmail());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A user can be found by name
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountFind() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('search', 'admin');
$this->module->apiAccountFind($request, $response);
self::assertCount(1, $response->get(''));
self::assertEquals('admin', $response->get('')[0]->getName1());
}
/**
* @testdox A user and profile for the user can be created
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountAndProfileCreate() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('login', 'guest');
$request->setData('password', 'guest');
$request->setData('name1', 'Guest');
$request->setData('email', 'test@email.com');
$request->setData('type', AccountType::USER);
$request->setData('status', AccountStatus::INACTIVE);
$this->module->apiAccountCreate($request, $response);
self::assertEquals('guest', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A user can be deleted
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountDelete() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
// mustn't create a profile otherwise it will not be possible to delete the account because of FK constraints
$request->setData('name1', 'Guest');
$request->setData('email', 'test@email.com');
$request->setData('type', AccountType::USER);
$request->setData('status', AccountStatus::INACTIVE);
$this->module->apiAccountCreate($request, $response);
$request->setData('id', $response->get('')['response']->getId());
$this->module->apiAccountDelete($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A invalid user cannot be created
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountCreateInvalid() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('status', 999);
$request->setData('description', 'test description');
$this->module->apiAccountCreate($request, $response);
self::assertEquals('validation', $response->get('account_create')::TYPE);
}
/**
* @testdox A user group can be added to a user
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddGroupToAccount() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('account', 1);
$request->setData('igroup-idlist', '1');
$this->module->apiAddGroupToAccount($request, $response);
self::assertEquals('ok', $response->get('')['status']);
}
}

View File

@ -0,0 +1,165 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Controller\Api;
use phpOMS\Account\GroupStatus;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Uri\HttpUri;
trait ApiControllerGroupTrait
{
/**
* @testdox A user group can be returned
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiGroupGet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', '3');
$this->module->apiGroupGet($request, $response);
self::assertEquals('admin', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A user group can be updated
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiGroupSet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', '3');
$request->setData('name', 'root');
$this->module->apiGroupUpdate($request, $response);
$this->module->apiGroupGet($request, $response);
self::assertEquals('root', $response->get('')['response']->getName());
$request->setData('name', 'admin', true);
$this->module->apiGroupUpdate($request, $response);
}
/**
* @testdox A user group can be found by name
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiGroupFind() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('search', 'admin');
$this->module->apiGroupFind($request, $response);
self::assertCount(1, $response->get(''));
self::assertEquals('admin', $response->get('')[0]->getName());
}
/**
* @testdox A user group can be created and deleted
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiGroupCreateDelete() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('name', 'test');
$request->setData('status', GroupStatus::INACTIVE);
$request->setData('description', 'test description');
$this->module->apiGroupCreate($request, $response);
self::assertEquals('test', $response->get('')['response']->getName());
self::assertGreaterThan(0, $response->get('')['response']->getId());
// test delete
$request->setData('id', $response->get('')['response']->getId());
$this->module->apiGroupDelete($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A invalid user group cannot be created
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiGroupCreateInvalid() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('status', 999);
$request->setData('description', 'test description');
$this->module->apiGroupCreate($request, $response);
self::assertEquals('validation', $response->get('group_create')::TYPE);
}
/**
* @testdox A user can be added to a user group
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddAccountToGroup() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('group', 1);
$request->setData('iaccount-idlist', '1');
$this->module->apiAddAccountToGroup($request, $response);
self::assertEquals('ok', $response->get('')['status']);
}
/**
* @testdox A user and user group can be found by name
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountGroupFind() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('search', 'admin');
$this->module->apiAccountGroupFind($request, $response);
self::assertCount(2, $response->get(''));
self::assertEquals('admin', $response->get('')[0]['name'][0] ?? '');
self::assertEquals('admin', $response->get('')[1]['name'][0] ?? '');
}
}

View File

@ -0,0 +1,131 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Controller\Api;
use Modules\Admin\Models\ModuleStatusUpdateType;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Uri\HttpUri;
trait ApiControllerModuleTrait
{
/**
* @testdox The status of a module can be updated
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiModuleStatusUpdate() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('module', 'TestModule');
$request->setData('status', ModuleStatusUpdateType::INSTALL);
$this->module->apiModuleStatusUpdate($request, $response);
self::assertEquals('ok', $response->get('')['status']);
$request->setData('status', ModuleStatusUpdateType::ACTIVATE, true);
$this->module->apiModuleStatusUpdate($request, $response);
self::assertEquals('ok', $response->get('')['status']);
$request->setData('status', ModuleStatusUpdateType::DEACTIVATE, true);
$this->module->apiModuleStatusUpdate($request, $response);
self::assertEquals('ok', $response->get('')['status']);
$request->setData('status', ModuleStatusUpdateType::UNINSTALL, true);
$this->module->apiModuleStatusUpdate($request, $response);
self::assertEquals('ok', $response->get('')['status']);
}
/**
* @testdox A missing module cannot be updated
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiModuleStatusUpdateEmptyModule() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('status', ModuleStatusUpdateType::INSTALL);
$this->module->apiModuleStatusUpdate($request, $response);
self::assertNull($response->get('module_stutus_update'));
}
/**
* @testdox A invalid module status cannot update a module
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiModuleStatusUpdateInvalidStatus() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('module', 'TestModule');
$request->setData('status', 99);
$this->module->apiModuleStatusUpdate($request, $response);
self::assertEquals('warning', $response->get('')['status']);
}
/**
* @testdox A invalid module cannot be updated
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiModuleStatusUpdateInvalidModule() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('module', 'invalid');
$request->setData('status', ModuleStatusUpdateType::INSTALL);
$this->module->apiModuleStatusUpdate($request, $response);
self::assertEquals('warning', $response->get('')['status']);
}
/**
* @testdox A module can be re-initialized
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiReInit() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$routes = include __DIR__ . '/../../../../../Web/Api/Routes.php';
$hooks = include __DIR__ . '/../../../../../Web/Api/Hooks.php';
$this->module->apiReInit($request, $response);
$routes2 = include __DIR__ . '/../../../../../Web/Api/Routes.php';
$hooks2 = include __DIR__ . '/../../../../../Web/Api/Hooks.php';
self::assertEquals($routes, $routes2);
self::assertEquals($hooks, $hooks2);
}
}

View File

@ -0,0 +1,267 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Controller\Api;
use phpOMS\Account\PermissionOwner;
use phpOMS\Account\PermissionType;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Uri\HttpUri;
trait ApiControllerPermissionTrait
{
/**
* @testdox A permission can be added to a user group
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddGroupPermission() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('permissionowner', PermissionOwner::GROUP);
$request->setData('permissionref', 1);
$this->module->apiAddGroupPermission($request, $response);
self::assertEquals('ok', $response->get('')['status']);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A group permission can be returned
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiGroupPermissionGet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', '2');
$this->module->apiGroupPermissionGet($request, $response);
self::assertEquals(1, $response->get('')['response']->getGroup());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A user group permission can be created and deleted
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiGroupPermissionCreateDelete() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('permissionowner', PermissionOwner::GROUP);
$request->setData('permissionref', 1);
$this->module->apiAddGroupPermission($request, $response);
self::assertEquals('ok', $response->get('')['status']);
self::assertGreaterThan(0, $response->get('')['response']->getId());
// test delete
$request->setData('id', $response->get('')['response']->getId());
$this->module->apiGroupPermissionDelete($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A permission with missing data cannot be added to a user group
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddGroupPermissionInvalidData() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('permissionowner', PermissionOwner::GROUP);
$this->module->apiAddGroupPermission($request, $response);
self::assertEquals('validation', $response->get('permission_create')::TYPE);
}
/**
* @testdox A invalid permission type cannot be added to a user group
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddGroupPermissionInvalidType() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('permissionowner', PermissionOwner::ACCOUNT);
$request->setData('permissionref', 1);
$this->module->apiAddGroupPermission($request, $response);
self::assertEquals('validation', $response->get('permission_create')::TYPE);
}
/**
* @testdox A user group permission can be updated
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiGroupPermissionUpdate() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', 1);
$request->setData('permissionread', PermissionType::READ);
$this->module->apiGroupPermissionUpdate($request, $response);
self::assertEquals(PermissionType::READ, $response->get('')['response']->getPermission());
self::assertGreaterThan(0, $response->get('')['response']->getId());
$request->setData('permissioncreate', PermissionType::CREATE);
$request->setData('permissionupdate', PermissionType::MODIFY);
$request->setData('permissiondelete', PermissionType::DELETE);
$request->setData('permissionpermission', PermissionType::PERMISSION);
$this->module->apiGroupPermissionUpdate($request, $response);
}
/**
* @testdox A permission can be added to a user
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddAccountPermission() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('permissionowner', PermissionOwner::ACCOUNT);
$request->setData('permissionref', 1);
$this->module->apiAddAccountPermission($request, $response);
self::assertEquals('ok', $response->get('')['status']);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A user permission can be returned
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountPermissionGet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', '1');
$this->module->apiAccountPermissionGet($request, $response);
self::assertEquals(1, $response->get('')['response']->getAccount());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A user permission can be created and deleted
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountPermissionCreateDelete() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('permissionowner', PermissionOwner::ACCOUNT);
$request->setData('permissionref', 1);
$this->module->apiAddAccountPermission($request, $response);
self::assertEquals('ok', $response->get('')['status']);
self::assertGreaterThan(0, $response->get('')['response']->getId());
// test delete
$request->setData('id', $response->get('')['response']->getId());
$this->module->apiAccountPermissionDelete($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A permission with missing data cannot be added to a user
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddAccountPermissionInvalidData() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('permissionowner', PermissionOwner::ACCOUNT);
$this->module->apiAddAccountPermission($request, $response);
self::assertEquals('validation', $response->get('permission_create')::TYPE);
}
/**
* @testdox A invalid permission type cannot be added to a user
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddAccountPermissionInvalidType() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('permissionowner', PermissionOwner::GROUP);
$request->setData('permissionref', 1);
$this->module->apiAddAccountPermission($request, $response);
self::assertEquals('validation', $response->get('permission_create')::TYPE);
}
/**
* @testdox A user permission can be updated
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountPermissionUpdate() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('id', 1);
$request->setData('permissionread', PermissionType::READ);
$this->module->apiAccountPermissionUpdate($request, $response);
self::assertEquals(PermissionType::READ, $response->get('')['response']->getPermission());
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
}

View File

@ -0,0 +1,58 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Controller\Api;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Uri\HttpUri;
trait ApiControllerSettingsTrait
{
/**
* @testdox Application settings can be read from the database
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiSettingsGet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('name', '1000000019');
$this->module->apiSettingsGet($request, $response);
self::assertEquals('DE', $response->get('')['response']);
}
/**
* @testdox Application settings can be set in the database
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiSettingsSet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->getHeader()->setAccount(1);
$request->setData('settings', \json_encode([['name' => '1000000019', 'content' => 'US']]));
$this->module->apiSettingsSet($request, $response);
$request->setData('name', '1000000019');
$this->module->apiSettingsGet($request, $response);
self::assertEquals('US', $response->get('')['response']);
}
}

View File

@ -0,0 +1,96 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Controller;
require_once __DIR__ . '/../../Autoloader.php';
use Model\CoreSettings;
use Modules\Admin\Models\AccountPermission;
use Modules\tests\Admin\Controller\Api\ApiControllerAccountTrait;
use Modules\tests\Admin\Controller\Api\ApiControllerGroupTrait;
use Modules\tests\Admin\Controller\Api\ApiControllerModuleTrait;
use Modules\tests\Admin\Controller\Api\ApiControllerPermissionTrait;
use Modules\tests\Admin\Controller\Api\ApiControllerSettingsTrait;
use phpOMS\Account\Account;
use phpOMS\Account\AccountManager;
use phpOMS\Account\PermissionType;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Dispatcher\Dispatcher;
use phpOMS\Event\EventManager;
use phpOMS\Module\ModuleAbstract;
use phpOMS\Module\ModuleManager;
use phpOMS\Router\WebRouter;
use phpOMS\Utils\TestUtils;
/**
* @testdox Modules\tests\Admin\Controller\ApiControllerTest: Admin api controller
*
* @internal
*/
class ApiControllerTest extends \PHPUnit\Framework\TestCase
{
protected ApplicationAbstract $app;
protected ModuleAbstract $module;
protected function setUp() : void
{
$this->app = new class() extends ApplicationAbstract
{
protected string $appName = 'Api';
};
$this->app->dbPool = $GLOBALS['dbpool'];
$this->app->orgId = 1;
$this->app->appName = 'Backend';
$this->app->accountManager = new AccountManager($GLOBALS['session']);
$this->app->appSettings = new CoreSettings($this->app->dbPool->get());
$this->app->moduleManager = new ModuleManager($this->app, __DIR__ . '/../../../../Modules');
$this->app->dispatcher = new Dispatcher($this->app);
$this->app->eventManager = new EventManager($this->app->dispatcher);
$this->app->eventManager->importFromFile(__DIR__ . '/../../../../Web/Api/Hooks.php');
$account = new Account();
TestUtils::setMember($account, 'id', 1);
$permission = new AccountPermission();
$permission->setUnit(1);
$permission->setApp('backend');
$permission->setPermission(
PermissionType::READ
| PermissionType::CREATE
| PermissionType::MODIFY
| PermissionType::DELETE
| PermissionType::PERMISSION
);
$account->addPermission($permission);
$this->app->accountManager->add($account);
$this->app->router = new WebRouter();
$this->module = $this->app->moduleManager->get('Admin');
TestUtils::setMember($this->module, 'app', $this->app);
}
use ApiControllerSettingsTrait;
use ApiControllerAccountTrait;
use ApiControllerGroupTrait;
use ApiControllerPermissionTrait;
use ApiControllerModuleTrait;
}

View File

@ -0,0 +1,103 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Models;
use Modules\Admin\Models\Account;
use Modules\Admin\Models\AccountMapper;
use phpOMS\Account\AccountStatus;
use phpOMS\Account\AccountType;
use phpOMS\Auth\LoginReturnType;
/**
* @testdox Modules\tests\Admin\Models\LocalizationMapperTest: Account database mapper
*
* @internal
*/
class AccountMapperTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox The model can be created and read from the database
* @covers Modules\Admin\Models\AccountMapper
* @group module
*/
public function testCR() : void
{
$account = new Account();
$account->setName('TestLogin');
$account->setName1('Donald');
$account->setName2('Fauntleroy');
$account->setName3('Duck');
$account->setLoginTries(3);
$account->setEmail('d.duck@duckburg.com');
$account->setStatus(AccountStatus::ACTIVE);
$account->setType(AccountType::USER);
$id = AccountMapper::create($account);
self::assertGreaterThan(0, $account->getId());
self::assertEquals($id, $account->getId());
$accountR = AccountMapper::get($account->getId());
self::assertEquals($account->getCreatedAt()->format('Y-m-d'), $accountR->getCreatedAt()->format('Y-m-d'));
self::assertEquals($account->getName(), $accountR->getName());
self::assertEquals($account->getName1(), $accountR->getName1());
self::assertEquals($account->getName2(), $accountR->getName2());
self::assertEquals($account->getName3(), $accountR->getName3());
self::assertEquals($account->getStatus(), $accountR->getStatus());
self::assertEquals($account->getType(), $accountR->getType());
self::assertEquals($account->getEmail(), $accountR->getEmail());
self::assertEquals($account->getLoginTries(), $accountR->getLoginTries());
}
/**
* @testdox A empty user password results in a failed login
* @covers Modules\Admin\Models\AccountMapper
* @group module
*/
public function testEmptyPasswordLogin() : void
{
self::assertEquals(LoginReturnType::WRONG_PASSWORD, AccountMapper::login('admin', ''));
}
/**
* @testdox A invalid user password results in a failed login
* @covers Modules\Admin\Models\AccountMapper
* @group module
*/
public function testInvalidPasswordLogin() : void
{
self::assertEquals(LoginReturnType::WRONG_PASSWORD, AccountMapper::login('admin', 'invalid'));
}
/**
* @testdox A invalid user name results in a failed login
* @covers Modules\Admin\Models\AccountMapper
* @group module
*/
public function testInvalidUsernameLogin() : void
{
self::assertEquals(LoginReturnType::WRONG_USERNAME, AccountMapper::login('zzzzInvalidTestzzz', 'orange'));
}
/**
* @testdox A valid user name and password results in a successful login
* @covers Modules\Admin\Models\AccountMapper
* @group module
*/
public function testValidLogin() : void
{
self::assertGreaterThan(0, AccountMapper::login('admin', 'orange'));
}
}

View File

@ -0,0 +1,36 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Models;
use Modules\Admin\Models\AccountPermission;
/**
* @testdox Modules\tests\Admin\Models\AccountPermissionTest: Account permission
*
* @internal
*/
class AccountPermissionTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox The account permission has the expected default values after initialization
* @covers Modules\Admin\Models\AccountPermission
* @group module
*/
public function testDefault() : void
{
$account = new AccountPermission();
self::assertEquals(0, $account->getAccount());
}
}

View File

@ -0,0 +1,49 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Models;
use Modules\Admin\Models\Account;
/**
* @testdox Modules\tests\Admin\Models\AccountTest: Account model
*
* @internal
*/
class AccountTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox The account has the expected default values after initialization
* @covers Modules\Admin\Models\Account
* @group module
*/
public function testDefault() : void
{
$account = new Account();
self::assertEquals(0, $account->getLoginTries());
}
/**
* @testdox The login tries can be set and returned
* @covers Modules\Admin\Models\Account
* @group module
*/
public function testLoginTriesInputOutput() : void
{
$account = new Account();
$account->setLoginTries(3);
self::assertEquals(3, $account->getLoginTries());
}
}

View File

@ -0,0 +1,53 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Models;
use Modules\Admin\Models\Group;
use Modules\Admin\Models\GroupMapper;
use Modules\Admin\Models\GroupPermission;
use Modules\Admin\Models\GroupPermissionMapper;
/**
* @testdox Modules\tests\Admin\Models\GroupMapperTest: Group mapper
*
* @internal
*/
class GroupMapperTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox All groups which have permissions for a module can be returned
* @covers Modules\Admin\Models\GroupMapper
* @group module
*/
public function testGroupPermissionForModule() : void
{
$group = new Group('test');
$groupId = GroupMapper::create($group);
$permission = new GroupPermission($groupId, null, null, 'Admin');
GroupPermissionMapper::create($permission);
$permissions = GroupMapper::getPermissionForModule('Admin');
foreach ($permissions as $p) {
if ($p->getId() === $groupId) {
self::assertTrue(true);
return;
}
}
self::assertTrue(false);
}
}

View File

@ -0,0 +1,36 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Models;
use Modules\Admin\Models\GroupPermission;
/**
* @testdox Modules\tests\Admin\Models\GroupPermissionTest: Group permission
*
* @internal
*/
class GroupPermissionTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox The group permission has the expected default values after initialization
* @covers Modules\Admin\Models\GroupPermission
* @group module
*/
public function testDefault() : void
{
$group = new GroupPermission();
self::assertEquals(0, $group->getGroup());
}
}

View File

@ -0,0 +1,66 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Models;
use Modules\Admin\Models\Group;
use Modules\Admin\Models\NullAccount;
/**
* @testdox Modules\tests\Admin\Models\GroupTest: Group model
*
* @internal
*/
class GroupTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox The group has the expected default values after initialization
* @covers Modules\Admin\Models\Group
* @group module
*/
public function testDefault() : void
{
$group = new Group();
self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $group->getCreatedAt()->format('Y-m-d'));
self::assertEquals(0, $group->getCreatedBy()->getId());
self::assertEquals('', $group->getDescriptionRaw());
self::assertEquals([], $group->getAccounts());
}
/**
* @testdox The description can be set and returned
* @covers Modules\Admin\Models\Group
* @group module
*/
public function testDescriptionInputOutput() : void
{
$group = new Group();
$group->setDescriptionRaw('Some test');
self::assertEquals('Some test', $group->getDescriptionRaw());
}
/**
* @testdox The creator can be set and returned
* @covers Modules\Admin\Models\Group
* @group module
*/
public function testCreatorInputOutput() : void
{
$group = new Group();
$group->setCreatedBy(new NullAccount(3));
self::assertEquals(3, $group->getCreatedBy()->getId());
}
}

View File

@ -0,0 +1,44 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Models;
use Modules\Admin\Models\LocalizationMapper;
use phpOMS\Localization\Localization;
/**
* @testdox Modules\tests\Admin\Models\LocalizationMapperTest: Localization database mapper
*
* @internal
*/
class LocalizationMapperTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox The model can be created and read from the database
* @covers Modules\Admin\Models\LocalizationMapper
* @group module
*/
public function testCR() : void
{
$localization = Localization::fromJson(
\json_decode(\file_get_contents(__DIR__ . '/om_OMS.json'), true)
);
$id = LocalizationMapper::create($localization);
$localizationRemote = LocalizationMapper::get($id);
self::assertEquals('fahrenheit', $localizationRemote->getTemperature());
self::assertEquals($localization->jsonSerialize(), $localizationRemote->jsonSerialize());
}
}

105
tests/Models/ModuleTest.php Normal file
View File

@ -0,0 +1,105 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Admin\Models;
use Modules\Admin\Models\Module;
use phpOMS\Module\ModuleStatus;
/**
* @testdox Modules\tests\Admin\Models\ModuleTest: Module container
*
* @internal
*/
class ModuleTest extends \PHPUnit\Framework\TestCase
{
protected Module $module;
protected function setUp() : void
{
$this->module = new Module();
}
/**
* @testdox The module has the expected default values after initialization
* @covers Modules\Admin\Models\Module
* @group module
*/
public function testDefault() : void
{
self::assertEquals(0, $this->module->getId());
self::assertInstanceOf('\DateTime', $this->module->getCreatedAt());
self::assertEquals('', $this->module->getName());
self::assertEquals('', $this->module->getDescription());
self::assertEquals(ModuleStatus::INACTIVE, $this->module->getStatus());
self::assertEquals(\json_encode($this->module->jsonSerialize()), $this->module->__toString());
self::assertEquals($this->module->jsonSerialize(), $this->module->toArray());
}
/**
* @testdox The name can be set and returned
* @covers Modules\Admin\Models\Module
* @group module
*/
public function testNameInputOutput() : void
{
$this->module->setName('Name');
self::assertEquals('Name', $this->module->getName());
}
/**
* @testdox The description can be set and returned
* @covers Modules\Admin\Models\Module
* @group module
*/
public function testDescriptionInputOutput() : void
{
$this->module->setDescription('Desc');
self::assertEquals('Desc', $this->module->getDescription());
}
/**
* @testdox The status can be set and returned
* @covers Modules\Admin\Models\Module
* @group module
*/
public function testStatusInputOutput() : void
{
$this->module->setStatus(ModuleStatus::ACTIVE);
self::assertEquals(ModuleStatus::ACTIVE, $this->module->getStatus());
}
/**
* @testdox The module can be serialized
* @covers Modules\Admin\Models\Module
* @group module
*/
public function testSerializations() : void
{
self::assertEquals(\json_encode($this->module->jsonSerialize()), $this->module->__toString());
self::assertEquals($this->module->jsonSerialize(), $this->module->toArray());
}
/**
* @testdox A invalid status throws a InvalidEnumValue exception
* @covers Modules\Admin\Models\Module
* @group module
*/
public function testInvalidStatus() : void
{
self::expectException(\phpOMS\Stdlib\Base\Exception\InvalidEnumValue::class);
$this->module->setStatus(9999);
}
}

67
tests/Models/om_OMS.json Normal file
View File

@ -0,0 +1,67 @@
{
"language": "en",
"country": "US",
"currency": {
"code": "USD",
"position": 0,
"format": "1"
},
"thousand": ",",
"decimal": ".",
"angle": "deg",
"temperature": "fahrenheit",
"weight": {
"very_light": "mg",
"light": "g",
"medium": "kg",
"heavy": "t",
"very_heavy": "t"
},
"speed": {
"very_slow": "mps",
"slow": "ms",
"medium": "kph",
"fast": "kph",
"very_fast": "management",
"sea": "knot"
},
"length": {
"very_short": "micron",
"short": "mm",
"medium": "cm",
"long": "m",
"very_long": "km",
"sea": "mile"
},
"area": {
"very_small": "micron",
"small": "mm",
"medium": "cm",
"large": "m",
"very_large": "orange"
},
"volume": {
"very_small": "mul",
"small": "ml",
"medium": "l",
"large": "cm",
"very_large": "m",
"teaspoon": "Metric tsp",
"tablespoon": "Metric tblsp",
"glass": "Metric cup"
},
"datetime": {
"very_short": "d.m",
"short": "m.y",
"medium": "Y.m.d",
"long": "Y.m.d h:i",
"very_long": "Y.m.d h:i:s"
},
"precision": {
"very_short": 0,
"short": 1,
"medium": 2,
"long": 3,
"very_long": 5
}
}