more tests and make classes final

This commit is contained in:
Dennis Eichhorn 2021-10-21 22:16:05 +02:00
parent 4999aa7d5e
commit 9b4b187dd1
19 changed files with 756 additions and 17 deletions

View File

@ -1,5 +1,4 @@
<?php
/**
* Orange Management
*
@ -11,7 +10,6 @@
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Admin\Controller;

View File

@ -14,6 +14,7 @@ declare(strict_types=1);
namespace Modules\Admin\tests\Controller\Api;
use phpOMS\Account\GroupStatus;
use phpOMS\Account\AccountStatus;
use phpOMS\Account\AccountType;
use phpOMS\Message\Http\HttpRequest;
@ -177,7 +178,7 @@ trait ApiControllerAccountTrait
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddGroupToAccount() : void
public function testApiAddRemoveGroupToAccount() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
@ -188,5 +189,79 @@ trait ApiControllerAccountTrait
$this->module->apiAddGroupToAccount($request, $response);
self::assertEquals('ok', $response->get('')['status']);
// remove
$response = new HttpResponse();
$this->module->apiDeleteGroupFromAccount($request, $response);
self::assertEquals('ok', $response->get('')['status']);
}
/**
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiRemoveAdminGroupFromOneselfAccount() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('account', 1);
$request->setData('igroup-idlist', '3');
$this->module->apiDeleteGroupFromAccount($request, $response);
self::assertEquals('error', $response->get('')['status']);
}
/**
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountLogin() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('user', 'admin');
$request->setData('pass', 'orange');
$this->module->apiLogin($request, $response);
self::assertInstanceOf('\phpOMS\Model\Message\Reload', $response->get(''));
}
/**
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountLoginInvalid() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('user', 'admin');
$request->setData('pass', 'invalid');
$this->module->apiLogin($request, $response);
self::assertInstanceOf('\phpOMS\Model\Message\Notify', $response->get(''));
}
/**
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAccountLogout() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('user', 'admin');
$request->setData('pass', 'invalid');
$this->module->apiLogout($request, $response);
self::assertEquals('ok', $response->get('')['status']);
}
}

View File

@ -109,6 +109,23 @@ trait ApiControllerGroupTrait
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A user group can be created and deleted
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiGroupDeleteAdminInvalid() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('id', '3');
$this->module->apiGroupDelete($request, $response);
self::assertEquals('error', $response->get('')['status']);
}
/**
* @testdox A invalid user group cannot be created
* @covers Modules\Admin\Controller\ApiController
@ -132,7 +149,7 @@ trait ApiControllerGroupTrait
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddAccountToGroup() : void
public function testApiAddRemoveAccountToGroup() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
@ -143,6 +160,29 @@ trait ApiControllerGroupTrait
$this->module->apiAddAccountToGroup($request, $response);
self::assertEquals('ok', $response->get('')['status']);
// remove
$response = new HttpResponse();
$this->module->apiDeleteAccountFromGroup($request, $response);
self::assertEquals('ok', $response->get('')['status']);
}
/**
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiRemoveAdminAccountFromAdminGroup() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('group', 3);
$request->setData('iaccount-idlist', '1');
$this->module->apiDeleteAccountFromGroup($request, $response);
self::assertEquals('error', $response->get('')['status']);
}
/**

View File

@ -42,6 +42,23 @@ trait ApiControllerPermissionTrait
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @covers Modules\Admin\Controller\ApiController
* @group module
*/
public function testApiAddGroupPermissionToAdmin() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('permissionowner', PermissionOwner::GROUP);
$request->setData('permissionref', 3);
$this->module->apiAddGroupPermission($request, $response);
self::assertEquals('error', $response->get('')['status']);
}
/**
* @testdox A group permission can be returned
* @covers Modules\Admin\Controller\ApiController

View File

@ -22,6 +22,7 @@ use Modules\Admin\tests\Controller\Api\ApiControllerGroupTrait;
use Modules\Admin\tests\Controller\Api\ApiControllerModuleTrait;
use Modules\Admin\tests\Controller\Api\ApiControllerPermissionTrait;
use Modules\Admin\tests\Controller\Api\ApiControllerSettingsTrait;
use phpOMS\DataStorage\Session\HttpSession;
use phpOMS\Account\Account;
use phpOMS\Account\AccountManager;
use phpOMS\Account\PermissionType;
@ -65,6 +66,7 @@ class ApiControllerTest extends \PHPUnit\Framework\TestCase
$this->app->dispatcher = new Dispatcher($this->app);
$this->app->eventManager = new EventManager($this->app->dispatcher);
$this->app->eventManager->importFromFile(__DIR__ . '/../../../../Web/Api/Hooks.php');
$this->app->sessionManager = new HttpSession(36000);
$account = new Account();
TestUtils::setMember($account, 'id', 1);

View File

@ -149,4 +149,15 @@ class AccountMapperTest extends \PHPUnit\Framework\TestCase
$accountR->generatePassword('orange');
AccountMapper::update($accountR);
}
/**
* @covers Modules\Admin\Models\AccountMapper
* @group module
*/
public function testGetWithPermission() : void
{
$accountR = AccountMapper::getWithPermissions(1);
self::assertEquals('admin', $accountR->login);
self::assertGreaterThan(0, $accountR->getPermissions());
}
}

