improve unit tests

This commit is contained in:
Dennis Eichhorn 2018-08-31 21:14:53 +02:00
parent 9e20a90a38
commit d7ea018c02
6 changed files with 66 additions and 64 deletions

View File

@ -26,6 +26,5 @@ use phpOMS\Stdlib\Base\Enum;
*/ */
abstract class InstallType extends Enum abstract class InstallType extends Enum
{ {
public const PERMISSION = 0; public const GROUP = 1;
public const GROUP = 1;
} }

View File

@ -269,67 +269,40 @@ class Installer extends InstallerAbstract
public static function installExternal(DatabasePool $dbPool, array $data) : void public static function installExternal(DatabasePool $dbPool, array $data) : void
{ {
foreach ($data as $type => $element) { foreach ($data as $type => $element) {
if ($type === InstallType::PERMISSION) { if ($type === InstallType::GROUP) {
self::installPermission($dbPool, $element);
} elseif ($type === InstallType::GROUP) {
self::installGroup($dbPool, $element); self::installGroup($dbPool, $element);
} }
} }
} }
/**
* Install permission
*
* @param DatabasePool $dbPool Database pool
* @param array $data Data to install
*
* @return void
*
* @since 1.0.0
*/
public static function installPermission(DatabasePool $dbPool, array $data) : void
{
$sth = $dbPool->get()->con->prepare(
'INSERT INTO `' . $dbPool->get()->prefix . 'permission` (`permission_id`, `permission_name`, `permission_description`) VALUES
(:id, :pid, :name, :type, :subtype, :icon, :uri, :target, :from, :order, :parent, :perm);'
);
$sth->bindValue(':id', $data['id'] ?? 0, \PDO::PARAM_INT);
$sth->bindValue(':pid', sha1(\str_replace('/', '', $data['pid'] ?? '')), \PDO::PARAM_STR);
$sth->bindValue(':name', $data['name'] ?? '', \PDO::PARAM_STR);
$sth->bindValue(':type', $data['type'] ?? 1, \PDO::PARAM_INT);
$sth->bindValue(':subtype', $data['subtype'] ?? 2, \PDO::PARAM_INT);
$sth->execute();
$lastInsertID = $dbPool->get()->con->lastInsertId();
}
/** /**
* Install group * Install group
* *
* @param DatabasePool $dbPool Database pool * @param DatabasePool $dbPool Database pool
* @param array $data Data to install * @param array $data Data to install
* *
* @return void * @return int
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public static function installGroup(DatabasePool $dbPool, array $data) : void public static function installGroup(DatabasePool $dbPool, array $data) : int
{ {
$sth = $dbPool->get()->con->prepare( $sth = $dbPool->get()->con->prepare(
'INSERT INTO `' . $dbPool->get()->prefix . 'group` (`group_id`, `group_name`, `group_description`) VALUES 'INSERT INTO `' . $dbPool->get()->prefix . 'group` (
(:id, :pid, :name, :type, :subtype, :icon, :uri, :target, :from, :order, :parent, :perm);' `group_id`, `group_name`, `group_description`, `group_description_raw`, `group_status`, `group_created`)
VALUES (:id, :name, :desc, :desc_raw, :status, :created);'
); );
$sth->bindValue(':id', $data['id'] ?? 0, \PDO::PARAM_INT); $sth->bindValue(':id', $data['id'] ?? 0, \PDO::PARAM_INT);
$sth->bindValue(':pid', sha1(\str_replace('/', '', $data['pid'] ?? '')), \PDO::PARAM_STR);
$sth->bindValue(':name', $data['name'] ?? '', \PDO::PARAM_STR); $sth->bindValue(':name', $data['name'] ?? '', \PDO::PARAM_STR);
$sth->bindValue(':type', $data['type'] ?? 1, \PDO::PARAM_INT); $sth->bindValue(':desc', $data['desc'] ?? '', \PDO::PARAM_STR);
$sth->bindValue(':subtype', $data['subtype'] ?? 2, \PDO::PARAM_INT); $sth->bindValue(':desc_raw', $data['desc_raw'] ?? '', \PDO::PARAM_STR);
$sth->bindValue(':status', $data['status'] ?? 1, \PDO::PARAM_INT);
$sth->bindValue(':created', (new \DateTime('now'))->format('Y-m-d H:i:s'), \PDO::PARAM_STR);
$sth->execute(); $sth->execute();
$lastInsertID = $dbPool->get()->con->lastInsertId(); $lastInsertID = $dbPool->get()->con->lastInsertId();
return $lastInsertID;
} }
} }

View File

@ -25,6 +25,7 @@ use Modules\Admin\Models\GroupMapper;
use Modules\Admin\Models\GroupPermissionMapper; use Modules\Admin\Models\GroupPermissionMapper;
use Modules\Admin\Models\NullGroupPermission; use Modules\Admin\Models\NullGroupPermission;
use Modules\Admin\Models\PermissionState; use Modules\Admin\Models\PermissionState;
use Modules\Admin\Models\ModuleStatusUpdateType;
use phpOMS\Account\AccountStatus; use phpOMS\Account\AccountStatus;
use phpOMS\Account\AccountType; use phpOMS\Account\AccountType;
@ -399,7 +400,7 @@ final class Controller extends ModuleAbstract implements WebInterface
*/ */
public function apiSettingsSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiSettingsSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
if (($data = $request->getData('settings')) === null) { if ($request->getData('settings') === null) {
$data = $request->getLike('(settings_)(.*)'); $data = $request->getLike('(settings_)(.*)');
} else { } else {
$data = \json_decode((string) $request->getData('settings'), true); $data = \json_decode((string) $request->getData('settings'), true);
@ -500,9 +501,7 @@ final class Controller extends ModuleAbstract implements WebInterface
{ {
$val = []; $val = [];
if (($val['name'] = empty($request->getData('name'))) if (($val['name'] = empty($request->getData('name')))
|| ($val['status'] = ($request->getData('status') === null || ($val['status'] = !GroupStatus::isValidValue((int) $request->getData('status')))
|| !GroupStatus::isValidValue((int) $request->getData('status'))
))
) { ) {
return $val; return $val;
} }
@ -638,7 +637,6 @@ final class Controller extends ModuleAbstract implements WebInterface
*/ */
public function apiAccountFind(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiAccountFind(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
$response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true);
$response->set( $response->set(
$request->getUri()->__toString(), $request->getUri()->__toString(),
\array_values( \array_values(
@ -834,7 +832,7 @@ final class Controller extends ModuleAbstract implements WebInterface
public function apiModuleStatusUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiModuleStatusUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
$module = $request->getData('module'); $module = $request->getData('module');
$status = $request->getData('status'); $status = (int) $request->getData('status');
if ($module === null || $status === null) { if ($module === null || $status === null) {
$response->set('module_stutus_update', null); $response->set('module_stutus_update', null);
@ -843,25 +841,24 @@ final class Controller extends ModuleAbstract implements WebInterface
} }
switch ($status) { switch ($status) {
case 'activate': case ModuleStatusUpdateType::ACTIVATE:
$done = $this->app->moduleManager->activate($module); $done = $module === 'Admin' ? false : $this->app->moduleManager->activate($module);
$msg = 'Module successfully activated.'; $msg = $done ? 'Module successfully activated.' : 'Module not activated.';
break; break;
case 'deactivate': case ModuleStatusUpdateType::DEACTIVATE:
$done = $this->app->moduleManager->deactivate($module); $done = $module === 'Admin' ? false : $this->app->moduleManager->deactivate($module);
$msg = 'Module successfully deactivated.'; $msg = $done ? 'Module successfully deactivated.' : 'Module not deactivated.';
break; break;
case 'install': case ModuleStatusUpdateType::INSTALL:
$done = $this->app->moduleManager->install($module); $done = $module === 'Admin' ? false : $this->app->moduleManager->install($module);
$msg = 'Module successfully installed.'; $msg = $done ? 'Module successfully installed.' : 'Module not installed.';
break; break;
case 'uninstall': case ModuleStatusUpdateType::UNINSTALL:
//$done = $this->app->moduleManager->uninstall($module); $done = $module === 'Admin' ? false : $this->app->moduleManager->uninstall($module);
$done = true; $msg = $done ? 'Module successfully uninstalled.' : 'Module not uninstalled.';
$msg = 'Module successfully uninstalled.';
break; break;
default: default:

View File

@ -131,11 +131,11 @@ class AccountMapper extends DataMapperAbstract
return LoginReturnType::EMPTY_PASSWORD; return LoginReturnType::EMPTY_PASSWORD;
} }
if (\password_verify($password, $result['account_password'])) { if (\password_verify($password, $result['account_password'] ?? '')) {
return $result['account_id']; return $result['account_id'];
} }
if ($result['account_password_temp'] !== '' && \password_verify($password, $result['account_password_temp'])) { if (!empty($result['account_password_temp']) && \password_verify($password, $result['account_password_temp'] ?? '')) {
$query->update('account')->set(['account_password_temp' => ''])->where('account_login', '=', $login)->execute(); $query->update('account')->set(['account_password_temp' => ''])->where('account_login', '=', $login)->execute();
return $result['account_id']; return $result['account_id'];

View File

@ -81,11 +81,11 @@ class Group extends \phpOMS\Account\Group
/** /**
* Get created by. * Get created by.
* *
* @return int * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function getCreatedBy() : int public function getCreatedBy()
{ {
return $this->createdBy; return $this->createdBy;
} }

View File

@ -0,0 +1,33 @@
<?php
/**
* Orange Management
*
* PHP Version 7.2
*
* @package Modules\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://website.orange-management.de
*/
declare(strict_types=1);
namespace Modules\Admin\Models;
use phpOMS\Stdlib\Base\Enum;
/**
* Permision state enum.
*
* @package Modules\Admin
* @license OMS License 1.0
* @link http://website.orange-management.de
* @since 1.0.0
*/
abstract class ModuleStatusUpdateType extends Enum
{
public const ACTIVATE = 1;
public const DEACTIVATE = 2;
public const INSTALL = 3;
public const UNINSTALL = 4;
}