View File

@ -0,0 +1,59 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\Address;
use Modules\Admin\Models\AddressMapper;
use phpOMS\Utils\TestUtils;
use phpOMS\Stdlib\Base\AddressType;
/**
* @testdox Modules\Admin\tests\Models\AddressMapperTest: Address database mapper
*
* @internal
*/
class AddressMapperTest extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Admin\Models\AddressMapper
* @group module
*/
public function testCR() : void
{
$address = new Address();
$address->name = 'name';
$address->addition = 'addition';
$address->postal = '0123456789';
$address->setType(AddressType::BUSINESS);
$address->city = 'city';
$address->address = 'Some address here';
$address->state = 'This is a state 123';
$address->setCountry('DE');
$address->setGeo(['lat' => 12.1, 'long' => 11.2,]);
$id = AddressMapper::create($address);
self::assertGreaterThan(0, $address->getId());
self::assertEquals($id, $address->getId());
$addressR = AddressMapper::get($address->getId());
self::assertEquals($address->name, $addressR->name);
self::assertEquals($address->addition, $addressR->addition);
self::assertEquals($address->getType(), $addressR->getType());
self::assertEquals($address->postal, $addressR->postal);
self::assertEquals($address->address, $addressR->address);
self::assertEquals($address->state, $addressR->state);
}
}

View File

@ -0,0 +1,141 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\Address;
use phpOMS\Stdlib\Base\AddressType;
/**
* @testdox Modules\Admin\tests\Models\AddressTest: Address model
*
* @internal
*/
class AddressTest extends \PHPUnit\Framework\TestCase
{
protected Address $address;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->address = new Address();
}
/**
* @covers Modules\Admin\Models\Address
* @group module
*/
public function testDefault() : void
{
$expected = [
'postal' => '',
'city' => '',
'country' => 'US',
'address' => '',
'state' => '',
'geo' => [
'lat' => 0,
'long' => 0,
],
'name' => '',
'addition' => '',
];
self::assertEquals('', $this->address->name);
self::assertEquals('', $this->address->addition);
self::assertEquals($expected, $this->address->toArray());
self::assertEquals($expected, $this->address->jsonSerialize());
}
public function testToArray() : void
{
$expected = [
'postal' => '0123456789',
'city' => 'city',
'country' => 'Country',
'address' => 'Some address here',
'state' => 'This is a state 123',
'geo' => [
'lat' => 12.1,
'long' => 11.2,
],
'name' => 'name',
'addition' => 'addition',
];
$this->address->name = 'name';
$this->address->addition = 'addition';
$this->address->postal = '0123456789';
$this->address->setType(AddressType::BUSINESS);
$this->address->city = 'city';
$this->address->address = 'Some address here';
$this->address->state = 'This is a state 123';
$this->address->setCountry('Country');
$this->address->setGeo(['lat' => 12.1, 'long' => 11.2,]);
self::assertEquals($expected, $this->address->toArray());
}
public function testJsonSerialize() : void
{
$expected = [
'postal' => '0123456789',
'city' => 'city',
'country' => 'Country',
'address' => 'Some address here',
'state' => 'This is a state 123',
'geo' => [
'lat' => 12.1,
'long' => 11.2,
],
'name' => 'name',
'addition' => 'addition',
];
$this->address->name = 'name';
$this->address->addition = 'addition';
$this->address->postal = '0123456789';
$this->address->setType(AddressType::BUSINESS);
$this->address->city = 'city';
$this->address->address = 'Some address here';
$this->address->state = 'This is a state 123';
$this->address->setCountry('Country');
$this->address->setGeo(['lat' => 12.1, 'long' => 11.2,]);
self::assertEquals($expected, $this->address->jsonSerialize());
self::assertEquals(\json_encode($this->address->jsonSerialize()), $this->address->serialize());
}
public function testUnserialize() : void
{
$expected = [
'postal' => '0123456789',
'city' => 'city',
'country' => 'Country',
'address' => 'Some address here',
'state' => 'This is a state 123',
'geo' => [
'lat' => 12.1,
'long' => 11.2,
],
'name' => 'name',
'addition' => 'addition',
];
$this->address->unserialize(\json_encode($expected));
self::assertEquals(\json_encode($expected), $this->address->serialize());
}
}

View File

@ -0,0 +1,51 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\App;
use Modules\Admin\Models\AppMapper;
use phpOMS\Application\ApplicationStatus;
use phpOMS\Utils\TestUtils;
/**
* @testdox Modules\Admin\tests\Models\AppMapperTest: App database mapper
*
* @internal
*/
class AppMapperTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox The model can be created and read from the database
* @covers Modules\Admin\Models\AppMapper
* @group module
*/
public function testCR() : void
{
$app = new App();
$app->name = 'TestAppName';
$app->theme = 'Default';
$app->status = ApplicationStatus::NORMAL;
$id = AppMapper::create($app);
self::assertGreaterThan(0, $app->getId());
self::assertEquals($id, $app->getId());
$appR = AppMapper::get($app->getId());
self::assertEquals($app->name, $appR->name);
self::assertEquals($app->theme, $appR->theme);
self::assertEquals($app->status, $appR->status);
}
}

36
tests/Models/AppTest.php Normal file
View File

@ -0,0 +1,36 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\App;
/**
* @testdox Modules\Admin\tests\Models\AppTest: App model
*
* @internal
*/
class AppTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox The account has the expected default values after initialization
* @covers Modules\Admin\Models\App
* @group module
*/
public function testDefault() : void
{
$account = new App();
self::assertEquals(0, $account->getId());
}
}

View File

@ -50,4 +50,14 @@ class GroupMapperTest extends \PHPUnit\Framework\TestCase
self::assertTrue(false);
}
/**
* @covers Modules\Admin\Models\GroupMapper
* @group module
*/
public function testCountMembers() : void
{
self::assertEquals([3 => 1], GroupMapper::countMembers());
self::assertEquals([], GroupMapper::countMembers(1));
}
}

View File

@ -24,6 +24,16 @@ use Modules\Admin\Models\NullAccount;
*/
class GroupTest extends \PHPUnit\Framework\TestCase
{
protected Group $group;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->group = new Group();
}
/**
* @testdox The group has the expected default values after initialization
* @covers Modules\Admin\Models\Group
@ -31,11 +41,10 @@ class GroupTest extends \PHPUnit\Framework\TestCase
*/
public function testDefault() : void
{
$group = new Group();
self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $group->createdAt->format('Y-m-d'));
self::assertEquals(0, $group->createdBy->getId());
self::assertEquals('', $group->descriptionRaw);
self::assertEquals([], $group->getAccounts());
self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->group->createdAt->format('Y-m-d'));
self::assertEquals(0, $this->group->createdBy->getId());
self::assertEquals('', $this->group->descriptionRaw);
self::assertEquals([], $this->group->getAccounts());
}
/**
@ -45,10 +54,8 @@ class GroupTest extends \PHPUnit\Framework\TestCase
*/
public function testDescriptionInputOutput() : void
{
$group = new Group();
$group->descriptionRaw = 'Some test';
self::assertEquals('Some test', $group->descriptionRaw);
$this->group->descriptionRaw = 'Some test';
self::assertEquals('Some test', $this->group->descriptionRaw);
}
/**
@ -58,9 +65,7 @@ class GroupTest extends \PHPUnit\Framework\TestCase
*/
public function testCreatorInputOutput() : void
{
$group = new Group();
$group->createdBy = new NullAccount(3);
self::assertEquals(3, $group->createdBy->getId());
$this->group->createdBy = new NullAccount(3);
self::assertEquals(3, $this->group->createdBy->getId());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\NullAccount;
/**
* @internal
*/
final class Null extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Admin\Models\NullAccount
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Admin\Models\Account', new NullAccount());
}
/**
* @covers Modules\Admin\Models\NullAccount
* @group framework
*/
public function testId() : void
{
$null = new NullAccount(2);
self::assertEquals(2, $null->getId());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\NullAccountPermission;
/**
* @internal
*/
final class Null extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Admin\Models\NullAccountPermission
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Admin\Models\AccountPermission', new NullAccountPermission());
}
/**
* @covers Modules\Admin\Models\NullAccountPermission
* @group framework
*/
public function testId() : void
{
$null = new NullAccountPermission(2);
self::assertEquals(2, $null->getId());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\NullAddress;
/**
* @internal
*/
final class Null extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Admin\Models\NullAddress
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Admin\Models\Address', new NullAddress());
}
/**
* @covers Modules\Admin\Models\NullAddress
* @group framework
*/
public function testId() : void
{
$null = new NullAddress(2);
self::assertEquals(2, $null->getId());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\NullGroup;
/**
* @internal
*/
final class Null extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Admin\Models\NullGroup
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Admin\Models\Group', new NullGroup());
}
/**
* @covers Modules\Admin\Models\NullGroup
* @group framework
*/
public function testId() : void
{
$null = new NullGroup(2);
self::assertEquals(2, $null->getId());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\NullGroupPermission;
/**
* @internal
*/
final class Null extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Admin\Models\NullGroupPermission
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Admin\Models\GroupPermission', new NullGroupPermission());
}
/**
* @covers Modules\Admin\Models\NullGroupPermission
* @group framework
*/
public function testId() : void
{
$null = new NullGroupPermission(2);
self::assertEquals(2, $null->getId());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\NullModule;
/**
* @internal
*/
final class Null extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Admin\Models\NullModule
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Admin\Models\Module', new NullModule());
}
/**
* @covers Modules\Admin\Models\NullModule
* @group framework
*/
public function testId() : void
{
$null = new NullModule(2);
self::assertEquals(2, $null->getId());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\Admin\tests\Models;
use Modules\Admin\Models\NullModule;
/**
* @internal
*/
final class NullModuleTest extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Admin\Models\NullModule
* @group module
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Admin\Models\Module', new NullModule());
}
/**
* @covers Modules\Admin\Models\NullModule
* @group module
*/
public function testId() : void
{
$null = new NullModule('Test');
self::assertEquals('Test', $null->getId());
}
}