diff --git a/app/modules/web/Controllers/UserController.php b/app/modules/web/Controllers/UserController.php index 35e63100..559e98a7 100644 --- a/app/modules/web/Controllers/UserController.php +++ b/app/modules/web/Controllers/UserController.php @@ -140,6 +140,7 @@ class UserController extends ControllerBase implements CrudControllerInterface $this->view->assign('profiles', SelectItemAdapter::factory(UserProfileService::getItemsBasic())->getItemsFromModel()); $this->view->assign('isUseSSO', $this->configData->isAuthBasicAutoLoginEnabled()); $this->view->assign('sk', $this->session->generateSecurityKey()); + $this->view->assign('mailEnabled', $this->configData->isMailEnabled()); $this->view->assign('nextAction', Acl::getActionRoute(Acl::ACCESS_MANAGE)); if ($this->view->isView === true @@ -337,14 +338,11 @@ class UserController extends ControllerBase implements CrudControllerInterface protected function checkChangeUserPass(UserData $userData) { if ($userData->isChangePass()) { - $hash = $this->dic->get(UserPassRecoverService::class)->requestForUserId($userData->getId()); - $this->dic->get(MailService::class)->send(__('Cambio de Clave'), $userData->getEmail(), UserPassRecoverService::getMailMessage($hash)); + $hash = $this->dic->get(UserPassRecoverService::class) + ->requestForUserId($userData->getId()); -// $this->returnJsonResponse( -// JsonResponse::JSON_WARNING, -// __u('Usuario creado'), -// [__('No se pudo realizar la petición de cambio de clave.')] -// ); + $this->dic->get(MailService::class) + ->send(__('Cambio de Clave'), $userData->getEmail(), UserPassRecoverService::getMailMessage($hash)); } } diff --git a/app/modules/web/Forms/NotificationForm.php b/app/modules/web/Forms/NotificationForm.php index cbb8fe58..08ed71f0 100644 --- a/app/modules/web/Forms/NotificationForm.php +++ b/app/modules/web/Forms/NotificationForm.php @@ -26,7 +26,7 @@ namespace SP\Modules\Web\Forms; use SP\Core\Acl\ActionsInterface; use SP\Core\Exceptions\ValidationException; -use SP\Core\Messages\NoticeMessage; +use SP\Core\Messages\NotificationMessage; use SP\DataModel\NotificationData; use SP\Http\Request; @@ -73,7 +73,7 @@ class NotificationForm extends FormBase implements FormInterface $this->notificationData->setId($this->itemId); $this->notificationData->setType(Request::analyzeString('notification_type')); $this->notificationData->setComponent(Request::analyzeString('notification_component')); - $this->notificationData->setDescription(NoticeMessage::factory()->addDescription(Request::analyzeString('notification_description'))); + $this->notificationData->setDescription(NotificationMessage::factory()->addDescription(Request::analyzeString('notification_description'))); $this->notificationData->setUserId(Request::analyzeInt('notification_user')); $this->notificationData->setChecked(Request::analyzeBool('notification_checkout', false)); diff --git a/app/modules/web/Forms/PublicLinkForm.php b/app/modules/web/Forms/PublicLinkForm.php index b42b6d7d..238e05ae 100644 --- a/app/modules/web/Forms/PublicLinkForm.php +++ b/app/modules/web/Forms/PublicLinkForm.php @@ -29,6 +29,7 @@ use SP\Core\Exceptions\ValidationException; use SP\DataModel\PublicLinkData; use SP\Http\Request; use SP\Mgmt\PublicLinks\PublicLink; +use SP\Services\PublicLink\PublicLinkService; use SP\Util\Util; /** @@ -74,7 +75,7 @@ class PublicLinkForm extends FormBase implements FormInterface { $this->publicLinkData = new PublicLinkData(); $this->publicLinkData->setId($this->itemId); - $this->publicLinkData->setTypeId(PublicLink::TYPE_ACCOUNT); + $this->publicLinkData->setTypeId(PublicLinkService::TYPE_ACCOUNT); $this->publicLinkData->setItemId(Request::analyzeInt('accountId')); $this->publicLinkData->setNotify(Request::analyzeBool('notify', false)); $this->publicLinkData->setHash(Util::generateRandomBytes()); diff --git a/app/modules/web/themes/material-blue/views/itemshow/user.inc b/app/modules/web/themes/material-blue/views/itemshow/user.inc index c501c2ca..a7950719 100644 --- a/app/modules/web/themes/material-blue/views/itemshow/user.inc +++ b/app/modules/web/themes/material-blue/views/itemshow/user.inc @@ -217,23 +217,25 @@ -
  • -
    - -
    + +
  • +
    + +
    - - - - + + + + + - -
  • + +
  • diff --git a/lib/SP/Core/Messages/NoticeMessage.php b/lib/SP/Core/Messages/NotificationMessage.php similarity index 97% rename from lib/SP/Core/Messages/NoticeMessage.php rename to lib/SP/Core/Messages/NotificationMessage.php index f63678be..bcecaaf4 100644 --- a/lib/SP/Core/Messages/NoticeMessage.php +++ b/lib/SP/Core/Messages/NotificationMessage.php @@ -29,7 +29,7 @@ namespace SP\Core\Messages; * * @package SP\Core\Messages */ -class NoticeMessage extends MessageBase +class NotificationMessage extends MessageBase { /** * Componer un mensaje en formato HTML diff --git a/lib/SP/DataModel/PublicLinkData.php b/lib/SP/DataModel/PublicLinkData.php index 62b93820..870eeaa9 100644 --- a/lib/SP/DataModel/PublicLinkData.php +++ b/lib/SP/DataModel/PublicLinkData.php @@ -2,8 +2,8 @@ /** * sysPass * - * @author nuxsmin - * @link https://syspass.org + * @author nuxsmin + * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. @@ -61,6 +61,10 @@ class PublicLinkData extends DataModelBase implements DataModelInterface * @var int */ public $dateAdd = 0; + /** + * @var int + */ + public $dateUpdate = 0; /** * @var int */ @@ -309,4 +313,20 @@ class PublicLinkData extends DataModelBase implements DataModelInterface { // TODO: Implement getName() method. } + + /** + * @return int + */ + public function getDateUpdate(): int + { + return (int)$this->dateUpdate; + } + + /** + * @param int $dateUpdate + */ + public function setDateUpdate(int $dateUpdate) + { + $this->dateUpdate = $dateUpdate; + } } \ No newline at end of file diff --git a/lib/SP/DataModel/PublicLinkListData.php b/lib/SP/DataModel/PublicLinkListData.php index bceba9f3..b48544fe 100644 --- a/lib/SP/DataModel/PublicLinkListData.php +++ b/lib/SP/DataModel/PublicLinkListData.php @@ -2,8 +2,8 @@ /** * sysPass * - * @author nuxsmin - * @link https://syspass.org + * @author nuxsmin + * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. @@ -48,6 +48,14 @@ class PublicLinkListData extends PublicLinkData */ public $accountName; + /** + * @return string + */ + public function getName() + { + return $this->accountName; + } + /** * @return string */ diff --git a/lib/SP/DataModel/TrackData.php b/lib/SP/DataModel/TrackData.php index 04d7d0b4..b20c2c00 100644 --- a/lib/SP/DataModel/TrackData.php +++ b/lib/SP/DataModel/TrackData.php @@ -40,11 +40,11 @@ class TrackData extends DataModelBase /** * @var int */ - public $userId = 0; + public $userId; /** * @var string */ - public $source = ''; + public $source; /** * @var int */ @@ -52,11 +52,11 @@ class TrackData extends DataModelBase /** * @var string */ - public $ipv4 = ''; + public $ipv4; /** * @var string */ - public $ipv6 = ''; + public $ipv6; /** * @return int diff --git a/lib/SP/Repositories/Notification/NotificationRepository.php b/lib/SP/Repositories/Notification/NotificationRepository.php index 922122dc..1a293e87 100644 --- a/lib/SP/Repositories/Notification/NotificationRepository.php +++ b/lib/SP/Repositories/Notification/NotificationRepository.php @@ -48,7 +48,7 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa * * @param NotificationData $itemData * - * @return int + * @return QueryResult * @throws ConstraintException * @throws QueryException */ @@ -77,7 +77,7 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa ]); $queryData->setOnErrorMessage(__u('Error al crear la notificación')); - return $this->db->doQuery($queryData)->getLastId(); + return $this->db->doQuery($queryData); } /** @@ -186,7 +186,7 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa * * @param int $id * - * @return NotificationData + * @return QueryResult * @throws ConstraintException * @throws QueryException */ @@ -211,21 +211,21 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa $queryData->addParam($id); $queryData->setOnErrorMessage(__u('Error al obtener la notificación')); - return $this->db->doSelect($queryData)->getData(); + return $this->db->doSelect($queryData); } /** * Returns all the items * - * @return NotificationData[] + * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function getAll() { $query = /** @lang SQL */ - 'SELECT id - notice_type, + 'SELECT id, + type, component, description, `date`, @@ -233,14 +233,15 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa checked, sticky, onlyAdmin - FROM Notification'; + FROM Notification + ORDER BY id'; $queryData = new QueryData(); $queryData->setMapClassName(NotificationData::class); $queryData->setQuery($query); $queryData->setOnErrorMessage(__u('Error al obtener las notificaciones')); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } /** @@ -248,16 +249,16 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa * * @param array $ids * - * @return NotificationData[] + * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function getByIdBatch(array $ids) { if (empty($ids)) { - return []; + return new QueryResult(); } - + $query = /** @lang SQL */ 'SELECT id, type, @@ -269,14 +270,15 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa sticky, onlyAdmin FROM Notification - WHERE id IN (' . $this->getParamsFromArray($ids) . ')'; + WHERE id IN (' . $this->getParamsFromArray($ids) . ') + ORDER BY id'; $queryData = new QueryData(); $queryData->setMapClassName(NotificationData::class); $queryData->setQuery($query); $queryData->setParams($ids); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } /** @@ -344,6 +346,7 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa public function search(ItemSearchData $itemSearchData) { $queryData = new QueryData(); + $queryData->setMapClassName(NotificationData::class); $queryData->setSelect('id, type, component, description, `date`, checked, userId, sticky, onlyAdmin'); $queryData->setFrom('Notification'); $queryData->setOrder('`date` DESC'); @@ -377,6 +380,7 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa public function searchForUserId(ItemSearchData $itemSearchData, $userId) { $queryData = new QueryData(); + $queryData->setMapClassName(NotificationData::class); $queryData->setSelect('id, type, component, description, `date`, checked, userId, sticky, onlyAdmin'); $queryData->setFrom('Notification'); $queryData->setOrder('`date` DESC'); @@ -429,16 +433,17 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa * Devolver las notificaciones de un usuario para una fecha y componente determinados * * @param $component - * @param $id + * @param $userId * - * @return NotificationData[] + * @return QueryResult * @throws ConstraintException * @throws QueryException */ - public function getForUserIdByDate($component, $id) + public function getForUserIdByDate($component, $userId) { $query = /** @lang SQL */ - 'SELECT type, + 'SELECT id, + type, component, description, `date`, @@ -447,23 +452,24 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa sticky, onlyAdmin FROM Notification - WHERE component = ? AND - (UNIX_TIMESTAMP() - `date`) <= 86400 AND - userId = ?'; + WHERE component = ? + AND (UNIX_TIMESTAMP() - `date`) <= 86400 + AND userId = ? + ORDER BY id'; $queryData = new QueryData(); $queryData->setMapClassName(NotificationData::class); $queryData->setQuery($query); - $queryData->setParams([$component, $id]); + $queryData->setParams([$component, $userId]); $queryData->setOnErrorMessage(__u('Error al obtener las notificaciones')); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } /** * @param $id * - * @return NotificationData[] + * @return QueryResult * @throws ConstraintException * @throws QueryException */ @@ -490,13 +496,13 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa $queryData->addParam($id); $queryData->setOnErrorMessage(__u('Error al obtener las notificaciones')); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } /** * @param $id * - * @return NotificationData[] + * @return QueryResult * @throws ConstraintException * @throws QueryException */ @@ -524,6 +530,6 @@ class NotificationRepository extends Repository implements RepositoryItemInterfa $queryData->addParam($id); $queryData->setOnErrorMessage(__u('Error al obtener las notificaciones')); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } } \ No newline at end of file diff --git a/lib/SP/Repositories/Plugin/PluginRepository.php b/lib/SP/Repositories/Plugin/PluginRepository.php index c0244764..7abbd95c 100644 --- a/lib/SP/Repositories/Plugin/PluginRepository.php +++ b/lib/SP/Repositories/Plugin/PluginRepository.php @@ -50,7 +50,7 @@ class PluginRepository extends Repository implements RepositoryItemInterface * * @param PluginData $itemData * - * @return int + * @return QueryResult * @throws ConstraintException * @throws QueryException */ @@ -69,7 +69,7 @@ class PluginRepository extends Repository implements RepositoryItemInterface ]); $queryData->setOnErrorMessage(__u('Error al crear el plugin')); - return $this->db->doQuery($queryData)->getLastId(); + return $this->db->doQuery($queryData); } /** @@ -85,11 +85,11 @@ class PluginRepository extends Repository implements RepositoryItemInterface { $query = /** @lang SQL */ 'UPDATE Plugin - SET `name` = ?, + SET `name` = ?, `data` = ?, enabled = ?, available = ? - WHERE `name` = ? LIMIT 1'; + WHERE `name` = ? OR id = ? LIMIT 1'; $queryData = new QueryData(); $queryData->setQuery($query); @@ -98,7 +98,8 @@ class PluginRepository extends Repository implements RepositoryItemInterface $itemData->getData(), $itemData->getEnabled(), $itemData->getAvailable(), - $itemData->getName() + $itemData->getName(), + $itemData->getId() ]); $queryData->setOnErrorMessage(__u('Error al actualizar el plugin')); @@ -110,7 +111,7 @@ class PluginRepository extends Repository implements RepositoryItemInterface * * @param int $id * - * @return PluginData + * @return QueryResult * @throws ConstraintException * @throws QueryException */ @@ -130,13 +131,13 @@ class PluginRepository extends Repository implements RepositoryItemInterface $queryData->setQuery($query); $queryData->addParam($id); - return $this->db->doSelect($queryData)->getData(); + return $this->db->doSelect($queryData); } /** * Returns all the items * - * @return PluginData[] + * @return QueryResult * @throws ConstraintException * @throws QueryException */ @@ -154,7 +155,7 @@ class PluginRepository extends Repository implements RepositoryItemInterface $queryData->setMapClassName(PluginData::class); $queryData->setQuery($query); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } /** @@ -162,14 +163,14 @@ class PluginRepository extends Repository implements RepositoryItemInterface * * @param array $ids * - * @return PluginData[] + * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function getByIdBatch(array $ids) { if (empty($ids)) { - return []; + return new QueryResult(); } $query = /** @lang SQL */ @@ -178,14 +179,15 @@ class PluginRepository extends Repository implements RepositoryItemInterface enabled, available FROM Plugin - WHERE id IN (' . $this->getParamsFromArray($ids) . ')'; + WHERE id IN (' . $this->getParamsFromArray($ids) . ') + ORDER BY id'; $queryData = new QueryData(); $queryData->setMapClassName(PluginData::class); $queryData->setQuery($query); $queryData->setParams($ids); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } /** @@ -193,16 +195,23 @@ class PluginRepository extends Repository implements RepositoryItemInterface * * @param array $ids * - * @return void + * @return int * @throws SPException * @throws ConstraintException * @throws QueryException */ public function deleteByIdBatch(array $ids) { - foreach ($ids as $id) { - $this->delete($id); + if (empty($ids)) { + return 0; } + + $queryData = new QueryData(); + $queryData->setQuery('DELETE FROM Plugin WHERE id IN (' . $this->getParamsFromArray($ids) . ')'); + $queryData->setParams($ids); + $queryData->setOnErrorMessage(__u('Error al eliminar el plugin')); + + return $this->db->doQuery($queryData)->getAffectedNumRows(); } /** @@ -273,6 +282,7 @@ class PluginRepository extends Repository implements RepositoryItemInterface public function search(ItemSearchData $itemSearchData) { $queryData = new QueryData(); + $queryData->setMapClassName(PluginData::class); $queryData->setSelect('id, name, enabled, available'); $queryData->setFrom('Plugin'); $queryData->setOrder('name'); @@ -296,7 +306,7 @@ class PluginRepository extends Repository implements RepositoryItemInterface * * @param string $name * - * @return PluginData + * @return QueryResult * @throws ConstraintException * @throws QueryException */ @@ -316,7 +326,7 @@ class PluginRepository extends Repository implements RepositoryItemInterface $queryData->setQuery($query); $queryData->addParam($name); - return $this->db->doSelect($queryData)->getData(); + return $this->db->doSelect($queryData); } /** @@ -373,7 +383,7 @@ class PluginRepository extends Repository implements RepositoryItemInterface { $queryData = new QueryData(); $queryData->setQuery('UPDATE Plugin SET available = ? WHERE id = ? LIMIT 1'); - $queryData->setParams([$id, $available]); + $queryData->setParams([$available, $id]); $queryData->setOnErrorMessage(__u('Error al actualizar el plugin')); return $this->db->doQuery($queryData)->getAffectedNumRows(); @@ -421,7 +431,7 @@ class PluginRepository extends Repository implements RepositoryItemInterface /** * Devolver los plugins activados * - * @return ItemData[] + * @return QueryResult * @throws ConstraintException * @throws QueryException */ @@ -429,8 +439,8 @@ class PluginRepository extends Repository implements RepositoryItemInterface { $queryData = new QueryData(); $queryData->setMapClassName(ItemData::class); - $queryData->setQuery('SELECT id, name FROM Plugin WHERE enabled = 1'); + $queryData->setQuery('SELECT id, `name` FROM Plugin WHERE enabled = 1 ORDER BY id'); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } } \ No newline at end of file diff --git a/lib/SP/Repositories/PublicLink/PublicLinkRepository.php b/lib/SP/Repositories/PublicLink/PublicLinkRepository.php index f829b87c..beb53e43 100644 --- a/lib/SP/Repositories/PublicLink/PublicLinkRepository.php +++ b/lib/SP/Repositories/PublicLink/PublicLinkRepository.php @@ -31,11 +31,11 @@ use SP\DataModel\ItemSearchData; use SP\DataModel\PublicLinkData; use SP\DataModel\PublicLinkListData; use SP\Repositories\DuplicatedItemException; -use SP\Repositories\NoSuchItemException; use SP\Repositories\Repository; use SP\Repositories\RepositoryItemInterface; use SP\Repositories\RepositoryItemTrait; use SP\Storage\Database\QueryData; +use SP\Storage\Database\QueryResult; /** * Class PublicLinkRepository @@ -46,16 +46,14 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface { use RepositoryItemTrait; - /** * Deletes an item * * @param $id * * @return int - * @throws SPException * @throws ConstraintException - * @throws \SP\Core\Exceptions\QueryException + * @throws QueryException */ public function delete($id) { @@ -70,7 +68,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface /** * Returns all the items * - * @return PublicLinkData[] + * @return QueryResult * @throws QueryException * @throws ConstraintException */ @@ -96,13 +94,14 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface A.name AS accountName FROM PublicLink PL INNER JOIN User U ON PL.userId = U.id - INNER JOIN Account A ON itemId = A.id'; + INNER JOIN Account A ON itemId = A.id + ORDER BY PL.id'; $queryData = new QueryData(); $queryData->setMapClassName(PublicLinkListData::class); $queryData->setQuery($query); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } /** @@ -110,14 +109,14 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface * * @param array $ids * - * @return PublicLinkData[] + * @return \SP\Storage\Database\QueryResult * @throws QueryException * @throws ConstraintException */ public function getByIdBatch(array $ids) { if (empty($ids)) { - return []; + return new QueryResult(); } $query = /** @lang SQL */ @@ -141,14 +140,15 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface FROM PublicLink PL INNER JOIN User U ON PL.userId = U.id INNER JOIN Account A ON itemId = A.id - WHERE PL.id IN (' . $this->getParamsFromArray($ids) . ')'; + WHERE PL.id IN (' . $this->getParamsFromArray($ids) . ') + ORDER BY PL.id'; $queryData = new QueryData(); $queryData->setMapClassName(PublicLinkListData::class); $queryData->setQuery($query); $queryData->setParams($ids); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } /** @@ -158,7 +158,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface * * @return int * @throws ConstraintException - * @throws \SP\Core\Exceptions\QueryException + * @throws QueryException */ public function deleteByIdBatch(array $ids) { @@ -190,7 +190,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface * * @param ItemSearchData $itemSearchData * - * @return mixed + * @return \SP\Storage\Database\QueryResult * @throws QueryException * @throws ConstraintException */ @@ -243,7 +243,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface * * @param PublicLinkData $itemData * - * @return int + * @return QueryResult * @throws DuplicatedItemException * @throws QueryException * @throws ConstraintException @@ -280,7 +280,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface ]); $queryData->setOnErrorMessage(__u('Error al crear enlace')); - return $this->db->doQuery($queryData)->getLastId(); + return $this->db->doQuery($queryData); } /** @@ -320,7 +320,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface * * @return int * @throws ConstraintException - * @throws \SP\Core\Exceptions\QueryException + * @throws QueryException */ public function addLinkView(PublicLinkData $publicLinkData) { @@ -350,7 +350,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface * @return int * @throws SPException * @throws ConstraintException - * @throws \SP\Core\Exceptions\QueryException + * @throws QueryException */ public function update($itemData) { @@ -398,7 +398,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface * @return int * @throws SPException * @throws ConstraintException - * @throws \SP\Core\Exceptions\QueryException + * @throws QueryException */ public function refresh(PublicLinkData $publicLinkData) { @@ -430,8 +430,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface * * @param int $id * - * @return PublicLinkData - * @throws NoSuchItemException + * @return QueryResult * @throws QueryException * @throws ConstraintException */ @@ -465,21 +464,14 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface $queryData->addParam($id); $queryData->setOnErrorMessage(__u('Error al obtener enlace')); - $result = $this->db->doSelect($queryData); - - if ($result->getNumRows() === 0) { - throw new NoSuchItemException(__u('El enlace no existe')); - } - - return $result->getData(); + return $this->db->doSelect($queryData); } /** * @param $hash string * - * @return PublicLinkData + * @return QueryResult * @throws ConstraintException - * @throws NoSuchItemException * @throws QueryException */ public function getByHash($hash) @@ -513,13 +505,7 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface $queryData->addParam($hash); $queryData->setOnErrorMessage(__u('Error al obtener enlace')); - $result = $this->db->doSelect($queryData); - - if ($result->getNumRows() === 0) { - throw new NoSuchItemException(__u('El enlace no existe')); - } - - return $result->getData(); + return $this->db->doSelect($queryData); } /** @@ -527,9 +513,8 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface * * @param int $itemId * - * @return PublicLinkData + * @return \SP\Storage\Database\QueryResult * @throws ConstraintException - * @throws NoSuchItemException * @throws QueryException */ public function getHashForItem($itemId) @@ -540,12 +525,6 @@ class PublicLinkRepository extends Repository implements RepositoryItemInterface $queryData->addParam($itemId); $queryData->setOnErrorMessage(__u('Error al obtener enlace')); - $result = $this->db->doSelect($queryData); - - if ($result->getNumRows() === 0) { - throw new NoSuchItemException(__u('El enlace no existe')); - } - - return $result->getData(); + return $this->db->doSelect($queryData); } } \ No newline at end of file diff --git a/lib/SP/Repositories/Track/TrackRepository.php b/lib/SP/Repositories/Track/TrackRepository.php index 0a72c855..14c4df01 100644 --- a/lib/SP/Repositories/Track/TrackRepository.php +++ b/lib/SP/Repositories/Track/TrackRepository.php @@ -38,7 +38,7 @@ class TrackRepository extends Repository /** * @param TrackRequest $trackRequest * - * @return mixed + * @return int * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -66,7 +66,7 @@ class TrackRepository extends Repository } /** - * @param $id int|array + * @param $id int * * @return int * @throws \SP\Core\Exceptions\QueryException @@ -82,42 +82,10 @@ class TrackRepository extends Repository return $this->db->doQuery($queryData)->getAffectedNumRows(); } - /** - * @param TrackData $itemData - * - * @return int - * @throws \SP\Core\Exceptions\ConstraintException - * @throws \SP\Core\Exceptions\QueryException - */ - public function update(TrackData $itemData) - { - $query = /** @lang SQL */ - 'UPDATE Track SET - userId = ?, - `source` = ?, - `time` = UNIX_TIMESTAMP(), - ipv4 = ?, - ipv6 = ? - WHERE id = ? LIMIT 1'; - - $queryData = new QueryData(); - $queryData->setQuery($query); - $queryData->setParams([ - $itemData->getUserId(), - $itemData->getSource(), - $itemData->getTrackIpv4Bin(), - $itemData->getTrackIpv6Bin(), - $itemData->getId() - ]); - $queryData->setOnErrorMessage(__u('Error al actualizar track')); - - return $this->db->doQuery($queryData)->getAffectedNumRows(); - } - /** * @param $id int * - * @return TrackData + * @return \SP\Storage\Database\QueryResult * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -139,11 +107,11 @@ class TrackRepository extends Repository $queryData->addParam($id); $queryData->setOnErrorMessage(__u('Error al obtener track')); - return $this->db->doSelect($queryData)->getData(); + return $this->db->doSelect($queryData); } /** - * @return TrackData[] + * @return \SP\Storage\Database\QueryResult * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -162,7 +130,7 @@ class TrackRepository extends Repository $queryData->setQuery($query); $queryData->setOnErrorMessage(__u('Error al obtener tracks')); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } /** @@ -170,7 +138,7 @@ class TrackRepository extends Repository * * @param TrackRequest $trackRequest * - * @return array + * @return \SP\Storage\Database\QueryResult * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -187,13 +155,13 @@ class TrackRepository extends Repository $queryData->setMapClassName(TrackData::class); $queryData->setQuery($query); $queryData->setParams([ - $trackRequest->time, + (int)$trackRequest->time, $trackRequest->getIpv4(), $trackRequest->getIpv6(), $trackRequest->source ]); $queryData->setOnErrorMessage(__u('Error al obtener tracks')); - return $this->db->doSelect($queryData)->getDataAsArray(); + return $this->db->doSelect($queryData); } } \ No newline at end of file diff --git a/lib/SP/Repositories/User/UserPassRecoverRepository.php b/lib/SP/Repositories/User/UserPassRecoverRepository.php index b3d1cc0f..00e87723 100644 --- a/lib/SP/Repositories/User/UserPassRecoverRepository.php +++ b/lib/SP/Repositories/User/UserPassRecoverRepository.php @@ -56,7 +56,7 @@ class UserPassRecoverRepository extends Repository $queryData = new QueryData(); $queryData->setQuery($query); - $queryData->setParams([$userId, $time]); + $queryData->setParams([(int)$userId, (int)$time]); return $this->db->doSelect($queryData)->getNumRows(); } @@ -64,8 +64,8 @@ class UserPassRecoverRepository extends Repository /** * Adds a hash for a user's id * - * @param $userId - * @param $hash + * @param int $userId + * @param string $hash * * @return int * @throws \SP\Core\Exceptions\ConstraintException @@ -82,7 +82,7 @@ class UserPassRecoverRepository extends Repository $queryData = new QueryData(); $queryData->setQuery($query); - $queryData->setParams([$userId, $hash]); + $queryData->setParams([(int)$userId, $hash]); $queryData->setOnErrorMessage(__u('Error al generar el hash de recuperación')); return $this->db->doQuery($queryData)->getLastId(); @@ -94,7 +94,7 @@ class UserPassRecoverRepository extends Repository * @param string $hash * @param int $time * - * @return bool + * @return int * @throws SPException */ public function toggleUsedByHash($hash, $time) @@ -108,7 +108,7 @@ class UserPassRecoverRepository extends Repository $queryData = new QueryData(); $queryData->setQuery($query); - $queryData->setParams([$hash, $time]); + $queryData->setParams([$hash, (int)$time]); $queryData->setOnErrorMessage(__u('Error en comprobación de hash')); return $this->db->doQuery($queryData)->getAffectedNumRows(); @@ -120,7 +120,7 @@ class UserPassRecoverRepository extends Repository * @param $hash * @param $time * - * @return mixed + * @return \SP\Storage\Database\QueryResult * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -136,8 +136,8 @@ class UserPassRecoverRepository extends Repository $queryData = new QueryData(); $queryData->setQuery($query); - $queryData->setParams([$hash, $time]); + $queryData->setParams([$hash, (int)$time]); - return $this->db->doSelect($queryData)->getData(); + return $this->db->doSelect($queryData); } } \ No newline at end of file diff --git a/lib/SP/Services/Install/Installer.php b/lib/SP/Services/Install/Installer.php index b4979c62..b8de0e07 100644 --- a/lib/SP/Services/Install/Installer.php +++ b/lib/SP/Services/Install/Installer.php @@ -56,7 +56,7 @@ class Installer extends Service */ const VERSION = [3, 0, 0]; const VERSION_TEXT = '3.0-beta'; - const BUILD = 18061401; + const BUILD = 18061801; /** * @var ConfigService diff --git a/lib/SP/Services/MailService.php b/lib/SP/Services/MailService.php index 261b4444..aee26bc9 100644 --- a/lib/SP/Services/MailService.php +++ b/lib/SP/Services/MailService.php @@ -173,12 +173,15 @@ class MailService extends Service /** * @throws MailProviderException + * @throws ServiceException */ protected function initialize() { if ($this->config->getConfigData()->isMailEnabled()) { $this->mailer = $this->dic->get(MailProvider::class) ->getMailer($this->getParamsFromConfig()); + } else { + throw new ServiceException(__u('Servicio de correo no disponible')); } $this->appInfo = Util::getAppInfo(); diff --git a/lib/SP/Services/Notification/NotificationService.php b/lib/SP/Services/Notification/NotificationService.php index a6630b47..a36a22ba 100644 --- a/lib/SP/Services/Notification/NotificationService.php +++ b/lib/SP/Services/Notification/NotificationService.php @@ -54,7 +54,7 @@ class NotificationService extends Service */ public function create(NotificationData $itemData) { - return $this->notificationRepository->create($itemData); + return $this->notificationRepository->create($itemData)->getLastId(); } /** @@ -82,7 +82,7 @@ class NotificationService extends Service */ public function getByIdBatch(array $ids) { - return $this->notificationRepository->getByIdBatch($ids); + return $this->notificationRepository->getByIdBatch($ids)->getDataAsArray(); } /** @@ -172,7 +172,7 @@ class NotificationService extends Service */ public function getById($id) { - return $this->notificationRepository->getById($id); + return $this->notificationRepository->getById($id)->getData(); } /** @@ -184,7 +184,7 @@ class NotificationService extends Service */ public function getAll() { - return $this->notificationRepository->getAll(); + return $this->notificationRepository->getAll()->getDataAsArray(); } /** @@ -213,7 +213,7 @@ class NotificationService extends Service */ public function getForUserIdByDate($component, $id) { - return $this->notificationRepository->getForUserIdByDate($component, $id); + return $this->notificationRepository->getForUserIdByDate($component, $id)->getDataAsArray(); } /** @@ -225,7 +225,7 @@ class NotificationService extends Service */ public function getAllForUserId($id) { - return $this->notificationRepository->getAllForUserId($id); + return $this->notificationRepository->getAllForUserId($id)->getDataAsArray(); } /** @@ -237,7 +237,7 @@ class NotificationService extends Service */ public function getAllActiveForUserId($id) { - return $this->notificationRepository->getAllForUserId($id); + return $this->notificationRepository->getAllActiveForUserId($id)->getDataAsArray(); } /** diff --git a/lib/SP/Services/Plugin/PluginService.php b/lib/SP/Services/Plugin/PluginService.php index 4b74cf89..790e385b 100644 --- a/lib/SP/Services/Plugin/PluginService.php +++ b/lib/SP/Services/Plugin/PluginService.php @@ -56,7 +56,7 @@ class PluginService extends Service */ public function create(PluginData $itemData) { - return $this->pluginRepository->create($itemData); + return $this->pluginRepository->create($itemData)->getLastId(); } /** @@ -84,7 +84,7 @@ class PluginService extends Service */ public function getById($id) { - return $this->pluginRepository->getById($id); + return $this->pluginRepository->getById($id)->getData(); } /** @@ -96,7 +96,7 @@ class PluginService extends Service */ public function getAll() { - return $this->pluginRepository->getAll(); + return $this->pluginRepository->getAll()->getDataAsArray(); } /** @@ -110,7 +110,7 @@ class PluginService extends Service */ public function getByIdBatch(array $ids) { - return $this->pluginRepository->getByIdBatch($ids); + return $this->pluginRepository->getByIdBatch($ids)->getDataAsArray(); } /** @@ -169,7 +169,7 @@ class PluginService extends Service */ public function getByName($name) { - return $this->pluginRepository->getByName($name); + return $this->pluginRepository->getByName($name)->getData(); } /** @@ -255,7 +255,7 @@ class PluginService extends Service */ public function getEnabled() { - return $this->pluginRepository->getEnabled(); + return $this->pluginRepository->getEnabled()->getDataAsArray(); } protected function initialize() diff --git a/lib/SP/Services/PublicLink/PublicLinkService.php b/lib/SP/Services/PublicLink/PublicLinkService.php index 5af61ec9..59298050 100644 --- a/lib/SP/Services/PublicLink/PublicLinkService.php +++ b/lib/SP/Services/PublicLink/PublicLinkService.php @@ -33,6 +33,7 @@ use SP\Core\Exceptions\SPException; use SP\DataModel\ItemSearchData; use SP\DataModel\PublicLinkData; use SP\Http\Request; +use SP\Repositories\NoSuchItemException; use SP\Repositories\PublicLink\PublicLinkRepository; use SP\Services\Account\AccountService; use SP\Services\Service; @@ -98,12 +99,12 @@ class PublicLinkService extends Service /** * @param $id * - * @return \SP\DataModel\PublicLinkData + * @return \SP\DataModel\PublicLinkListData * @throws \SP\Core\Exceptions\SPException */ public function getById($id) { - return $this->publicLinkRepository->getById($id); + return $this->publicLinkRepository->getById($id)->getData(); } /** @@ -123,7 +124,14 @@ class PublicLinkService extends Service $salt = $this->config->getConfigData()->getPasswordSalt(); $key = self::getNewKey($salt); - $publicLinkData = $this->publicLinkRepository->getById($id); + $result = $this->publicLinkRepository->getById($id); + + if ($result->getNumRows() === 0) { + throw new NoSuchItemException(__u('El enlace no existe')); + } + + /** @var PublicLinkData $publicLinkData */ + $publicLinkData = $result->getData(); $publicLinkData->setHash(self::getHashForKey($key, $salt)); $publicLinkData->setData($this->getSecuredLinkData($publicLinkData->getItemId(), $key)); $publicLinkData->setDateExpire(self::calcDateExpire($this->config)); @@ -247,7 +255,7 @@ class PublicLinkService extends Service $itemData->setMaxCountViews($this->config->getConfigData()->getPublinksMaxViews()); $itemData->setUserId($this->context->getUserData()->getId()); - return $this->publicLinkRepository->create($itemData); + return $this->publicLinkRepository->create($itemData)->getLastId(); } /** @@ -270,7 +278,7 @@ class PublicLinkService extends Service */ public function getAllBasic() { - return $this->publicLinkRepository->getAll(); + return $this->publicLinkRepository->getAll()->getDataAsArray(); } /** @@ -332,7 +340,13 @@ class PublicLinkService extends Service */ public function getByHash($hash) { - return $this->publicLinkRepository->getByHash($hash); + $result = $this->publicLinkRepository->getByHash($hash); + + if ($result->getNumRows() === 0) { + throw new NoSuchItemException(__u('El enlace no existe')); + } + + return $result->getData(); } /** @@ -347,7 +361,13 @@ class PublicLinkService extends Service */ public function getHashForItem($itemId) { - return $this->publicLinkRepository->getHashForItem($itemId); + $result = $this->publicLinkRepository->getHashForItem($itemId); + + if ($result->getNumRows() === 0) { + throw new NoSuchItemException(__u('El enlace no existe')); + } + + return $result->getData(); } /** diff --git a/lib/SP/Services/Track/TrackService.php b/lib/SP/Services/Track/TrackService.php index 5864e5c2..8e9eb705 100644 --- a/lib/SP/Services/Track/TrackService.php +++ b/lib/SP/Services/Track/TrackService.php @@ -2,8 +2,8 @@ /** * sysPass * - * @author nuxsmin - * @link https://syspass.org + * @author nuxsmin + * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. @@ -53,6 +53,7 @@ class TrackService extends Service /** * @param $source + * * @return TrackRequest * @throws \SP\Core\Exceptions\InvalidArgumentException */ @@ -68,6 +69,7 @@ class TrackService extends Service /** * @param $id int|array + * * @return mixed * @throws \SP\Core\Exceptions\QueryException * @throws \SP\Core\Exceptions\ConstraintException @@ -78,31 +80,25 @@ class TrackService extends Service } /** - * @param TrackData $itemData - * @return bool + * @param $id int + * + * @return TrackData * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ - public function update(TrackData $itemData) - { - return $this->trackRepository->update($itemData); - } - - /** - * @param $id int - * @return TrackData - */ public function getById($id) { - return $this->trackRepository->getById($id); + return $this->trackRepository->getById($id)->getData(); } /** * @return TrackData[] + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException */ public function getAll() { - return $this->trackRepository->getAll(); + return $this->trackRepository->getAll()->getDataAsArray(); } /** @@ -118,6 +114,7 @@ class TrackService extends Service * Comprobar los intentos de login * * @param TrackRequest $trackRequest + * * @return bool True if delay is performed, false otherwise * @throws \Exception */ @@ -154,15 +151,19 @@ class TrackService extends Service * Devuelve los tracks de un cliente desde un tiempo y origen determinados * * @param TrackRequest $trackRequest + * * @return array + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException */ public function getTracksForClientFromTime(TrackRequest $trackRequest) { - return $this->trackRepository->getTracksForClientFromTime($trackRequest); + return $this->trackRepository->getTracksForClientFromTime($trackRequest)->getDataAsArray(); } /** * @param TrackRequest $trackRequest + * * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ diff --git a/lib/SP/Services/UserPassRecover/UserPassRecoverService.php b/lib/SP/Services/UserPassRecover/UserPassRecoverService.php index a775f951..cbaf9894 100644 --- a/lib/SP/Services/UserPassRecover/UserPassRecoverService.php +++ b/lib/SP/Services/UserPassRecover/UserPassRecoverService.php @@ -136,18 +136,21 @@ class UserPassRecoverService extends Service * Comprobar el hash de recuperación de clave. * * @param string $hash + * * @return int * @throws ServiceException + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException */ public function getUserIdForHash($hash) { $result = $this->userPassRecoverRepository->getUserIdForHash($hash, time() - self::MAX_PASS_RECOVER_TIME); - if (!is_object($result)) { + if ($result->getNumRows() === 0) { throw new ServiceException(__u('Hash inválido o expirado'), ServiceException::INFO); } - return (int)$result->userId; + return (int)$result->getData()->userId; } /** diff --git a/lib/SP/Util/Checks.php b/lib/SP/Util/Checks.php index b90e9a2b..17279788 100644 --- a/lib/SP/Util/Checks.php +++ b/lib/SP/Util/Checks.php @@ -150,13 +150,14 @@ class Checks { return (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') - || (int)$_SERVER['SERVER_PORT'] === 443; + || (!empty($_SERVER['SERVER_PORT']) && (int)$_SERVER['SERVER_PORT'] === 443); } /** * Comprobar si la petición es Ajax * * @param Klein $router + * * @return bool */ public static function isAjax(Klein $router) @@ -169,6 +170,7 @@ class Checks * Comprobar si la petición es en formato JSON * * @param Klein $router + * * @return bool */ public static function isJson(Klein $router) diff --git a/lib/SP/Util/HttpUtil.php b/lib/SP/Util/HttpUtil.php index 12e230fb..fba2320e 100644 --- a/lib/SP/Util/HttpUtil.php +++ b/lib/SP/Util/HttpUtil.php @@ -2,8 +2,8 @@ /** * sysPass * - * @author nuxsmin - * @link https://syspass.org + * @author nuxsmin + * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. @@ -130,7 +130,7 @@ class HttpUtil return $matchesFor; } - return $_SERVER['REMOTE_ADDR']; + return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; } /** @@ -164,6 +164,7 @@ class HttpUtil * Devolver la dirección IP del cliente * * @param bool $fullForwarded Devolver la cadena de forward completa + * * @return string|array */ public static function getClientAddress($fullForwarded = false) diff --git a/tests/Repositories/AccountRepositoryTest.php b/tests/Repositories/AccountRepositoryTest.php index 6b64dd69..5ef1d017 100644 --- a/tests/Repositories/AccountRepositoryTest.php +++ b/tests/Repositories/AccountRepositoryTest.php @@ -52,7 +52,7 @@ class AccountRepositoryTest extends DatabaseTestCase /** * @var AccountRepository */ - private static $accountRepository; + private static $repository; /** * @throws DependencyException @@ -67,7 +67,7 @@ class AccountRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$accountRepository = $dic->get(AccountRepository::class); + self::$repository = $dic->get(AccountRepository::class); } /** @@ -81,14 +81,14 @@ class AccountRepositoryTest extends DatabaseTestCase $this->assertEquals(2, $this->conn->getRowCount('Account')); // Eliminar un registro y comprobar el total de registros - $this->assertEquals(1, self::$accountRepository->delete(1)); + $this->assertEquals(1, self::$repository->delete(1)); $this->assertEquals(1, $this->conn->getRowCount('Account')); // Eliminar un registro no existente - $this->assertEquals(0, self::$accountRepository->delete(100)); + $this->assertEquals(0, self::$repository->delete(100)); // Eliminar un registro y comprobar el total de registros - $this->assertEquals(1, self::$accountRepository->delete(2)); + $this->assertEquals(1, self::$repository->delete(2)); $this->assertEquals(0, $this->conn->getRowCount('Account')); } @@ -118,16 +118,16 @@ class AccountRepositoryTest extends DatabaseTestCase $accountRequest->passDateChange = time() + 3600; // Comprobar que la modificación de la clave es correcta - $this->assertEquals(1, self::$accountRepository->editPassword($accountRequest)); + $this->assertEquals(1, self::$repository->editPassword($accountRequest)); - $accountPassData = self::$accountRepository->getPasswordForId(2); + $accountPassData = self::$repository->getPasswordForId(2); $clearPassword = Crypt::decrypt($accountPassData->pass, $accountPassData->key, self::SECURE_KEY_PASSWORD); // Comprobar que la clave obtenida es igual a la encriptada anteriormente $this->assertEquals('1234', $clearPassword); // Comprobar que se devuelve un array vacío - $this->assertCount(0, self::$accountRepository->getPasswordForId(10)); + $this->assertCount(0, self::$repository->getPasswordForId(10)); } /** @@ -137,17 +137,18 @@ class AccountRepositoryTest extends DatabaseTestCase */ public function testGetById() { - $account = self::$accountRepository->getById(1); + $account = self::$repository->getById(1); $this->assertInstanceOf(AccountVData::class, $account); $this->assertEquals(1, $account->getId()); $this->expectException(SPException::class); - self::$accountRepository->getById(100); + self::$repository->getById(100); } /** + * @depends testGetById * @throws SPException */ public function testUpdate() @@ -167,9 +168,9 @@ class AccountRepositoryTest extends DatabaseTestCase $accountRequest->parentId = 0; $accountRequest->userGroupId = 2; - $this->assertEquals(1, self::$accountRepository->update($accountRequest)); + $this->assertEquals(1, self::$repository->update($accountRequest)); - $account = self::$accountRepository->getById(1); + $account = self::$repository->getById(1); $this->assertEquals($accountRequest->name, $account->getName()); $this->assertEquals($accountRequest->login, $account->getLogin()); @@ -207,7 +208,7 @@ class AccountRepositoryTest extends DatabaseTestCase // Comprobar registros iniciales $this->assertEquals(2, $this->conn->getRowCount('Account')); - $this->assertEquals(2, self::$accountRepository->deleteByIdBatch([1, 2, 100])); + $this->assertEquals(2, self::$repository->deleteByIdBatch([1, 2, 100])); // Comprobar registros tras eliminación $this->assertEquals(0, $this->conn->getRowCount('Account')); @@ -226,7 +227,7 @@ class AccountRepositoryTest extends DatabaseTestCase $itemSearchData->setSeachString('Google'); $itemSearchData->setLimitCount(10); - $result = self::$accountRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertCount(1, $data); @@ -240,7 +241,7 @@ class AccountRepositoryTest extends DatabaseTestCase $itemSearchData->setSeachString('Apple'); $itemSearchData->setLimitCount(1); - $result = self::$accountRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertCount(1, $data); @@ -261,23 +262,24 @@ class AccountRepositoryTest extends DatabaseTestCase $filter = new QueryCondition(); $filter->addFilter('Account.parentId = 1'); - $this->assertCount(0, self::$accountRepository->getLinked($filter)); + $this->assertCount(0, self::$repository->getLinked($filter)); } /** * Comprobar en incremento del contador de vistas * + * @depends testGetById * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException * @throws SPException */ public function testIncrementViewCounter() { - $accountBefore = self::$accountRepository->getById(1); + $accountBefore = self::$repository->getById(1); - $this->assertTrue(self::$accountRepository->incrementViewCounter(1)); + $this->assertTrue(self::$repository->incrementViewCounter(1)); - $accountAfter = self::$accountRepository->getById(1); + $accountAfter = self::$repository->getById(1); $this->assertEquals($accountBefore->getCountView() + 1, $accountAfter->getCountView()); } @@ -290,10 +292,11 @@ class AccountRepositoryTest extends DatabaseTestCase */ public function testGetAll() { - $this->assertCount(2, self::$accountRepository->getAll()); + $this->assertCount(2, self::$repository->getAll()); } /** + * @covers \SP\Repositories\Account\AccountRepository::getPasswordForId() * @throws SPException * @throws \Defuse\Crypto\Exception\CryptoException * @throws \SP\Core\Exceptions\ConstraintException @@ -306,9 +309,9 @@ class AccountRepositoryTest extends DatabaseTestCase $accountRequest->pass = Crypt::encrypt('1234', $accountRequest->key, self::SECURE_KEY_PASSWORD); // Comprobar que la modificación de la clave es correcta - $this->assertTrue(self::$accountRepository->updatePassword($accountRequest)); + $this->assertTrue(self::$repository->updatePassword($accountRequest)); - $accountPassData = self::$accountRepository->getPasswordForId(2); + $accountPassData = self::$repository->getPasswordForId(2); $clearPassword = Crypt::decrypt($accountPassData->pass, $accountPassData->key, self::SECURE_KEY_PASSWORD); // Comprobar que la clave obtenida es igual a la encriptada anteriormente @@ -318,17 +321,18 @@ class AccountRepositoryTest extends DatabaseTestCase /** * Comprobar en incremento del contador de desencriptado * + * @depends testGetById * @throws SPException * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ public function testIncrementDecryptCounter() { - $accountBefore = self::$accountRepository->getById(1); + $accountBefore = self::$repository->getById(1); - $this->assertTrue(self::$accountRepository->incrementDecryptCounter(1)); + $this->assertTrue(self::$repository->incrementDecryptCounter(1)); - $accountAfter = self::$accountRepository->getById(1); + $accountAfter = self::$repository->getById(1); $this->assertEquals($accountBefore->getCountDecrypt() + 1, $accountAfter->getCountDecrypt()); } @@ -341,7 +345,7 @@ class AccountRepositoryTest extends DatabaseTestCase */ public function testGetTotalNumAccounts() { - $this->assertEquals(2, self::$accountRepository->getTotalNumAccounts()->num); + $this->assertEquals(2, self::$repository->getTotalNumAccounts()->num); } /** @@ -363,7 +367,7 @@ class AccountRepositoryTest extends DatabaseTestCase $queryCondition = new QueryCondition(); $queryCondition->addFilter('Account.isPrivate = 1'); - $this->assertCount(0, self::$accountRepository->getForUser($queryCondition)); + $this->assertCount(0, self::$repository->getForUser($queryCondition)); } /** @@ -374,7 +378,7 @@ class AccountRepositoryTest extends DatabaseTestCase */ public function testGetAccountsPassData() { - $this->assertCount(2, self::$accountRepository->getAccountsPassData()); + $this->assertCount(2, self::$repository->getAccountsPassData()); } /** @@ -407,7 +411,7 @@ class AccountRepositoryTest extends DatabaseTestCase // Comprobar registros iniciales $this->assertEquals(2, $this->conn->getRowCount('Account')); - self::$accountRepository->create($accountRequest); + self::$repository->create($accountRequest); // Comprobar registros finales $this->assertEquals(3, $this->conn->getRowCount('Account')); @@ -451,7 +455,7 @@ class AccountRepositoryTest extends DatabaseTestCase $searchFilter->setCategoryId(1); // Comprobar un Id de categoría - $response = self::$accountRepository->getByFilter($searchFilter); + $response = self::$repository->getByFilter($searchFilter); $this->assertInstanceOf(AccountSearchResponse::class, $response); $this->assertEquals(1, $response->getCount()); @@ -462,7 +466,7 @@ class AccountRepositoryTest extends DatabaseTestCase $searchFilter->setLimitCount(10); $searchFilter->setCategoryId(10); - $response = self::$accountRepository->getByFilter($searchFilter); + $response = self::$repository->getByFilter($searchFilter); $this->assertInstanceOf(AccountSearchResponse::class, $response); $this->assertEquals(0, $response->getCount()); @@ -473,7 +477,7 @@ class AccountRepositoryTest extends DatabaseTestCase $searchFilter->setLimitCount(10); $searchFilter->setClientId(1); - $response = self::$accountRepository->getByFilter($searchFilter); + $response = self::$repository->getByFilter($searchFilter); $this->assertInstanceOf(AccountSearchResponse::class, $response); $this->assertEquals(1, $response->getCount()); @@ -484,7 +488,7 @@ class AccountRepositoryTest extends DatabaseTestCase $searchFilter->setLimitCount(10); $searchFilter->setClientId(10); - $response = self::$accountRepository->getByFilter($searchFilter); + $response = self::$repository->getByFilter($searchFilter); $this->assertInstanceOf(AccountSearchResponse::class, $response); $this->assertEquals(0, $response->getCount()); @@ -495,7 +499,7 @@ class AccountRepositoryTest extends DatabaseTestCase $searchFilter->setLimitCount(10); $searchFilter->setCleanTxtSearch('apple.com'); - $response = self::$accountRepository->getByFilter($searchFilter); + $response = self::$repository->getByFilter($searchFilter); $this->assertInstanceOf(AccountSearchResponse::class, $response); $this->assertEquals(1, $response->getCount()); @@ -507,7 +511,7 @@ class AccountRepositoryTest extends DatabaseTestCase $searchFilter->setLimitCount(10); $searchFilter->setSearchFavorites(true); - $response = self::$accountRepository->getByFilter($searchFilter); + $response = self::$repository->getByFilter($searchFilter); $this->assertInstanceOf(AccountSearchResponse::class, $response); $this->assertEquals(0, $response->getCount()); @@ -518,7 +522,7 @@ class AccountRepositoryTest extends DatabaseTestCase $searchFilter->setLimitCount(10); $searchFilter->setTagsId([1]); - $response = self::$accountRepository->getByFilter($searchFilter); + $response = self::$repository->getByFilter($searchFilter); $this->assertInstanceOf(AccountSearchResponse::class, $response); $this->assertEquals(1, $response->getCount()); diff --git a/tests/Repositories/AccountToTagRepositoryTest.php b/tests/Repositories/AccountToTagRepositoryTest.php index b5a17199..1b4b8794 100644 --- a/tests/Repositories/AccountToTagRepositoryTest.php +++ b/tests/Repositories/AccountToTagRepositoryTest.php @@ -45,7 +45,7 @@ class AccountToTagRepositoryTest extends DatabaseTestCase /** * @var AccountToTagRepository */ - private static $accountToTagRepository; + private static $repository; /** * @throws DependencyException @@ -60,12 +60,25 @@ class AccountToTagRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$accountToTagRepository = $dic->get(AccountToTagRepository::class); + self::$repository = $dic->get(AccountToTagRepository::class); + } + + /** + * Comprobar la obtención de etiquetas por Id de cuenta + * + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetTagsByAccountId() + { + $this->assertCount(1, self::$repository->getTagsByAccountId(1)); + $this->assertCount(0, self::$repository->getTagsByAccountId(10)); } /** * Comprobar la creación de etiquetas asociadas a las cuentas * + * @depends testGetTagsByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -75,9 +88,9 @@ class AccountToTagRepositoryTest extends DatabaseTestCase $accountRequest->id = 1; $accountRequest->tags = [2, 3]; - $this->assertEquals(2, self::$accountToTagRepository->add($accountRequest)); + $this->assertEquals(2, self::$repository->add($accountRequest)); - $tags = self::$accountToTagRepository->getTagsByAccountId($accountRequest->id); + $tags = self::$repository->getTagsByAccountId($accountRequest->id); $this->assertCount(3, $tags); $this->assertInstanceOf(ItemData::class, $tags[0]); @@ -88,11 +101,11 @@ class AccountToTagRepositoryTest extends DatabaseTestCase $accountRequest->tags = [1]; - self::$accountToTagRepository->add($accountRequest); + self::$repository->add($accountRequest); $accountRequest->id = 10; - self::$accountToTagRepository->add($accountRequest); + self::$repository->add($accountRequest); } @@ -104,28 +117,17 @@ class AccountToTagRepositoryTest extends DatabaseTestCase */ public function testDeleteByAccountId() { - $this->assertEquals(1, self::$accountToTagRepository->deleteByAccountId(1)); + $this->assertEquals(1, self::$repository->deleteByAccountId(1)); - $this->assertCount(0, self::$accountToTagRepository->getTagsByAccountId(1)); + $this->assertCount(0, self::$repository->getTagsByAccountId(1)); - $this->assertEquals(0, self::$accountToTagRepository->deleteByAccountId(10)); - } - - /** - * Comprobar la obtención de etiquetas por Id de cuenta - * - * @throws ConstraintException - * @throws \SP\Core\Exceptions\QueryException - */ - public function testGetTagsByAccountId() - { - $this->assertCount(1, self::$accountToTagRepository->getTagsByAccountId(1)); - $this->assertCount(0, self::$accountToTagRepository->getTagsByAccountId(10)); + $this->assertEquals(0, self::$repository->deleteByAccountId(10)); } /** * Comprobar la actualización de etiquetas por Id de cuenta * + * @depends testGetTagsByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -135,9 +137,9 @@ class AccountToTagRepositoryTest extends DatabaseTestCase $accountRequest->id = 1; $accountRequest->tags = [1, 2]; - self::$accountToTagRepository->update($accountRequest); + self::$repository->update($accountRequest); - $tags = self::$accountToTagRepository->getTagsByAccountId($accountRequest->id); + $tags = self::$repository->getTagsByAccountId($accountRequest->id); $this->assertCount(2, $tags); $this->assertInstanceOf(ItemData::class, $tags[0]); diff --git a/tests/Repositories/AccountToUserGroupRepositoryTest.php b/tests/Repositories/AccountToUserGroupRepositoryTest.php index a5bda9e4..dcb3dc6e 100644 --- a/tests/Repositories/AccountToUserGroupRepositoryTest.php +++ b/tests/Repositories/AccountToUserGroupRepositoryTest.php @@ -45,7 +45,7 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase /** * @var AccountToUserGroupRepository */ - private static $accountToUserGroupRepository; + private static $repository; /** * @throws DependencyException @@ -60,51 +60,18 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$accountToUserGroupRepository = $dic->get(AccountToUserGroupRepository::class); - } - - /** - * Comprobar la actualización de grupos de usuarios por Id de cuenta - * - * @throws \SP\Core\Exceptions\ConstraintException - * @throws \SP\Core\Exceptions\QueryException - */ - public function testUpdate() - { - $accountRequest = new AccountRequest(); - $accountRequest->id = 1; - $accountRequest->userGroupsView = [1, 2, 3]; - - $this->assertEquals(3, self::$accountToUserGroupRepository->update($accountRequest)); - - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByAccountId($accountRequest->id); - - $this->assertCount(3, $userGroups); - $this->assertInstanceOf(ItemData::class, $userGroups[0]); - $this->assertEquals(0, (int)$userGroups[0]->isEdit); - $this->assertInstanceOf(ItemData::class, $userGroups[1]); - $this->assertEquals(0, (int)$userGroups[1]->isEdit); - $this->assertInstanceOf(ItemData::class, $userGroups[2]); - $this->assertEquals(0, (int)$userGroups[2]->isEdit); - - $this->expectException(ConstraintException::class); - - $accountRequest->userGroupsView = [10]; - - self::$accountToUserGroupRepository->update($accountRequest); - - $accountRequest->id = 3; - $accountRequest->userGroupsView = [1, 2, 3]; - - self::$accountToUserGroupRepository->update($accountRequest); + self::$repository = $dic->get(AccountToUserGroupRepository::class); } /** * Comprobar la obtención de grupos de usuarios por Id de cuenta + * + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException */ - public function testGetUsersByAccountId() + public function testGetUserGroupsByAccountId() { - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByAccountId(1); + $userGroups = self::$repository->getUserGroupsByAccountId(1); $this->assertCount(1, $userGroups); $this->assertInstanceOf(ItemData::class, $userGroups[0]); @@ -121,7 +88,7 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase $this->assertCount(1, $userGroupsEdit); - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByAccountId(2); + $userGroups = self::$repository->getUserGroupsByAccountId(2); $this->assertCount(1, $userGroups); $this->assertInstanceOf(ItemData::class, $userGroups[0]); @@ -138,14 +105,52 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase $this->assertCount(0, $userGroupsEdit); - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByAccountId(3); + $userGroups = self::$repository->getUserGroupsByAccountId(3); $this->assertCount(0, $userGroups); } + /** + * Comprobar la actualización de grupos de usuarios por Id de cuenta + * + * @depends testGetUserGroupsByAccountId + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testUpdate() + { + $accountRequest = new AccountRequest(); + $accountRequest->id = 1; + $accountRequest->userGroupsView = [1, 2, 3]; + + $this->assertEquals(3, self::$repository->update($accountRequest)); + + $userGroups = self::$repository->getUserGroupsByAccountId($accountRequest->id); + + $this->assertCount(3, $userGroups); + $this->assertInstanceOf(ItemData::class, $userGroups[0]); + $this->assertEquals(0, (int)$userGroups[0]->isEdit); + $this->assertInstanceOf(ItemData::class, $userGroups[1]); + $this->assertEquals(0, (int)$userGroups[1]->isEdit); + $this->assertInstanceOf(ItemData::class, $userGroups[2]); + $this->assertEquals(0, (int)$userGroups[2]->isEdit); + + $this->expectException(ConstraintException::class); + + $accountRequest->userGroupsView = [10]; + + self::$repository->update($accountRequest); + + $accountRequest->id = 3; + $accountRequest->userGroupsView = [1, 2, 3]; + + self::$repository->update($accountRequest); + } + /** * Comprobar la actualización de grupos de usuarios con permisos de modificación por Id de cuenta * + * @depends testGetUserGroupsByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -155,9 +160,9 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase $accountRequest->id = 2; $accountRequest->userGroupsEdit = [2, 3]; - $this->assertEquals(3, self::$accountToUserGroupRepository->updateEdit($accountRequest)); + $this->assertEquals(3, self::$repository->updateEdit($accountRequest)); - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByAccountId($accountRequest->id); + $userGroups = self::$repository->getUserGroupsByAccountId($accountRequest->id); $this->assertCount(2, $userGroups); $this->assertInstanceOf(ItemData::class, $userGroups[0]); @@ -170,27 +175,28 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase // Comprobar que se lanza excepción al añadir usuarios no existentes $accountRequest->userGroupsEdit = [10]; - self::$accountToUserGroupRepository->updateEdit($accountRequest); + self::$repository->updateEdit($accountRequest); // Comprobar que se lanza excepción al añadir usuarios a cuenta no existente $accountRequest->id = 3; $accountRequest->userGroupsEdit = [2, 3]; - self::$accountToUserGroupRepository->updateEdit($accountRequest); + self::$repository->updateEdit($accountRequest); } /** * Comprobar la eliminación de grupos de usuarios por Id de cuenta * + * @depends testGetUserGroupsByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ public function testDeleteByAccountId() { - $this->assertEquals(1, self::$accountToUserGroupRepository->deleteByAccountId(1)); - $this->assertCount(0, self::$accountToUserGroupRepository->getUserGroupsByAccountId(1)); + $this->assertEquals(1, self::$repository->deleteByAccountId(1)); + $this->assertCount(0, self::$repository->getUserGroupsByAccountId(1)); - $this->assertEquals(0, self::$accountToUserGroupRepository->deleteByAccountId(10)); + $this->assertEquals(0, self::$repository->deleteByAccountId(10)); $this->assertEquals(1, $this->conn->getRowCount('AccountToUserGroup')); } @@ -198,6 +204,7 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase /** * Comprobar la insercción de grupos de usuarios con permisos de modificación por Id de cuenta * + * @depends testGetUserGroupsByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -207,9 +214,9 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase $accountRequest->id = 2; $accountRequest->userGroupsEdit = [1, 2, 3]; - self::$accountToUserGroupRepository->addEdit($accountRequest); + self::$repository->addEdit($accountRequest); - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByAccountId($accountRequest->id); + $userGroups = self::$repository->getUserGroupsByAccountId($accountRequest->id); $this->assertCount(3, $userGroups); $this->assertInstanceOf(ItemData::class, $userGroups[0]); @@ -221,18 +228,19 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase // Comprobar que se lanza excepción al añadir usuarios no existentes $accountRequest->userGroupsEdit = [10]; - self::$accountToUserGroupRepository->addEdit($accountRequest); + self::$repository->addEdit($accountRequest); // Comprobar que se lanza excepción al añadir grupos de usuarios a cuenta no existente $accountRequest->id = 3; $accountRequest->userGroupsEdit = [1, 2, 3]; - self::$accountToUserGroupRepository->addEdit($accountRequest); + self::$repository->addEdit($accountRequest); } /** * Comprobar la insercción de grupos de usuarios por Id de cuenta * + * @depends testGetUserGroupsByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -242,9 +250,9 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase $accountRequest->id = 2; $accountRequest->userGroupsView = [1, 2, 3]; - $this->assertEquals(3, self::$accountToUserGroupRepository->add($accountRequest)); + $this->assertEquals(3, self::$repository->add($accountRequest)); - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByAccountId($accountRequest->id); + $userGroups = self::$repository->getUserGroupsByAccountId($accountRequest->id); $this->assertCount(3, $userGroups); $this->assertInstanceOf(ItemData::class, $userGroups[0]); @@ -256,45 +264,49 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase // Comprobar que se lanza excepción al añadir usuarios no existentes $accountRequest->userGroupsView = [10]; - self::$accountToUserGroupRepository->add($accountRequest); + self::$repository->add($accountRequest); // Comprobar que se lanza excepción al añadir grupos de usuarios a cuenta no existente $accountRequest->id = 3; $accountRequest->userGroupsView = [1, 2, 3]; - self::$accountToUserGroupRepository->add($accountRequest); + self::$repository->add($accountRequest); } /** * Comprobar la eliminación de grupos de usuarios con permisos de modificación por Id de cuenta * + * @depends testGetUserGroupsByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ public function testDeleteEditByAccountId() { - $this->assertEquals(1, self::$accountToUserGroupRepository->deleteEditByAccountId(1)); - $this->assertCount(0, self::$accountToUserGroupRepository->getUserGroupsByAccountId(1)); + $this->assertEquals(1, self::$repository->deleteEditByAccountId(1)); + $this->assertCount(0, self::$repository->getUserGroupsByAccountId(1)); - $this->assertEquals(0, self::$accountToUserGroupRepository->deleteEditByAccountId(10)); + $this->assertEquals(0, self::$repository->deleteEditByAccountId(10)); $this->assertEquals(1, $this->conn->getRowCount('AccountToUserGroup')); } /** * Comprobar la obtención de grupos de usuarios por Id de grupo + * + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException */ public function testGetUserGroupsByUserGroupId() { - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByUserGroupId(2); + $userGroups = self::$repository->getUserGroupsByUserGroupId(2); $this->assertCount(2, $userGroups); - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByUserGroupId(3); + $userGroups = self::$repository->getUserGroupsByUserGroupId(3); $this->assertCount(0, $userGroups); - $userGroups = self::$accountToUserGroupRepository->getUserGroupsByUserGroupId(10); + $userGroups = self::$repository->getUserGroupsByUserGroupId(10); $this->assertCount(0, $userGroups); } @@ -307,10 +319,10 @@ class AccountToUserGroupRepositoryTest extends DatabaseTestCase */ public function testDeleteByUserGroupId() { - $this->assertEquals(2, self::$accountToUserGroupRepository->deleteByUserGroupId(2)); + $this->assertEquals(2, self::$repository->deleteByUserGroupId(2)); - $this->assertEquals(0, self::$accountToUserGroupRepository->deleteByUserGroupId(1)); + $this->assertEquals(0, self::$repository->deleteByUserGroupId(1)); - $this->assertEquals(0, self::$accountToUserGroupRepository->deleteByUserGroupId(10)); + $this->assertEquals(0, self::$repository->deleteByUserGroupId(10)); } } diff --git a/tests/Repositories/AccountToUserRepositoryTest.php b/tests/Repositories/AccountToUserRepositoryTest.php index a9c71a9f..3531f4bf 100644 --- a/tests/Repositories/AccountToUserRepositoryTest.php +++ b/tests/Repositories/AccountToUserRepositoryTest.php @@ -45,7 +45,7 @@ class AccountToUserRepositoryTest extends DatabaseTestCase /** * @var AccountToUserRepository */ - private static $accountToUserRepository; + private static $repository; /** * @throws DependencyException @@ -60,51 +60,18 @@ class AccountToUserRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$accountToUserRepository = $dic->get(AccountToUserRepository::class); - } - - /** - * Comprobar la actualización de usuarios por Id de cuenta - * - * @throws \SP\Core\Exceptions\ConstraintException - * @throws \SP\Core\Exceptions\QueryException - */ - public function testUpdate() - { - $accountRequest = new AccountRequest(); - $accountRequest->id = 1; - $accountRequest->usersView = [1, 2, 3]; - - self::$accountToUserRepository->update($accountRequest); - - $users = self::$accountToUserRepository->getUsersByAccountId($accountRequest->id); - - $this->assertCount(3, $users); - $this->assertInstanceOf(ItemData::class, $users[0]); - $this->assertEquals(0, (int)$users[0]->isEdit); - $this->assertInstanceOf(ItemData::class, $users[1]); - $this->assertEquals(0, (int)$users[1]->isEdit); - $this->assertInstanceOf(ItemData::class, $users[2]); - $this->assertEquals(0, (int)$users[2]->isEdit); - - $this->expectException(ConstraintException::class); - - $accountRequest->usersView = [10]; - - self::$accountToUserRepository->update($accountRequest); - - $accountRequest->id = 3; - $accountRequest->usersView = [1, 2, 3]; - - self::$accountToUserRepository->update($accountRequest); + self::$repository = $dic->get(AccountToUserRepository::class); } /** * Comprobar la obtención de usuarios por Id de cuenta + * + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException */ public function testGetUsersByAccountId() { - $users = self::$accountToUserRepository->getUsersByAccountId(1); + $users = self::$repository->getUsersByAccountId(1); $this->assertCount(1, $users); $this->assertInstanceOf(ItemData::class, $users[0]); @@ -121,7 +88,7 @@ class AccountToUserRepositoryTest extends DatabaseTestCase $this->assertCount(1, $usersEdit); - $users = self::$accountToUserRepository->getUsersByAccountId(2); + $users = self::$repository->getUsersByAccountId(2); $this->assertCount(1, $users); $this->assertInstanceOf(ItemData::class, $users[0]); @@ -138,14 +105,52 @@ class AccountToUserRepositoryTest extends DatabaseTestCase $this->assertCount(0, $usersEdit); - $users = self::$accountToUserRepository->getUsersByAccountId(3); + $users = self::$repository->getUsersByAccountId(3); $this->assertCount(0, $users); } + /** + * Comprobar la actualización de usuarios por Id de cuenta + * + * @depends testGetUsersByAccountId + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testUpdate() + { + $accountRequest = new AccountRequest(); + $accountRequest->id = 1; + $accountRequest->usersView = [1, 2, 3]; + + self::$repository->update($accountRequest); + + $users = self::$repository->getUsersByAccountId($accountRequest->id); + + $this->assertCount(3, $users); + $this->assertInstanceOf(ItemData::class, $users[0]); + $this->assertEquals(0, (int)$users[0]->isEdit); + $this->assertInstanceOf(ItemData::class, $users[1]); + $this->assertEquals(0, (int)$users[1]->isEdit); + $this->assertInstanceOf(ItemData::class, $users[2]); + $this->assertEquals(0, (int)$users[2]->isEdit); + + $this->expectException(ConstraintException::class); + + $accountRequest->usersView = [10]; + + self::$repository->update($accountRequest); + + $accountRequest->id = 3; + $accountRequest->usersView = [1, 2, 3]; + + self::$repository->update($accountRequest); + } + /** * Comprobar la actualización de usuarios con permisos de modificación por Id de cuenta * + * @depends testGetUsersByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -155,9 +160,9 @@ class AccountToUserRepositoryTest extends DatabaseTestCase $accountRequest->id = 2; $accountRequest->usersEdit = [2, 3]; - self::$accountToUserRepository->updateEdit($accountRequest); + self::$repository->updateEdit($accountRequest); - $users = self::$accountToUserRepository->getUsersByAccountId($accountRequest->id); + $users = self::$repository->getUsersByAccountId($accountRequest->id); $this->assertCount(2, $users); $this->assertInstanceOf(ItemData::class, $users[0]); @@ -170,27 +175,28 @@ class AccountToUserRepositoryTest extends DatabaseTestCase // Comprobar que se lanza excepción al añadir usuarios no existentes $accountRequest->usersEdit = [10]; - self::$accountToUserRepository->updateEdit($accountRequest); + self::$repository->updateEdit($accountRequest); // Comprobar que se lanza excepción al añadir usuarios a cuenta no existente $accountRequest->id = 3; $accountRequest->usersEdit = [2, 3]; - self::$accountToUserRepository->updateEdit($accountRequest); + self::$repository->updateEdit($accountRequest); } /** * Comprobar la eliminación de usuarios por Id de cuenta * + * @depends testGetUsersByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ public function testDeleteByAccountId() { - $this->assertEquals(1, self::$accountToUserRepository->deleteByAccountId(1)); - $this->assertCount(0, self::$accountToUserRepository->getUsersByAccountId(1)); + $this->assertEquals(1, self::$repository->deleteByAccountId(1)); + $this->assertCount(0, self::$repository->getUsersByAccountId(1)); - $this->assertEquals(0, self::$accountToUserRepository->deleteByAccountId(10)); + $this->assertEquals(0, self::$repository->deleteByAccountId(10)); $this->assertEquals(1, $this->conn->getRowCount('AccountToUser')); } @@ -198,6 +204,7 @@ class AccountToUserRepositoryTest extends DatabaseTestCase /** * Comprobar la insercción de usuarios con permisos de modificación por Id de cuenta * + * @depends testGetUsersByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -207,9 +214,9 @@ class AccountToUserRepositoryTest extends DatabaseTestCase $accountRequest->id = 2; $accountRequest->usersEdit = [1, 2, 3]; - self::$accountToUserRepository->addEdit($accountRequest); + self::$repository->addEdit($accountRequest); - $users = self::$accountToUserRepository->getUsersByAccountId($accountRequest->id); + $users = self::$repository->getUsersByAccountId($accountRequest->id); $this->assertCount(3, $users); $this->assertInstanceOf(ItemData::class, $users[0]); @@ -221,18 +228,19 @@ class AccountToUserRepositoryTest extends DatabaseTestCase // Comprobar que se lanza excepción al añadir usuarios no existentes $accountRequest->usersEdit = [10]; - self::$accountToUserRepository->addEdit($accountRequest); + self::$repository->addEdit($accountRequest); // Comprobar que se lanza excepción al añadir usuarios a cuenta no existente $accountRequest->id = 3; $accountRequest->usersEdit = [1, 2, 3]; - self::$accountToUserRepository->addEdit($accountRequest); + self::$repository->addEdit($accountRequest); } /** * Comprobar la insercción de usuarios por Id de cuenta * + * @depends testGetUsersByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ @@ -242,9 +250,9 @@ class AccountToUserRepositoryTest extends DatabaseTestCase $accountRequest->id = 2; $accountRequest->usersView = [1, 2, 3]; - self::$accountToUserRepository->add($accountRequest); + self::$repository->add($accountRequest); - $users = self::$accountToUserRepository->getUsersByAccountId($accountRequest->id); + $users = self::$repository->getUsersByAccountId($accountRequest->id); $this->assertCount(3, $users); $this->assertInstanceOf(ItemData::class, $users[0]); @@ -256,27 +264,28 @@ class AccountToUserRepositoryTest extends DatabaseTestCase // Comprobar que se lanza excepción al añadir usuarios no existentes $accountRequest->usersView = [10]; - self::$accountToUserRepository->add($accountRequest); + self::$repository->add($accountRequest); // Comprobar que se lanza excepción al añadir usuarios a cuenta no existente $accountRequest->id = 3; $accountRequest->usersView = [1, 2, 3]; - self::$accountToUserRepository->add($accountRequest); + self::$repository->add($accountRequest); } /** * Comprobar la eliminación de usuarios con permisos de modificación por Id de cuenta * + * @depends testGetUsersByAccountId * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ public function testDeleteEditByAccountId() { - $this->assertEquals(1, self::$accountToUserRepository->deleteEditByAccountId(1)); - $this->assertCount(0, self::$accountToUserRepository->getUsersByAccountId(1)); + $this->assertEquals(1, self::$repository->deleteEditByAccountId(1)); + $this->assertCount(0, self::$repository->getUsersByAccountId(1)); - $this->assertEquals(0, self::$accountToUserRepository->deleteEditByAccountId(10)); + $this->assertEquals(0, self::$repository->deleteEditByAccountId(10)); $this->assertEquals(1, $this->conn->getRowCount('AccountToUser')); } diff --git a/tests/Repositories/AuthTokenRepositoryTest.php b/tests/Repositories/AuthTokenRepositoryTest.php index 2daf3336..cfbbef63 100644 --- a/tests/Repositories/AuthTokenRepositoryTest.php +++ b/tests/Repositories/AuthTokenRepositoryTest.php @@ -51,7 +51,7 @@ class AuthTokenRepositoryTest extends DatabaseTestCase /** * @var AuthTokenRepository */ - private static $authTokenRepository; + private static $repository; /** * @throws DependencyException @@ -66,12 +66,16 @@ class AuthTokenRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$authTokenRepository = $dic->get(AuthTokenRepository::class); + self::$repository = $dic->get(AuthTokenRepository::class); } + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ public function testGetById() { - $authToken = self::$authTokenRepository->getById(1); + $authToken = self::$repository->getById(1); $this->assertInstanceOf(AuthTokenData::class, $authToken); $this->assertEquals(1, $authToken->getId()); @@ -79,7 +83,7 @@ class AuthTokenRepositoryTest extends DatabaseTestCase $this->assertEquals(self::AUTH_TOKEN, $authToken->getToken()); $this->assertNull($authToken->getHash()); - $authToken = self::$authTokenRepository->getById(2); + $authToken = self::$repository->getById(2); $this->assertInstanceOf(AuthTokenData::class, $authToken); $this->assertEquals(2, $authToken->getId()); @@ -88,11 +92,15 @@ class AuthTokenRepositoryTest extends DatabaseTestCase $this->assertTrue(Hash::checkHashKey(self::AUTH_TOKEN_PASS, $authToken->getHash())); } + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ public function testGetTokenByUserId() { - $this->assertEquals(self::AUTH_TOKEN, self::$authTokenRepository->getTokenByUserId(1)); + $this->assertEquals(self::AUTH_TOKEN, self::$repository->getTokenByUserId(1)); - $this->assertNull(self::$authTokenRepository->getTokenByUserId(2)); + $this->assertNull(self::$repository->getTokenByUserId(2)); } /** @@ -100,6 +108,30 @@ class AuthTokenRepositoryTest extends DatabaseTestCase * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ + public function testGetTokenByToken() + { + $authToken = self::$repository->getTokenByToken(ActionsInterface::ACCOUNT_VIEW_PASS, self::AUTH_TOKEN); + + $this->assertEquals(2, $authToken->getId()); + $this->assertEquals(ActionsInterface::ACCOUNT_VIEW_PASS, $authToken->getActionId()); + $this->assertTrue(Hash::checkHashKey(self::AUTH_TOKEN_PASS, $authToken->getHash())); + $this->assertNotEmpty($authToken->getVault()); + + /** @var Vault $vault */ + $vault = Util::unserialize(Vault::class, $authToken->getVault()); + $this->assertEquals('12345678900', $vault->getData(self::AUTH_TOKEN_PASS . self::AUTH_TOKEN)); + + $this->expectException(CryptoException::class); + + $vault->getData(1234); + } + + /** + * @depends testGetTokenByToken + * @throws CryptoException + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ public function testRefreshVaultByUserId() { $vault = Vault::getInstance() @@ -107,9 +139,9 @@ class AuthTokenRepositoryTest extends DatabaseTestCase ->getSerialized(); $hash = Hash::hashKey(self::AUTH_TOKEN_PASS); - $this->assertEquals(1, self::$authTokenRepository->refreshVaultByUserId(1, $vault, $hash)); + $this->assertEquals(1, self::$repository->refreshVaultByUserId(1, $vault, $hash)); - $authToken = self::$authTokenRepository->getTokenByToken(ActionsInterface::ACCOUNT_VIEW_PASS, self::AUTH_TOKEN); + $authToken = self::$repository->getTokenByToken(ActionsInterface::ACCOUNT_VIEW_PASS, self::AUTH_TOKEN); $this->assertInstanceOf(AuthTokenData::class, $authToken); $this->assertTrue(Hash::checkHashKey(self::AUTH_TOKEN_PASS, $authToken->getHash())); @@ -121,6 +153,7 @@ class AuthTokenRepositoryTest extends DatabaseTestCase } /** + * @depends testGetTokenByUserId * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException @@ -130,17 +163,17 @@ class AuthTokenRepositoryTest extends DatabaseTestCase $token = Util::generateRandomBytes(); // Comprobar actualización con usuario que existe - $this->assertEquals(2, self::$authTokenRepository->refreshTokenByUserId(1, $token)); - $this->assertEquals($token, self::$authTokenRepository->getTokenByUserId(1)); + $this->assertEquals(2, self::$repository->refreshTokenByUserId(1, $token)); + $this->assertEquals($token, self::$repository->getTokenByUserId(1)); // Comprobar actualización con usuario que NO existe - $this->assertEquals(0, self::$authTokenRepository->refreshTokenByUserId(2, $token)); - $this->assertNull(self::$authTokenRepository->getTokenByUserId(2)); + $this->assertEquals(0, self::$repository->refreshTokenByUserId(2, $token)); + $this->assertNull(self::$repository->getTokenByUserId(2)); } /** - * @covers \SP\Repositories\AuthToken\AuthTokenRepository::checkDuplicatedOnUpdate() - * + * @covers \SP\Repositories\AuthToken\AuthTokenRepository::checkDuplicatedOnUpdate() + * @depends testGetTokenByToken * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException @@ -162,9 +195,9 @@ class AuthTokenRepositoryTest extends DatabaseTestCase $authTokenData->setVault($vault); $authTokenData->setUserId(2); - $this->assertEquals(1, self::$authTokenRepository->update($authTokenData)); + $this->assertEquals(1, self::$repository->update($authTokenData)); - $result = self::$authTokenRepository->getTokenByToken(ActionsInterface::ACCOUNT_CREATE, $token); + $result = self::$repository->getTokenByToken(ActionsInterface::ACCOUNT_CREATE, $token); $this->assertInstanceOf(AuthTokenData::class, $result); $this->assertEquals(ActionsInterface::ACCOUNT_CREATE, $result->getActionId()); @@ -177,30 +210,7 @@ class AuthTokenRepositoryTest extends DatabaseTestCase $authTokenData->setId(2); $authTokenData->setUserId(1); - self::$authTokenRepository->update($authTokenData); - } - - /** - * @throws CryptoException - * @throws \SP\Core\Exceptions\ConstraintException - * @throws \SP\Core\Exceptions\QueryException - */ - public function testGetTokenByToken() - { - $authToken = self::$authTokenRepository->getTokenByToken(ActionsInterface::ACCOUNT_VIEW_PASS, self::AUTH_TOKEN); - - $this->assertEquals(2, $authToken->getId()); - $this->assertEquals(ActionsInterface::ACCOUNT_VIEW_PASS, $authToken->getActionId()); - $this->assertTrue(Hash::checkHashKey(self::AUTH_TOKEN_PASS, $authToken->getHash())); - $this->assertNotEmpty($authToken->getVault()); - - /** @var Vault $vault */ - $vault = Util::unserialize(Vault::class, $authToken->getVault()); - $this->assertEquals('12345678900', $vault->getData(self::AUTH_TOKEN_PASS . self::AUTH_TOKEN)); - - $this->expectException(CryptoException::class); - - $vault->getData(1234); + self::$repository->update($authTokenData); } /** @@ -212,7 +222,7 @@ class AuthTokenRepositoryTest extends DatabaseTestCase $itemSearchData = new ItemSearchData(); $itemSearchData->setSeachString('admin'); - $result = self::$authTokenRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(2, $result->getNumRows()); @@ -229,7 +239,7 @@ class AuthTokenRepositoryTest extends DatabaseTestCase $itemSearchData = new ItemSearchData(); $itemSearchData->setSeachString('test'); - $result = self::$authTokenRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $this->assertEquals(0, $result->getNumRows()); $this->assertCount(0, $result->getDataAsArray()); @@ -243,10 +253,10 @@ class AuthTokenRepositoryTest extends DatabaseTestCase { $this->assertEquals(2, $this->conn->getRowCount('AuthToken')); - $this->assertEquals(2, self::$authTokenRepository->deleteByIdBatch([1, 2, 3])); + $this->assertEquals(2, self::$repository->deleteByIdBatch([1, 2, 3])); $this->assertEquals(0, $this->conn->getRowCount('AuthToken')); - $this->assertEquals(0, self::$authTokenRepository->deleteByIdBatch([])); + $this->assertEquals(0, self::$repository->deleteByIdBatch([])); } /** @@ -255,9 +265,9 @@ class AuthTokenRepositoryTest extends DatabaseTestCase */ public function testGetUserIdForToken() { - $this->assertEquals(1, self::$authTokenRepository->getUserIdForToken(self::AUTH_TOKEN)); + $this->assertEquals(1, self::$repository->getUserIdForToken(self::AUTH_TOKEN)); - $this->assertFalse(self::$authTokenRepository->getUserIdForToken('no_token')); + $this->assertFalse(self::$repository->getUserIdForToken('no_token')); } /** @@ -266,9 +276,9 @@ class AuthTokenRepositoryTest extends DatabaseTestCase */ public function testDelete() { - $this->assertEquals(1, self::$authTokenRepository->delete(1)); + $this->assertEquals(1, self::$repository->delete(1)); - $this->assertEquals(0, self::$authTokenRepository->delete(10)); + $this->assertEquals(0, self::$repository->delete(10)); } /** @@ -294,10 +304,10 @@ class AuthTokenRepositoryTest extends DatabaseTestCase $authTokenData->setVault($vault); $authTokenData->setUserId(2); - $this->assertEquals(3, self::$authTokenRepository->create($authTokenData)); + $this->assertEquals(3, self::$repository->create($authTokenData)); $this->assertEquals(3, $this->conn->getRowCount('AuthToken')); - $result = self::$authTokenRepository->getTokenByToken(ActionsInterface::ACCOUNT_CREATE, $token); + $result = self::$repository->getTokenByToken(ActionsInterface::ACCOUNT_CREATE, $token); $this->assertInstanceOf(AuthTokenData::class, $result); $this->assertEquals(ActionsInterface::ACCOUNT_CREATE, $result->getActionId()); @@ -310,6 +320,6 @@ class AuthTokenRepositoryTest extends DatabaseTestCase $authTokenData->setUserId(1); - self::$authTokenRepository->create($authTokenData); + self::$repository->create($authTokenData); } } diff --git a/tests/Repositories/CategoryRepositoryTest.php b/tests/Repositories/CategoryRepositoryTest.php index ad269ca7..947413bd 100644 --- a/tests/Repositories/CategoryRepositoryTest.php +++ b/tests/Repositories/CategoryRepositoryTest.php @@ -46,7 +46,7 @@ class CategoryRepositoryTest extends DatabaseTestCase /** * @var CategoryRepository */ - private static $categoryRepository; + private static $repository; /** * @throws \DI\NotFoundException @@ -61,30 +61,33 @@ class CategoryRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$categoryRepository = $dic->get(CategoryRepository::class); + self::$repository = $dic->get(CategoryRepository::class); } /** * Comprobar los resultados de obtener las categorías por nombre + * + * @throws ConstraintException + * @throws QueryException */ public function testGetByName() { - $category = self::$categoryRepository->getByName('Prueba'); + $category = self::$repository->getByName('Prueba'); $this->assertCount(0, $category); - $category = self::$categoryRepository->getByName('Web'); + $category = self::$repository->getByName('Web'); $this->assertEquals(1, $category->getId()); $this->assertEquals('Web sites', $category->getDescription()); - $category = self::$categoryRepository->getByName('Linux'); + $category = self::$repository->getByName('Linux'); $this->assertEquals(2, $category->getId()); $this->assertEquals('Linux server', $category->getDescription()); // Se comprueba que el hash generado es el mismo en para el nombre 'Web' - $category = self::$categoryRepository->getByName(' web. '); + $category = self::$repository->getByName(' web. '); $this->assertEquals(1, $category->getId()); $this->assertEquals('Web sites', $category->getDescription()); @@ -102,7 +105,7 @@ class CategoryRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('linux'); - $result = self::$categoryRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(1, $result->getNumRows()); @@ -115,7 +118,7 @@ class CategoryRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('prueba'); - $result = self::$categoryRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(0, $result->getNumRows()); @@ -124,19 +127,22 @@ class CategoryRepositoryTest extends DatabaseTestCase /** * Comprobar los resultados de obtener las categorías por Id + * + * @throws ConstraintException + * @throws QueryException */ public function testGetById() { - $category = self::$categoryRepository->getById(10); + $category = self::$repository->getById(10); $this->assertCount(0, $category); - $category = self::$categoryRepository->getById(1); + $category = self::$repository->getById(1); $this->assertEquals('Web', $category->getName()); $this->assertEquals('Web sites', $category->getDescription()); - $category = self::$categoryRepository->getById(2); + $category = self::$repository->getById(2); $this->assertEquals('Linux', $category->getName()); $this->assertEquals('Linux server', $category->getDescription()); @@ -144,12 +150,15 @@ class CategoryRepositoryTest extends DatabaseTestCase /** * Comprobar la obtención de todas las categorías + * + * @throws ConstraintException + * @throws QueryException */ public function testGetAll() { $count = $this->conn->getRowCount('Category'); - $results = self::$categoryRepository->getAll(); + $results = self::$repository->getAll(); $this->assertCount($count, $results); @@ -166,7 +175,8 @@ class CategoryRepositoryTest extends DatabaseTestCase /** * Comprobar la actualización de categorías * - * @covers \SP\Repositories\Category\CategoryRepository::checkDuplicatedOnUpdate() + * @depends testGetById + * @covers \SP\Repositories\Category\CategoryRepository::checkDuplicatedOnUpdate() * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException * @throws \SP\Core\Exceptions\SPException @@ -179,9 +189,9 @@ class CategoryRepositoryTest extends DatabaseTestCase $categoryData->name = 'Web prueba'; $categoryData->description = 'Descripción web prueba'; - self::$categoryRepository->update($categoryData); + self::$repository->update($categoryData); - $category = self::$categoryRepository->getById(1); + $category = self::$repository->getById(1); $this->assertEquals($category->getName(), $categoryData->name); $this->assertEquals($category->getDescription(), $categoryData->description); @@ -193,7 +203,7 @@ class CategoryRepositoryTest extends DatabaseTestCase $this->expectException(DuplicatedItemException::class); - self::$categoryRepository->update($categoryData); + self::$repository->update($categoryData); } /** @@ -206,7 +216,7 @@ class CategoryRepositoryTest extends DatabaseTestCase { $countBefore = $this->conn->getRowCount('Category'); - $this->assertEquals(1, self::$categoryRepository->deleteByIdBatch([3])); + $this->assertEquals(1, self::$repository->deleteByIdBatch([3])); $countAfter = $this->conn->getRowCount('Category'); @@ -215,13 +225,14 @@ class CategoryRepositoryTest extends DatabaseTestCase // Comprobar que se produce una excepción al tratar de eliminar categorías usadas $this->expectException(ConstraintException::class); - $this->assertEquals(1, self::$categoryRepository->deleteByIdBatch([1, 2, 3])); + $this->assertEquals(1, self::$repository->deleteByIdBatch([1, 2, 3])); } /** * Comprobar la creación de categorías * - * @covers \SP\Repositories\Category\CategoryRepository::checkDuplicatedOnAdd() + * @depends testGetById + * @covers \SP\Repositories\Category\CategoryRepository::checkDuplicatedOnAdd() * @throws DuplicatedItemException * @throws \SP\Core\Exceptions\SPException */ @@ -233,10 +244,10 @@ class CategoryRepositoryTest extends DatabaseTestCase $categoryData->name = 'Categoría prueba'; $categoryData->description = 'Descripción prueba'; - $id = self::$categoryRepository->create($categoryData); + $id = self::$repository->create($categoryData); // Comprobar que el Id devuelto corresponde con la categoría creada - $category = self::$categoryRepository->getById($id); + $category = self::$repository->getById($id); $this->assertEquals($categoryData->name, $category->getName()); @@ -255,7 +266,7 @@ class CategoryRepositoryTest extends DatabaseTestCase { $countBefore = $this->conn->getRowCount('Category'); - $this->assertEquals(1, self::$categoryRepository->delete(3)); + $this->assertEquals(1, self::$repository->delete(3)); $countAfter = $this->conn->getRowCount('Category'); @@ -264,7 +275,7 @@ class CategoryRepositoryTest extends DatabaseTestCase // Comprobar que se produce una excepción al tratar de eliminar categorías usadas $this->expectException(ConstraintException::class); - $this->assertEquals(1, self::$categoryRepository->delete(2)); + $this->assertEquals(1, self::$repository->delete(2)); } /** @@ -275,8 +286,8 @@ class CategoryRepositoryTest extends DatabaseTestCase */ public function testGetByIdBatch() { - $this->assertCount(3, self::$categoryRepository->getByIdBatch([1, 2, 3])); - $this->assertCount(3, self::$categoryRepository->getByIdBatch([1, 2, 3, 4, 5])); - $this->assertCount(0, self::$categoryRepository->getByIdBatch([])); + $this->assertCount(3, self::$repository->getByIdBatch([1, 2, 3])); + $this->assertCount(3, self::$repository->getByIdBatch([1, 2, 3, 4, 5])); + $this->assertCount(0, self::$repository->getByIdBatch([])); } } diff --git a/tests/Repositories/ClientRepositoryTest.php b/tests/Repositories/ClientRepositoryTest.php index 989edf02..162b9dfd 100644 --- a/tests/Repositories/ClientRepositoryTest.php +++ b/tests/Repositories/ClientRepositoryTest.php @@ -47,7 +47,7 @@ class ClientRepositoryTest extends DatabaseTestCase /** * @var ClientRepository */ - private static $clientRepository; + private static $repository; /** * @throws \DI\NotFoundException @@ -62,30 +62,33 @@ class ClientRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$clientRepository = $dic->get(ClientRepository::class); + self::$repository = $dic->get(ClientRepository::class); } /** * Comprobar los resultados de obtener los cliente por nombre + * + * @throws ConstraintException + * @throws QueryException */ public function testGetByName() { - $client = self::$clientRepository->getByName('Amazon'); + $client = self::$repository->getByName('Amazon'); $this->assertCount(0, $client); - $client = self::$clientRepository->getByName('Google'); + $client = self::$repository->getByName('Google'); $this->assertEquals(1, $client->getId()); $this->assertEquals('Google Inc.', $client->getDescription()); - $client = self::$clientRepository->getByName('Apple'); + $client = self::$repository->getByName('Apple'); $this->assertEquals(2, $client->getId()); $this->assertEquals('Apple Inc.', $client->getDescription()); // Se comprueba que el hash generado es el mismo en para el nombre 'Web' - $client = self::$clientRepository->getByName(' google. '); + $client = self::$repository->getByName(' google. '); $this->assertEquals(1, $client->getId()); $this->assertEquals('Google Inc.', $client->getDescription()); @@ -103,7 +106,7 @@ class ClientRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('google'); - $result = self::$clientRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(1, $result->getNumRows()); @@ -116,7 +119,7 @@ class ClientRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('prueba'); - $result = self::$clientRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $this->assertEquals(0, $result->getNumRows()); $this->assertCount(0, $result->getDataAsArray()); @@ -124,19 +127,22 @@ class ClientRepositoryTest extends DatabaseTestCase /** * Comprobar los resultados de obtener los clientes por Id + * + * @throws ConstraintException + * @throws QueryException */ public function testGetById() { - $client = self::$clientRepository->getById(10); + $client = self::$repository->getById(10); $this->assertCount(0, $client); - $client = self::$clientRepository->getById(1); + $client = self::$repository->getById(1); $this->assertEquals('Google', $client->getName()); $this->assertEquals('Google Inc.', $client->getDescription()); - $client = self::$clientRepository->getById(2); + $client = self::$repository->getById(2); $this->assertEquals('Apple', $client->getName()); $this->assertEquals('Apple Inc.', $client->getDescription()); @@ -144,12 +150,15 @@ class ClientRepositoryTest extends DatabaseTestCase /** * Comprobar la obtención de todas las client + * + * @throws ConstraintException + * @throws QueryException */ public function testGetAll() { $count = $this->conn->getRowCount('Client'); - $results = self::$clientRepository->getAll(); + $results = self::$repository->getAll(); $this->assertCount($count, $results); @@ -166,7 +175,8 @@ class ClientRepositoryTest extends DatabaseTestCase /** * Comprobar la actualización de clientes * - * @covers \SP\Repositories\Client\ClientRepository::checkDuplicatedOnUpdate() + * @depends testGetById + * @covers \SP\Repositories\Client\ClientRepository::checkDuplicatedOnUpdate() * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException * @throws \SP\Core\Exceptions\SPException @@ -179,9 +189,9 @@ class ClientRepositoryTest extends DatabaseTestCase $clientData->name = 'Cliente prueba'; $clientData->description = 'Descripción cliente prueba'; - self::$clientRepository->update($clientData); + self::$repository->update($clientData); - $category = self::$clientRepository->getById(1); + $category = self::$repository->getById(1); $this->assertEquals($category->getName(), $clientData->name); $this->assertEquals($category->getDescription(), $clientData->description); @@ -193,7 +203,7 @@ class ClientRepositoryTest extends DatabaseTestCase $this->expectException(DuplicatedItemException::class); - self::$clientRepository->update($clientData); + self::$repository->update($clientData); } /** @@ -206,7 +216,7 @@ class ClientRepositoryTest extends DatabaseTestCase { $countBefore = $this->conn->getRowCount('Client'); - $this->assertEquals(1, self::$clientRepository->deleteByIdBatch([3])); + $this->assertEquals(1, self::$repository->deleteByIdBatch([3])); $countAfter = $this->conn->getRowCount('Client'); @@ -215,13 +225,14 @@ class ClientRepositoryTest extends DatabaseTestCase // Comprobar que se produce una excepción al tratar de eliminar clientes usados $this->expectException(ConstraintException::class); - $this->assertEquals(1, self::$clientRepository->deleteByIdBatch([1, 2, 3])); + $this->assertEquals(1, self::$repository->deleteByIdBatch([1, 2, 3])); } /** * Comprobar la creación de clientes * - * @covers \SP\Repositories\Client\ClientRepository::checkDuplicatedOnAdd() + * @depends testGetById + * @covers \SP\Repositories\Client\ClientRepository::checkDuplicatedOnAdd() * @throws DuplicatedItemException * @throws \SP\Core\Exceptions\SPException */ @@ -234,10 +245,10 @@ class ClientRepositoryTest extends DatabaseTestCase $clientData->description = 'Descripción prueba'; $clientData->isGlobal = 1; - $id = self::$clientRepository->create($clientData); + $id = self::$repository->create($clientData); // Comprobar que el Id devuelto corresponde con el cliente creado - $client = self::$clientRepository->getById($id); + $client = self::$repository->getById($id); $this->assertEquals($clientData->name, $client->getName()); $this->assertEquals($clientData->isGlobal, $client->getIsGlobal()); @@ -257,7 +268,7 @@ class ClientRepositoryTest extends DatabaseTestCase { $countBefore = $this->conn->getRowCount('Client'); - $this->assertEquals(1, self::$clientRepository->delete(3)); + $this->assertEquals(1, self::$repository->delete(3)); $countAfter = $this->conn->getRowCount('Client'); @@ -266,7 +277,7 @@ class ClientRepositoryTest extends DatabaseTestCase // Comprobar que se produce una excepción al tratar de eliminar clientes usados $this->expectException(ConstraintException::class); - $this->assertEquals(1, self::$clientRepository->delete(2)); + $this->assertEquals(1, self::$repository->delete(2)); } /** @@ -277,9 +288,9 @@ class ClientRepositoryTest extends DatabaseTestCase */ public function testGetByIdBatch() { - $this->assertCount(3, self::$clientRepository->getByIdBatch([1, 2, 3])); - $this->assertCount(3, self::$clientRepository->getByIdBatch([1, 2, 3, 4, 5])); - $this->assertCount(0, self::$clientRepository->getByIdBatch([])); + $this->assertCount(3, self::$repository->getByIdBatch([1, 2, 3])); + $this->assertCount(3, self::$repository->getByIdBatch([1, 2, 3, 4, 5])); + $this->assertCount(0, self::$repository->getByIdBatch([])); } /** @@ -291,6 +302,6 @@ class ClientRepositoryTest extends DatabaseTestCase $filter = new QueryCondition(); $filter->addFilter('Account.isPrivate = 0'); - $this->assertCount(3, self::$clientRepository->getAllForFilter($filter)); + $this->assertCount(3, self::$repository->getAllForFilter($filter)); } } diff --git a/tests/Repositories/CustomFieldDefRepositoryTest.php b/tests/Repositories/CustomFieldDefRepositoryTest.php index 035295f8..ca3bd28d 100644 --- a/tests/Repositories/CustomFieldDefRepositoryTest.php +++ b/tests/Repositories/CustomFieldDefRepositoryTest.php @@ -44,7 +44,7 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase /** * @var CustomFieldDefRepository */ - private static $customFieldDefRepository; + private static $repository; /** * @throws \DI\NotFoundException @@ -59,10 +59,35 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$customFieldDefRepository = $dic->get(CustomFieldDefRepository::class); + self::$repository = $dic->get(CustomFieldDefRepository::class); } /** + * @throws ConstraintException + * @throws NoSuchItemException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetById() + { + $expected = new CustomFieldDefinitionData(); + $expected->setId(1); + $expected->setName('Prueba'); + $expected->setIsEncrypted(1); + $expected->setHelp('Ayuda'); + $expected->setModuleId(ActionsInterface::ACCOUNT); + $expected->setRequired(true); + $expected->setTypeId(1); + $expected->setShowInList(0); + + $this->assertEquals($expected, self::$repository->getById(1)); + + $this->expectException(NoSuchItemException::class); + + $this->assertEquals($expected, self::$repository->getById(10)); + } + + /** + * @depends testGetById * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException * @throws NoSuchItemException @@ -79,9 +104,9 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase $data->setTypeId(2); $data->setShowInList(1); - $this->assertEquals(1, self::$customFieldDefRepository->update($data)); + $this->assertEquals(1, self::$repository->update($data)); - $dataUpdated = self::$customFieldDefRepository->getById(1); + $dataUpdated = self::$repository->getById(1); $this->assertEquals($data, $dataUpdated); @@ -89,7 +114,7 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase $this->expectException(ConstraintException::class); - $this->assertEquals(1, self::$customFieldDefRepository->update($data)); + $this->assertEquals(1, self::$repository->update($data)); } /** @@ -99,13 +124,13 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase */ public function testDeleteByIdBatch() { - $this->assertEquals(1, self::$customFieldDefRepository->deleteByIdBatch([3, 4])); + $this->assertEquals(1, self::$repository->deleteByIdBatch([3, 4])); $this->assertEquals(2, $this->conn->getRowCount('CustomFieldDefinition')); - $this->assertEquals(0, self::$customFieldDefRepository->deleteByIdBatch([])); + $this->assertEquals(0, self::$repository->deleteByIdBatch([])); $this->expectException(ConstraintException::class); - self::$customFieldDefRepository->deleteByIdBatch([1, 2]); + self::$repository->deleteByIdBatch([1, 2]); } /** @@ -114,7 +139,7 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase */ public function testGetByIdBatch() { - $data = self::$customFieldDefRepository->getByIdBatch([1, 2]); + $data = self::$repository->getByIdBatch([1, 2]); $this->assertCount(2, $data); $this->assertInstanceOf(CustomFieldDefinitionData::class, $data[0]); @@ -143,33 +168,9 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase $this->assertEquals($expected, $data[1]); - $this->assertCount(0, self::$customFieldDefRepository->getByIdBatch([10])); + $this->assertCount(0, self::$repository->getByIdBatch([10])); - $this->assertCount(0, self::$customFieldDefRepository->getByIdBatch([])); - } - - /** - * @throws ConstraintException - * @throws NoSuchItemException - * @throws \SP\Core\Exceptions\QueryException - */ - public function testGetById() - { - $expected = new CustomFieldDefinitionData(); - $expected->setId(1); - $expected->setName('Prueba'); - $expected->setIsEncrypted(1); - $expected->setHelp('Ayuda'); - $expected->setModuleId(ActionsInterface::ACCOUNT); - $expected->setRequired(true); - $expected->setTypeId(1); - $expected->setShowInList(0); - - $this->assertEquals($expected, self::$customFieldDefRepository->getById(1)); - - $this->expectException(NoSuchItemException::class); - - $this->assertEquals($expected, self::$customFieldDefRepository->getById(10)); + $this->assertCount(0, self::$repository->getByIdBatch([])); } /** @@ -189,9 +190,9 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase $data->setTypeId(6); $data->setShowInList(0); - $this->assertEquals(4, self::$customFieldDefRepository->create($data)); + $this->assertEquals(4, self::$repository->create($data)); - $this->assertEquals($data, self::$customFieldDefRepository->getById(4)); + $this->assertEquals($data, self::$repository->getById(4)); } /** @@ -200,9 +201,9 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase */ public function testGetAll() { - self::$customFieldDefRepository->resetCollection(); + self::$repository->resetCollection(); - $data = self::$customFieldDefRepository->getAll(); + $data = self::$repository->getAll(); $this->assertCount(3, $data); @@ -240,7 +241,7 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase $itemSearchData->setSeachString('RSA'); $itemSearchData->setLimitCount(10); - $result = self::$customFieldDefRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(2, $result->getNumRows()); @@ -254,7 +255,7 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase $itemSearchData->setSeachString('test'); $itemSearchData->setLimitCount(10); - $this->assertEquals(0, self::$customFieldDefRepository->search($itemSearchData)->getNumRows()); + $this->assertEquals(0, self::$repository->search($itemSearchData)->getNumRows()); } /** @@ -264,13 +265,13 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase */ public function testDelete() { - $this->assertEquals(1, self::$customFieldDefRepository->delete(3)); - $this->assertEquals(0, self::$customFieldDefRepository->delete(10)); + $this->assertEquals(1, self::$repository->delete(3)); + $this->assertEquals(0, self::$repository->delete(10)); $this->assertEquals(2, $this->conn->getRowCount('CustomFieldDefinition')); $this->expectException(ConstraintException::class); - self::$customFieldDefRepository->delete(1); + self::$repository->delete(1); } /** @@ -280,6 +281,6 @@ class CustomFieldDefRepositoryTest extends DatabaseTestCase { parent::setUp(); - self::$customFieldDefRepository->resetCollection(); + self::$repository->resetCollection(); } } diff --git a/tests/Repositories/CustomFieldRepositoryTest.php b/tests/Repositories/CustomFieldRepositoryTest.php index 0c8af9f4..e4d6ca72 100644 --- a/tests/Repositories/CustomFieldRepositoryTest.php +++ b/tests/Repositories/CustomFieldRepositoryTest.php @@ -42,7 +42,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase /** * @var CustomFieldRepository */ - private static $customFieldRepository; + private static $repository; /** * @throws \DI\NotFoundException @@ -57,7 +57,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$customFieldRepository = $dic->get(CustomFieldRepository::class); + self::$repository = $dic->get(CustomFieldRepository::class); } /** @@ -66,15 +66,15 @@ class CustomFieldRepositoryTest extends DatabaseTestCase */ public function testDeleteCustomFieldDataBatch() { - $this->assertEquals(1, self::$customFieldRepository->deleteCustomFieldDataBatch([1, 2, 3], ActionsInterface::ACCOUNT)); + $this->assertEquals(1, self::$repository->deleteCustomFieldDataBatch([1, 2, 3], ActionsInterface::ACCOUNT)); - $this->assertEquals(1, self::$customFieldRepository->deleteCustomFieldDataBatch([1, 2, 3], ActionsInterface::CATEGORY)); + $this->assertEquals(1, self::$repository->deleteCustomFieldDataBatch([1, 2, 3], ActionsInterface::CATEGORY)); $this->assertEquals(0, $this->conn->getRowCount('CustomFieldData')); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldDataBatch([], ActionsInterface::CATEGORY)); + $this->assertEquals(0, self::$repository->deleteCustomFieldDataBatch([], ActionsInterface::CATEGORY)); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldDataBatch([], ActionsInterface::USER)); + $this->assertEquals(0, self::$repository->deleteCustomFieldDataBatch([], ActionsInterface::USER)); } @@ -84,16 +84,16 @@ class CustomFieldRepositoryTest extends DatabaseTestCase */ public function testDeleteCustomFieldDataForDefinition() { - $this->assertEquals(1, self::$customFieldRepository->deleteCustomFieldDataForDefinition(1, ActionsInterface::ACCOUNT, 1)); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldDataForDefinition(1, ActionsInterface::ACCOUNT, 2)); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldDataForDefinition(10, ActionsInterface::ACCOUNT, 3)); + $this->assertEquals(1, self::$repository->deleteCustomFieldDataForDefinition(1, ActionsInterface::ACCOUNT, 1)); + $this->assertEquals(0, self::$repository->deleteCustomFieldDataForDefinition(1, ActionsInterface::ACCOUNT, 2)); + $this->assertEquals(0, self::$repository->deleteCustomFieldDataForDefinition(10, ActionsInterface::ACCOUNT, 3)); - $this->assertEquals(1, self::$customFieldRepository->deleteCustomFieldDataForDefinition(1, ActionsInterface::CATEGORY, 2)); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldDataForDefinition(1, ActionsInterface::CATEGORY, 1)); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldDataForDefinition(10, ActionsInterface::CATEGORY, 3)); + $this->assertEquals(1, self::$repository->deleteCustomFieldDataForDefinition(1, ActionsInterface::CATEGORY, 2)); + $this->assertEquals(0, self::$repository->deleteCustomFieldDataForDefinition(1, ActionsInterface::CATEGORY, 1)); + $this->assertEquals(0, self::$repository->deleteCustomFieldDataForDefinition(10, ActionsInterface::CATEGORY, 3)); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldDataForDefinition(1, ActionsInterface::USER, 1)); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldDataForDefinition(1, ActionsInterface::USER, 2)); + $this->assertEquals(0, self::$repository->deleteCustomFieldDataForDefinition(1, ActionsInterface::USER, 1)); + $this->assertEquals(0, self::$repository->deleteCustomFieldDataForDefinition(1, ActionsInterface::USER, 2)); } /** @@ -107,19 +107,19 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setDefinitionId(1); $data->setId(1); - $this->assertTrue(self::$customFieldRepository->checkExists($data)); + $this->assertTrue(self::$repository->checkExists($data)); $data->setModuleId(ActionsInterface::CATEGORY); $data->setDefinitionId(1); $data->setId(1); - $this->assertFalse(self::$customFieldRepository->checkExists($data)); + $this->assertFalse(self::$repository->checkExists($data)); $data->setModuleId(ActionsInterface::USER); $data->setDefinitionId(1); $data->setId(1); - $this->assertFalse(self::$customFieldRepository->checkExists($data)); + $this->assertFalse(self::$repository->checkExists($data)); } /** @@ -128,7 +128,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase */ public function testGetAllEncrypted() { - $result = self::$customFieldRepository->getAllEncrypted(); + $result = self::$repository->getAllEncrypted(); $this->assertCount(1, $result); $this->assertInstanceOf(CustomFieldData::class, $result[0]); @@ -143,11 +143,11 @@ class CustomFieldRepositoryTest extends DatabaseTestCase */ public function testDeleteCustomFieldDefinitionDataBatch() { - $this->assertEquals(2, self::$customFieldRepository->deleteCustomFieldDefinitionDataBatch([1, 2, 3])); + $this->assertEquals(2, self::$repository->deleteCustomFieldDefinitionDataBatch([1, 2, 3])); $this->assertEquals(0, $this->conn->getRowCount('CustomFieldData')); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldDefinitionDataBatch([])); + $this->assertEquals(0, self::$repository->deleteCustomFieldDefinitionDataBatch([])); } /** @@ -156,7 +156,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase */ public function testGetAll() { - $result = self::$customFieldRepository->getAll(); + $result = self::$repository->getAll(); $this->assertCount(2, $result); $this->assertInstanceOf(CustomFieldData::class, $result[0]); @@ -169,16 +169,16 @@ class CustomFieldRepositoryTest extends DatabaseTestCase */ public function testDeleteCustomFieldData() { - $this->assertEquals(1, self::$customFieldRepository->deleteCustomFieldData(1, ActionsInterface::ACCOUNT)); - $this->assertEquals(1, self::$customFieldRepository->deleteCustomFieldData(1, ActionsInterface::CATEGORY)); + $this->assertEquals(1, self::$repository->deleteCustomFieldData(1, ActionsInterface::ACCOUNT)); + $this->assertEquals(1, self::$repository->deleteCustomFieldData(1, ActionsInterface::CATEGORY)); $this->assertEquals(0, $this->conn->getRowCount('CustomFieldData')); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldData(2, ActionsInterface::ACCOUNT)); + $this->assertEquals(0, self::$repository->deleteCustomFieldData(2, ActionsInterface::ACCOUNT)); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldData(2, ActionsInterface::CATEGORY)); + $this->assertEquals(0, self::$repository->deleteCustomFieldData(2, ActionsInterface::CATEGORY)); - $this->assertEquals(0, self::$customFieldRepository->deleteCustomFieldData(2, ActionsInterface::USER)); + $this->assertEquals(0, self::$repository->deleteCustomFieldData(2, ActionsInterface::USER)); } /** @@ -187,7 +187,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase */ public function testGetForModuleById() { - $result = self::$customFieldRepository->getForModuleById(ActionsInterface::ACCOUNT, 1); + $result = self::$repository->getForModuleById(ActionsInterface::ACCOUNT, 1); $this->assertCount(1, $result); $this->assertEquals('Prueba', $result[0]->definitionName); @@ -203,7 +203,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $this->assertNotEmpty($result[0]->data); $this->assertNotEmpty($result[0]->key); - $result = self::$customFieldRepository->getForModuleById(ActionsInterface::ACCOUNT, 2); + $result = self::$repository->getForModuleById(ActionsInterface::ACCOUNT, 2); $this->assertCount(1, $result); $this->assertEquals('Prueba', $result[0]->definitionName); @@ -219,11 +219,11 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $this->assertEmpty($result[0]->data); $this->assertEmpty($result[0]->key); - $result = self::$customFieldRepository->getForModuleById(ActionsInterface::ACCOUNT, 3); + $result = self::$repository->getForModuleById(ActionsInterface::ACCOUNT, 3); $this->assertCount(1, $result); - $result = self::$customFieldRepository->getForModuleById(ActionsInterface::CATEGORY, 1); + $result = self::$repository->getForModuleById(ActionsInterface::CATEGORY, 1); $this->assertCount(2, $result); $this->assertEquals('RSA', $result[0]->definitionName); @@ -239,7 +239,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $this->assertNotEmpty($result[0]->data); $this->assertNull($result[0]->key); - $result = self::$customFieldRepository->getForModuleById(ActionsInterface::CATEGORY, 2); + $result = self::$repository->getForModuleById(ActionsInterface::CATEGORY, 2); $this->assertCount(2, $result); $this->assertEquals('RSA', $result[0]->definitionName); @@ -255,11 +255,11 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $this->assertNull($result[0]->data); $this->assertNull($result[0]->key); - $result = self::$customFieldRepository->getForModuleById(ActionsInterface::CATEGORY, 3); + $result = self::$repository->getForModuleById(ActionsInterface::CATEGORY, 3); $this->assertCount(2, $result); - $result = self::$customFieldRepository->getForModuleById(ActionsInterface::USER, 1); + $result = self::$repository->getForModuleById(ActionsInterface::USER, 1); $this->assertCount(0, $result); } @@ -277,7 +277,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setData('cuenta'); $data->setKey('nan'); - $this->assertEquals(3, self::$customFieldRepository->create($data)); + $this->assertEquals(3, self::$repository->create($data)); $data = new CustomFieldData(); $data->setId(2); @@ -286,7 +286,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setData('categoria'); $data->setKey('nan'); - $this->assertEquals(4, self::$customFieldRepository->create($data)); + $this->assertEquals(4, self::$repository->create($data)); $this->expectException(ConstraintException::class); @@ -297,11 +297,11 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setData('cuenta'); $data->setKey('nan'); - self::$customFieldRepository->create($data); + self::$repository->create($data); $data->setDefinitionId(3); - self::$customFieldRepository->create($data); + self::$repository->create($data); $data = new CustomFieldData(); $data->setId(2); @@ -310,11 +310,11 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setData('categoria'); $data->setKey('nan'); - self::$customFieldRepository->create($data); + self::$repository->create($data); $data->setDefinitionId(4); - self::$customFieldRepository->create($data); + self::$repository->create($data); $this->assertEquals(4, $this->conn->getRowCount('CustomFieldData')); } @@ -325,8 +325,8 @@ class CustomFieldRepositoryTest extends DatabaseTestCase */ public function testDeleteCustomFieldDefinitionData() { - $this->assertEquals(1, self::$customFieldRepository->deleteCustomFieldDefinitionData(1)); - $this->assertEquals(1, self::$customFieldRepository->deleteCustomFieldDefinitionData(2)); + $this->assertEquals(1, self::$repository->deleteCustomFieldDefinitionData(1)); + $this->assertEquals(1, self::$repository->deleteCustomFieldDefinitionData(2)); $this->assertEquals(0, $this->conn->getRowCount('CustomFieldData')); } @@ -344,7 +344,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setData('cuenta'); $data->setKey('nan'); - $this->assertEquals(1, self::$customFieldRepository->update($data)); + $this->assertEquals(1, self::$repository->update($data)); $data = new CustomFieldData(); $data->setId(1); @@ -353,7 +353,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setData('categoria'); $data->setKey('nan'); - $this->assertEquals(1, self::$customFieldRepository->update($data)); + $this->assertEquals(1, self::$repository->update($data)); $data = new CustomFieldData(); @@ -363,7 +363,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setData('cuenta'); $data->setKey('nan'); - $this->assertEquals(0, self::$customFieldRepository->update($data)); + $this->assertEquals(0, self::$repository->update($data)); $data = new CustomFieldData(); $data->setId(2); @@ -372,9 +372,9 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setData('categoria'); $data->setKey('nan'); - $this->assertEquals(0, self::$customFieldRepository->update($data)); + $this->assertEquals(0, self::$repository->update($data)); - $this->assertEquals(0, self::$customFieldRepository->update(new CustomFieldData())); + $this->assertEquals(0, self::$repository->update(new CustomFieldData())); $data = new CustomFieldData(); $data->setId(2); @@ -383,7 +383,7 @@ class CustomFieldRepositoryTest extends DatabaseTestCase $data->setData('nan'); $data->setKey('nan'); - $this->assertEquals(0, self::$customFieldRepository->update($data)); + $this->assertEquals(0, self::$repository->update($data)); $this->assertEquals(2, $this->conn->getRowCount('CustomFieldData')); } diff --git a/tests/Repositories/CustomFieldTypeRepositoryTest.php b/tests/Repositories/CustomFieldTypeRepositoryTest.php index 48f26243..db6bf63e 100644 --- a/tests/Repositories/CustomFieldTypeRepositoryTest.php +++ b/tests/Repositories/CustomFieldTypeRepositoryTest.php @@ -42,7 +42,7 @@ class CustomFieldTypeRepositoryTest extends DatabaseTestCase /** * @var CustomFieldTypeRepository */ - private static $customFieldTypeRepository; + private static $repository; /** * @throws \DI\NotFoundException @@ -57,7 +57,7 @@ class CustomFieldTypeRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$customFieldTypeRepository = $dic->get(CustomFieldTypeRepository::class); + self::$repository = $dic->get(CustomFieldTypeRepository::class); } /** @@ -68,13 +68,13 @@ class CustomFieldTypeRepositoryTest extends DatabaseTestCase { $countBefore = $this->conn->getRowCount('CustomFieldType'); - $this->assertEquals(2, self::$customFieldTypeRepository->deleteByIdBatch([3, 4, 100])); - $this->assertEquals(0, self::$customFieldTypeRepository->deleteByIdBatch([])); + $this->assertEquals(2, self::$repository->deleteByIdBatch([3, 4, 100])); + $this->assertEquals(0, self::$repository->deleteByIdBatch([])); $this->assertEquals($countBefore - 2, $this->conn->getRowCount('CustomFieldType')); $this->expectException(ConstraintException::class); - self::$customFieldTypeRepository->deleteByIdBatch([1, 2]); + self::$repository->deleteByIdBatch([1, 2]); } /** @@ -85,14 +85,14 @@ class CustomFieldTypeRepositoryTest extends DatabaseTestCase { $countBefore = $this->conn->getRowCount('CustomFieldType'); - $this->assertEquals(1, self::$customFieldTypeRepository->delete(3)); - $this->assertEquals(0, self::$customFieldTypeRepository->delete(100)); + $this->assertEquals(1, self::$repository->delete(3)); + $this->assertEquals(0, self::$repository->delete(100)); $this->assertEquals($countBefore - 1, $this->conn->getRowCount('CustomFieldType')); $this->expectException(ConstraintException::class); - self::$customFieldTypeRepository->delete(1); - self::$customFieldTypeRepository->delete(2); + self::$repository->delete(1); + self::$repository->delete(2); } /** @@ -101,7 +101,7 @@ class CustomFieldTypeRepositoryTest extends DatabaseTestCase */ public function testGetAll() { - $result = self::$customFieldTypeRepository->getAll(); + $result = self::$repository->getAll(); $this->assertCount(10, $result); $this->assertInstanceOf(CustomFieldTypeData::class, $result[0]); @@ -110,38 +110,6 @@ class CustomFieldTypeRepositoryTest extends DatabaseTestCase $this->assertEquals('Texto', $result[0]->getText()); } - /** - * @throws ConstraintException - * @throws \SP\Core\Exceptions\QueryException - * @throws \SP\Core\Exceptions\SPException - */ - public function testCreate() - { - $data = new CustomFieldTypeData(); - $data->setId(11); - $data->setName('prueba'); - $data->setText('Prueba'); - - $this->assertEquals(11, self::$customFieldTypeRepository->create($data)); - $this->assertEquals($data, self::$customFieldTypeRepository->getById(11)); - } - - /** - * @throws ConstraintException - * @throws \SP\Core\Exceptions\QueryException - * @throws \SP\Core\Exceptions\SPException - */ - public function testUpdate() - { - $data = new CustomFieldTypeData(); - $data->setId(10); - $data->setName('prueba'); - $data->setText('Prueba'); - - $this->assertEquals(1, self::$customFieldTypeRepository->update($data)); - $this->assertEquals($data, self::$customFieldTypeRepository->getById(10)); - } - /** * @throws ConstraintException * @throws \SP\Core\Exceptions\QueryException @@ -154,10 +122,44 @@ class CustomFieldTypeRepositoryTest extends DatabaseTestCase $data->setName('textarea'); $data->setText('Área de Texto'); - $this->assertEquals($data, self::$customFieldTypeRepository->getById(10)); + $this->assertEquals($data, self::$repository->getById(10)); $this->expectException(NoSuchItemException::class); - $this->assertEquals(0, self::$customFieldTypeRepository->getById(11)); + $this->assertEquals(0, self::$repository->getById(11)); + } + + /** + * @depends testGetById + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\SPException + */ + public function testCreate() + { + $data = new CustomFieldTypeData(); + $data->setId(11); + $data->setName('prueba'); + $data->setText('Prueba'); + + $this->assertEquals(11, self::$repository->create($data)); + $this->assertEquals($data, self::$repository->getById(11)); + } + + /** + * @depends testGetById + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\SPException + */ + public function testUpdate() + { + $data = new CustomFieldTypeData(); + $data->setId(10); + $data->setName('prueba'); + $data->setText('Prueba'); + + $this->assertEquals(1, self::$repository->update($data)); + $this->assertEquals($data, self::$repository->getById(10)); } } diff --git a/tests/Repositories/EventlogRepositoryTest.php b/tests/Repositories/EventlogRepositoryTest.php index 974a7e6a..d9e6debd 100644 --- a/tests/Repositories/EventlogRepositoryTest.php +++ b/tests/Repositories/EventlogRepositoryTest.php @@ -45,7 +45,7 @@ class EventlogRepositoryTest extends DatabaseTestCase /** * @var EventlogRepository */ - private static $eventlogRepository; + private static $repository; /** * @throws \DI\NotFoundException @@ -60,7 +60,7 @@ class EventlogRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$eventlogRepository = $dic->get(EventlogRepository::class); + self::$repository = $dic->get(EventlogRepository::class); } /** @@ -75,7 +75,7 @@ class EventlogRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('login.auth.database'); - $result = self::$eventlogRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(4, $result->getNumRows()); @@ -85,7 +85,7 @@ class EventlogRepositoryTest extends DatabaseTestCase $itemSearchData->setSeachString('login.auth.'); - $result = self::$eventlogRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(4, $result->getNumRows()); @@ -94,7 +94,7 @@ class EventlogRepositoryTest extends DatabaseTestCase $itemSearchData->setSeachString('Tiempo inactivo : 0 min.'); - $result = self::$eventlogRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(1, $result->getNumRows()); @@ -103,7 +103,7 @@ class EventlogRepositoryTest extends DatabaseTestCase $itemSearchData->setSeachString('prueba'); - $result = self::$eventlogRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $this->assertCount(0, $result->getDataAsArray()); $this->assertEquals(0, $result->getNumRows()); @@ -117,7 +117,7 @@ class EventlogRepositoryTest extends DatabaseTestCase */ public function testClear() { - self::$eventlogRepository->clear(); + self::$repository->clear(); $this->assertEquals(0, $this->conn->getRowCount('EventLog')); } @@ -140,7 +140,7 @@ class EventlogRepositoryTest extends DatabaseTestCase $countBefore = $this->conn->getRowCount('EventLog'); - self::$eventlogRepository->create($eventlogData); + self::$repository->create($eventlogData); $countAfter = $this->conn->getRowCount('EventLog'); @@ -148,7 +148,7 @@ class EventlogRepositoryTest extends DatabaseTestCase $this->expectException(ConstraintException::class); - self::$eventlogRepository->create(new EventlogData()); + self::$repository->create(new EventlogData()); } /** diff --git a/tests/Repositories/NotificationRepositoryTest.php b/tests/Repositories/NotificationRepositoryTest.php new file mode 100644 index 00000000..b24e3ef7 --- /dev/null +++ b/tests/Repositories/NotificationRepositoryTest.php @@ -0,0 +1,427 @@ +. + */ + +namespace SP\Tests\Repositories; + +use DI\DependencyException; +use SP\Core\Exceptions\ConstraintException; +use SP\Core\Exceptions\QueryException; +use SP\Core\Messages\NotificationMessage; +use SP\DataModel\ItemSearchData; +use SP\DataModel\NotificationData; +use SP\Repositories\Notification\NotificationRepository; +use SP\Storage\Database\DatabaseConnectionData; +use SP\Tests\DatabaseTestCase; +use function SP\Tests\setupContext; + +/** + * Class NotificationRepositoryTest + * + * @package SP\Tests\Repositories + */ +class NotificationRepositoryTest extends DatabaseTestCase +{ + /** + * @var NotificationRepository + */ + private static $repository; + + /** + * @throws DependencyException + * @throws \DI\NotFoundException + * @throws \SP\Core\Context\ContextException + */ + public static function setUpBeforeClass() + { + $dic = setupContext(); + + // Datos de conexión a la BBDD + self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); + + // Inicializar el repositorio + self::$repository = $dic->get(NotificationRepository::class); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testDeleteAdmin() + { + $countBefore = $this->conn->getRowCount('Notification'); + + $this->assertEquals(1, self::$repository->deleteAdmin(3)); + $this->assertEquals($countBefore - 1, $this->conn->getRowCount('Notification')); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testDeleteAdminBatch() + { + $this->assertEquals(3, self::$repository->deleteAdminBatch([1, 2, 3, 5])); + $this->assertEquals(0, $this->conn->getRowCount('Notification')); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetByIdBatch() + { + $this->assertEquals(0, self::$repository->getByIdBatch([])->getNumRows()); + + $result = self::$repository->getByIdBatch([1, 2, 3, 4]); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertCount(3, $data); + $this->assertInstanceOf(NotificationData::class, $data[0]); + $this->assertEquals(1, $data[0]->getId()); + $this->assertEquals('Prueba', $data[0]->getType()); + $this->assertEquals('Accounts', $data[0]->getComponent()); + $this->assertEquals('Notificación de prueba', trim($data[0]->getDescription())); + $this->assertEquals(1529145158, $data[0]->getDate()); + $this->assertEquals(0, $data[0]->isChecked()); + $this->assertEquals(0, $data[0]->isOnlyAdmin()); + $this->assertEquals(0, $data[0]->isSticky()); + $this->assertEquals(2, $data[0]->getUserId()); + + $this->assertEquals(2, $data[1]->getId()); + $this->assertEquals(3, $data[2]->getId()); + } + + /** + * @throws ConstraintException + * @throws QueryException + */ + public function testGetById() + { + $result = self::$repository->getById(3); + /** @var NotificationData $data */ + $data = $result->getData(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertInstanceOf(NotificationData::class, $data); + $this->assertEquals(3, $data->getId()); + + $result = self::$repository->getById(4); + $this->assertEquals(0, $result->getNumRows()); + } + + /** + * @depends testGetById + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testCreate() + { + $data = new NotificationData(); + $data->setId(4); + $data->setUserId(2); + $data->setDate(time()); + $data->setType('Test'); + $data->setComponent('Config'); + $data->setDescription(NotificationMessage::factory()->setTitle('Prueba')->setDescription(['blablabla'])); + $data->setChecked(0); + $data->setOnlyAdmin(1); + $data->setSticky(1); + + $this->assertEquals(4, self::$repository->create($data)->getLastId()); + + $this->assertEquals($data, self::$repository->getById(4)->getData()); + + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testSearch() + { + $itemSearchData = new ItemSearchData(); + $itemSearchData->setLimitCount(10); + $itemSearchData->setSeachString('Test'); + + $result = self::$repository->search($itemSearchData); + + $this->assertEquals(2, $result->getNumRows()); + + $itemSearchData->setSeachString('Global'); + + $result = self::$repository->search($itemSearchData); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertCount(1, $data); + $this->assertInstanceOf(NotificationData::class, $data[0]); + $this->assertEquals(2, $data[0]->getId()); + $this->assertEquals('Global', $data[0]->getType()); + + $itemSearchData->setSeachString(''); + + $result = self::$repository->search($itemSearchData); + + $this->assertEquals(3, $result->getNumRows()); + $this->assertCount(3, $result->getDataAsArray()); + + $itemSearchData->setSeachString('Accounts'); + + $result = self::$repository->search($itemSearchData); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(3, $result->getNumRows()); + $this->assertCount(3, $data); + $this->assertEquals(1529145313, $data[0]->getDate()); + $this->assertEquals('Accounts', $data[0]->getComponent()); + $this->assertEquals(1529145296, $data[1]->getDate()); + $this->assertEquals('Accounts', $data[1]->getComponent()); + $this->assertEquals(1529145158, $data[2]->getDate()); + $this->assertEquals('Accounts', $data[2]->getComponent()); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testSetCheckedById() + { + $this->assertEquals(1, self::$repository->setCheckedById(1)); + $this->assertEquals(0, self::$repository->setCheckedById(4)); + } + + /** + * @depends testGetById + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testUpdate() + { + $data = new NotificationData(); + $data->setId(3); + $data->setUserId(2); + $data->setDate(time()); + $data->setType('Test'); + $data->setComponent('Config'); + $data->setDescription(NotificationMessage::factory()->setTitle('Prueba')->setDescription(['blablabla'])); + $data->setChecked(0); + $data->setOnlyAdmin(1); + $data->setSticky(1); + + $this->assertEquals(1, self::$repository->update($data)); + + $this->assertEquals($data, self::$repository->getById(3)->getData()); + + $data->setId(4); + + $this->assertEquals(0, self::$repository->update($data)); + + $data = new NotificationData(); + $data->setId(1); + + $this->expectException(ConstraintException::class); + + $this->assertEquals(0, self::$repository->update($data)); + } + + /** + * @throws ConstraintException + * @throws QueryException + */ + public function testSearchForUserId() + { + $itemSearchData = new ItemSearchData(); + $itemSearchData->setLimitCount(10); + $itemSearchData->setSeachString('Test'); + + $result = self::$repository->searchForUserId($itemSearchData, 2); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertCount(1, $data); + $this->assertEquals(2, $data[0]->getId()); + + $itemSearchData->setSeachString('Accounts'); + + $result = self::$repository->searchForUserId($itemSearchData, 2); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(2, $result->getNumRows()); + $this->assertCount(2, $data); + $this->assertEquals(2, $data[0]->getId()); + $this->assertEquals(1, $data[1]->getId()); + + $itemSearchData->setSeachString('Admins'); + + $result = self::$repository->searchForUserId($itemSearchData, 2); + + $this->assertEquals(0, $result->getNumRows()); + + $itemSearchData->setSeachString('Global'); + + $result = self::$repository->searchForUserId($itemSearchData, 2); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertCount(1, $data); + $this->assertEquals(2, $data[0]->getId()); + + $itemSearchData->setSeachString(''); + + $result = self::$repository->searchForUserId($itemSearchData, 2); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(2, $result->getNumRows()); + $this->assertCount(2, $data); + $this->assertEquals(2, $data[0]->getId()); + $this->assertEquals(1, $data[1]->getId()); + } + + /** + * @throws ConstraintException + * @throws QueryException + */ + public function testGetAll() + { + $result = self::$repository->getAll(); + + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(3, $result->getNumRows()); + $this->assertCount(3, $data); + $this->assertEquals(1, $data[0]->getId()); + $this->assertEquals(2, $data[1]->getId()); + $this->assertEquals(3, $data[2]->getId()); + } + + /** + * @throws ConstraintException + * @throws QueryException + */ + public function testGetForUserIdByDate() + { + $result = self::$repository->getForUserIdByDate('Accounts', 2); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertCount(1, $data); + $this->assertEquals(1, $data[0]->getId()); + + $result = self::$repository->getForUserIdByDate('Accounts', 3); + + $this->assertEquals(0, $result->getNumRows()); + } + + /** + * @throws ConstraintException + * @throws QueryException + */ + public function testDelete() + { + $this->assertEquals(1, self::$repository->delete(3)); + $this->assertEquals(0, self::$repository->delete(4)); + } + + /** + * @throws ConstraintException + * @throws QueryException + */ + public function testGetAllForUserId() + { + $result = self::$repository->getAllForUserId(2); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(2, $result->getNumRows()); + $this->assertCount(2, $data); + $this->assertEquals(2, $data[0]->getId()); + $this->assertEquals(1, $data[1]->getId()); + + $result = self::$repository->getAllForUserId(3); + + $this->assertEquals(1, $result->getNumRows()); + } + + /** + * @throws ConstraintException + * @throws QueryException + */ + public function testDeleteByIdBatch() + { + $this->assertEquals(2, self::$repository->deleteByIdBatch([1, 2, 3, 4])); + $this->assertEquals(0, self::$repository->deleteByIdBatch([])); + + $this->assertEquals(1, $this->conn->getRowCount('Notification')); + } + + /** + * @depends testSetCheckedById + * + * @throws ConstraintException + * @throws QueryException + */ + public function testGetAllActiveForUserId() + { + $result = self::$repository->getAllActiveForUserId(2); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(2, $result->getNumRows()); + $this->assertCount(2, $data); + $this->assertEquals(2, $data[0]->getId()); + $this->assertEquals(1, $data[1]->getId()); + + $result = self::$repository->getAllActiveForUserId(3); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertCount(1, $data); + $this->assertEquals(2, $data[0]->getId()); + + self::$repository->setCheckedById(1); + + $result = self::$repository->getAllActiveForUserId(2); + /** @var NotificationData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertCount(1, $data); + $this->assertEquals(2, $data[0]->getId()); + + self::$repository->setCheckedById(2); + + $this->assertEquals(0, self::$repository->getAllActiveForUserId(2)->getNumRows()); + $this->assertEquals(0, self::$repository->getAllActiveForUserId(3)->getNumRows()); + } +} diff --git a/tests/Repositories/PluginRepositoryTest.php b/tests/Repositories/PluginRepositoryTest.php new file mode 100644 index 00000000..3ed5b074 --- /dev/null +++ b/tests/Repositories/PluginRepositoryTest.php @@ -0,0 +1,374 @@ +. + */ + +namespace SP\Tests\Repositories; + +use DI\DependencyException; +use PHPUnit\DbUnit\DataSet\IDataSet; +use SP\Core\Exceptions\ConstraintException; +use SP\DataModel\ItemData; +use SP\DataModel\ItemSearchData; +use SP\DataModel\PluginData; +use SP\Repositories\Plugin\PluginRepository; +use SP\Storage\Database\DatabaseConnectionData; +use SP\Tests\DatabaseTestCase; +use function SP\Tests\setupContext; + +/** + * Class PluginRepositoryTest + * + * @package SP\Tests\Repositories + */ +class PluginRepositoryTest extends DatabaseTestCase +{ + /** + * @var PluginRepository + */ + private static $repository; + + /** + * @throws DependencyException + * @throws \DI\NotFoundException + * @throws \SP\Core\Context\ContextException + */ + public static function setUpBeforeClass() + { + $dic = setupContext(); + + // Datos de conexión a la BBDD + self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); + + // Inicializar el repositorio + self::$repository = $dic->get(PluginRepository::class); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testUpdate() + { + $data = new PluginData(); + $data->setId(1); + $data->setName('Authenticator 2'); + $data->setAvailable(1); + $data->setEnabled(1); + $data->setData('data'); + + $this->assertEquals(1, self::$repository->update($data)); + + $result = self::$repository->getById(1); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertEquals($data, $result->getData()); + + $data->setId(null); + $data->setName('Authenticator'); + + $this->assertEquals(0, self::$repository->update($data)); + + $data->setId(2); + $data->setName('DokuWiki'); + + $this->expectException(ConstraintException::class); + + self::$repository->update($data); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetAll() + { + $result = self::$repository->getAll(); + /** @var PluginData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(3, $result->getNumRows()); + $this->assertCount(3, $data); + $this->assertEquals(1, $data[0]->getId()); + $this->assertEquals('Authenticator', $data[0]->getName()); + $this->assertNull($data[0]->getData()); + $this->assertEquals(1, $data[0]->getAvailable()); + $this->assertEquals(0, $data[0]->getEnabled()); + + $this->assertEquals(3, $data[1]->getId()); + $this->assertEquals(2, $data[2]->getId()); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetByName() + { + $result = self::$repository->getByName('Authenticator'); + /** @var PluginData $data */ + $data = $result->getData(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertInstanceOf(PluginData::class, $data); + $this->assertEquals(1, $data->getId()); + $this->assertEquals('Authenticator', $data->getName()); + $this->assertNull($data->getData()); + $this->assertEquals(1, $data->getAvailable()); + $this->assertEquals(0, $data->getEnabled()); + + $this->assertEquals(0, self::$repository->getById('Authenticator 2')->getNumRows()); + } + + /** + * @depends testGetByName + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testToggleAvailableByName() + { + $this->assertEquals(1, self::$repository->toggleAvailableByName('Authenticator', 0)); + + /** @var PluginData $data */ + $data = self::$repository->getByName('Authenticator')->getData(); + + $this->assertEquals(0, $data->getAvailable()); + + $this->assertEquals(0, self::$repository->toggleAvailableByName('Authenticator 2', 1)); + } + + /** + * @requires testGetById + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\SPException + */ + public function testDelete() + { + $this->assertEquals(1, self::$repository->delete(1)); + $this->assertEquals(0, self::$repository->getById(1)->getNumRows()); + + $this->assertEquals(0, self::$repository->delete(4)); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testToggleEnabled() + { + $this->assertEquals(1, self::$repository->toggleEnabled(1, 1)); + $this->assertEquals(0, self::$repository->toggleEnabled(4, 0)); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetById() + { + $result = self::$repository->getById(1); + /** @var PluginData $data */ + $data = $result->getData(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertInstanceOf(PluginData::class, $data); + $this->assertEquals(1, $data->getId()); + $this->assertEquals('Authenticator', $data->getName()); + $this->assertNull($data->getData()); + $this->assertEquals(1, $data->getAvailable()); + $this->assertEquals(0, $data->getEnabled()); + + $this->assertEquals(0, self::$repository->getById(4)->getNumRows()); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\SPException + */ + public function testDeleteByIdBatch() + { + $this->assertEquals(2, self::$repository->deleteByIdBatch([1, 2, 4])); + $this->assertEquals(0, self::$repository->deleteByIdBatch([])); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetEnabled() + { + $result = self::$repository->getEnabled(); + /** @var ItemData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(2, $result->getNumRows()); + $this->assertCount(2, $data); + $this->assertInstanceOf(ItemData::class, $data[0]); + $this->assertEquals(2, $data[0]->getId()); + $this->assertEquals('XML Exporter', $data[0]->getName()); + $this->assertInstanceOf(ItemData::class, $data[1]); + $this->assertEquals(3, $data[1]->getId()); + $this->assertEquals('DokuWiki', $data[1]->getName()); + } + + /** + * @depends testGetById + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testCreate() + { + $data = new PluginData(); + $data->setId(4); + $data->setName('Authenticator 2'); + $data->setAvailable(1); + $data->setEnabled(1); + $data->setData('data'); + + $this->assertEquals(4, self::$repository->create($data)->getLastId()); + + $result = self::$repository->getById(4); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertEquals($data, $result->getData()); + + + $this->expectException(ConstraintException::class); + + self::$repository->create($data); + + self::$repository->create(new PluginData()); + } + + /** + * @depends testGetById + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testResetById() + { + $this->assertEquals(1, self::$repository->resetById(2)); + + /** @var PluginData $data */ + $data = self::$repository->getById(2)->getData(); + + $this->assertNull($data->getData()); + + $this->assertEquals(0, self::$repository->resetById(4)); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testSearch() + { + $itemSearchData = new ItemSearchData(); + $itemSearchData->setLimitCount(10); + $itemSearchData->setSeachString('Auth'); + + $result = self::$repository->search($itemSearchData); + /** @var PluginData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertCount(1, $data); + $this->assertEquals(1, $data[0]->getId()); + $this->assertEquals('Authenticator', $data[0]->getName()); + $this->assertEquals(0, $data[0]->getEnabled()); + $this->assertEquals(1, $data[0]->getAvailable()); + + $itemSearchData->setSeachString('test'); + + $result = self::$repository->search($itemSearchData); + $this->assertEquals(0, $result->getNumRows()); + + $itemSearchData->setSeachString(''); + + $result = self::$repository->search($itemSearchData); + $this->assertEquals(3, $result->getNumRows()); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testToggleEnabledByName() + { + $this->assertEquals(1, self::$repository->toggleEnabledByName('Authenticator', 1)); + + /** @var PluginData $data */ + $data = self::$repository->getByName('Authenticator')->getData(); + + $this->assertEquals(1, $data->getEnabled()); + + $this->assertEquals(0, self::$repository->toggleEnabledByName('Test', 0)); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testToggleAvailable() + { + $this->assertEquals(1, self::$repository->toggleAvailable(1, 0)); + + /** @var PluginData $data */ + $data = self::$repository->getByName('Authenticator')->getData(); + + $this->assertEquals(0, $data->getAvailable()); + + $this->assertEquals(0, self::$repository->toggleAvailable(4, 1)); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetByIdBatch() + { + $result = self::$repository->getByIdBatch([1, 2, 4]); + /** @var PluginData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(2, $result->getNumRows()); + $this->assertCount(2, $data); + $this->assertEquals(1, $data[0]->getId()); + $this->assertEquals(2, $data[1]->getId()); + + $result = self::$repository->getByIdBatch([]); + + $this->assertEquals(0, $result->getNumRows()); + } + + /** + * Returns the test dataset. + * + * @return IDataSet + */ + protected function getDataSet() + { + return $this->createMySQLXMLDataSet(RESOURCE_DIR . DIRECTORY_SEPARATOR . 'datasets' . DIRECTORY_SEPARATOR . 'syspass_plugin.xml'); + } +} diff --git a/tests/Repositories/PublicLinkRepositoryTest.php b/tests/Repositories/PublicLinkRepositoryTest.php new file mode 100644 index 00000000..a75b9d77 --- /dev/null +++ b/tests/Repositories/PublicLinkRepositoryTest.php @@ -0,0 +1,450 @@ +. + */ + +namespace SP\Tests\Repositories; + +use DI\DependencyException; +use SP\Core\Exceptions\ConstraintException; +use SP\DataModel\ItemSearchData; +use SP\DataModel\PublicLinkData; +use SP\DataModel\PublicLinkListData; +use SP\Repositories\DuplicatedItemException; +use SP\Repositories\PublicLink\PublicLinkRepository; +use SP\Services\PublicLink\PublicLinkService; +use SP\Storage\Database\DatabaseConnectionData; +use SP\Tests\DatabaseTestCase; +use SP\Util\Util; +use function SP\Tests\setupContext; + +/** + * Class PublicLinkRepositoryTest + * + * @package SP\Tests\Repositories + */ +class PublicLinkRepositoryTest extends DatabaseTestCase +{ + /** + * @var PublicLinkRepository + */ + private static $repository; + + /** + * @throws DependencyException + * @throws \DI\NotFoundException + * @throws \SP\Core\Context\ContextException + */ + public static function setUpBeforeClass() + { + $dic = setupContext(); + + // Datos de conexión a la BBDD + self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); + + // Inicializar el repositorio + self::$repository = $dic->get(PublicLinkRepository::class); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetHashForItem() + { + $result = self::$repository->getHashForItem(2); + /** @var PublicLinkData $data */ + $data = $result->getData(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertEquals(1, $data->getId()); + $this->assertEquals(pack('H*', '646134633934396166303637386334353130313363626137633133626463396137636135383731383034663137343134306636626161653236346464'), $data->getHash()); + + $result = self::$repository->getHashForItem(3); + $this->assertEquals(0, $result->getNumRows()); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testSearch() + { + $itemSearchData = new ItemSearchData(); + $itemSearchData->setLimitCount(10); + $itemSearchData->setSeachString('Google'); + + $result = self::$repository->search($itemSearchData); + /** @var PublicLinkListData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertCount(1, $data); + $this->assertInstanceOf(PublicLinkListData::class, $data[0]); + $this->assertEquals(2, $data[0]->getId()); + $this->assertEquals(1, $data[0]->getItemId()); + $this->assertEquals(pack('H*', '313065363937306666653833623531393234356635333433333732626366663433376461623565356134386238326131653238636131356235346635'), $data[0]->getHash()); + $this->assertNotEmpty($data[0]->getData()); + $this->assertEquals(1, $data[0]->getUserId()); + $this->assertEquals(1, $data[0]->getTypeId()); + $this->assertEquals(0, $data[0]->isNotify()); + $this->assertEquals(1529228863, $data[0]->getDateAdd()); + $this->assertEquals(1529229463, $data[0]->getDateExpire()); + $this->assertEquals(0, $data[0]->getDateUpdate()); + $this->assertEquals(0, $data[0]->getCountViews()); + $this->assertEquals(3, $data[0]->getMaxCountViews()); + $this->assertEquals(0, $data[0]->getTotalCountViews()); + $this->assertNull($data[0]->getUseInfo()); + $this->assertEquals('Google', $data[0]->getAccountName()); + $this->assertEquals('admin', $data[0]->getUserLogin()); + + $itemSearchData->setSeachString('Apple'); + + $result = self::$repository->search($itemSearchData); + /** @var PublicLinkListData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertCount(1, $data); + $this->assertInstanceOf(PublicLinkListData::class, $data[0]); + $this->assertEquals(1, $data[0]->getId()); + $this->assertEquals(2, $data[0]->getItemId()); + + $itemSearchData->setSeachString(''); + + $result = self::$repository->search($itemSearchData); + + $this->assertEquals(2, $result->getNumRows()); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testDeleteByIdBatch() + { + $this->assertEquals(2, self::$repository->deleteByIdBatch([1, 2, 3])); + $this->assertEquals(0, self::$repository->deleteByIdBatch([])); + + $this->assertEquals(0, $this->conn->getRowCount('PublicLink')); + } + + /** + * @covers \SP\Repositories\PublicLink\PublicLinkRepository::checkDuplicatedOnAdd() + * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Repositories\DuplicatedItemException + * @throws \SP\Core\Exceptions\SPException + */ + public function testCreate() + { + self::$repository->delete(2); + + $data = new PublicLinkData(); + $data->setItemId(1); + $data->setHash(Util::generateRandomBytes()); + $data->setData('data'); + $data->setUserId(1); + $data->setTypeId(1); + $data->setNotify(1); + $data->setDateExpire(time() + 600); + $data->setDateAdd(time()); + $data->setMaxCountViews(3); + + $this->assertEquals(3, self::$repository->create($data)->getLastId()); + + /** @var PublicLinkListData $resultData */ + $resultData = self::$repository->getById(3)->getData(); + + $this->assertEquals(3, $resultData->getId()); + $this->assertEquals($data->getItemId(), $resultData->getItemId()); + $this->assertEquals($data->getHash(), $resultData->getHash()); + $this->assertEquals($data->getData(), $resultData->getData()); + $this->assertEquals($data->getUserId(), $resultData->getUserId()); + $this->assertEquals($data->getTypeId(), $resultData->getTypeId()); + $this->assertEquals($data->isNotify(), $resultData->isNotify()); + $this->assertEquals($data->getDateExpire(), $resultData->getDateExpire()); + $this->assertEquals($data->getDateAdd(), $resultData->getDateAdd()); + $this->assertEquals($data->getMaxCountViews(), $resultData->getMaxCountViews()); + + $this->expectException(DuplicatedItemException::class); + + self::$repository->create($data); + + $this->expectException(ConstraintException::class); + + $data->setItemId(3); + + self::$repository->create($data); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetById() + { + $result = self::$repository->getById(2); + /** @var PublicLinkListData $data */ + $data = $result->getData(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertInstanceOf(PublicLinkListData::class, $data); + $this->assertEquals(2, $data->getId()); + $this->assertEquals(1, $data->getItemId()); + $this->assertEquals(pack('H*', '313065363937306666653833623531393234356635333433333732626366663433376461623565356134386238326131653238636131356235346635'), $data->getHash()); + $this->assertNotEmpty($data->getData()); + $this->assertEquals(1, $data->getUserId()); + $this->assertEquals(1, $data->getTypeId()); + $this->assertEquals(0, $data->isNotify()); + $this->assertEquals(1529228863, $data->getDateAdd()); + $this->assertEquals(1529229463, $data->getDateExpire()); + $this->assertEquals(0, $data->getDateUpdate()); + $this->assertEquals(0, $data->getCountViews()); + $this->assertEquals(3, $data->getMaxCountViews()); + $this->assertEquals(0, $data->getTotalCountViews()); + $this->assertNull($data->getUseInfo()); + $this->assertEquals('Google', $data->getAccountName()); + $this->assertEquals('admin', $data->getUserLogin()); + + $this->assertEquals(0, self::$repository->getById(3)->getNumRows()); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testDelete() + { + $this->assertEquals(1, self::$repository->delete(1)); + $this->assertEquals(1, self::$repository->delete(2)); + $this->assertEquals(0, self::$repository->delete(3)); + + $this->assertEquals(0, $this->conn->getRowCount('PublicLink')); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testAddLinkView() + { + $hash = pack('H*', '313065363937306666653833623531393234356635333433333732626366663433376461623565356134386238326131653238636131356235346635'); + + $data = new PublicLinkData(); + $data->setHash($hash); + $data->setUseInfo(PublicLinkService::getUseInfo($hash)); + + $this->assertEquals(1, self::$repository->addLinkView($data)); + + /** @var PublicLinkData $resultData */ + $resultData = self::$repository->getByHash($hash)->getData(); + + $this->assertEquals(1, $resultData->getCountViews()); + $this->assertEquals(1, $resultData->getTotalCountViews()); + $this->assertEquals($data->getUseInfo(), $resultData->getUseInfo()); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetByHash() + { + $hash = pack('H*', '313065363937306666653833623531393234356635333433333732626366663433376461623565356134386238326131653238636131356235346635'); + + $result = self::$repository->getByHash($hash); + /** @var PublicLinkData $data */ + $data = $result->getData(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertInstanceOf(PublicLinkData::class, $data); + $this->assertEquals(2, $data->getId()); + $this->assertEquals(1, $data->getItemId()); + $this->assertEquals($hash, $data->getHash()); + $this->assertNotEmpty($data->getData()); + $this->assertEquals(1, $data->getUserId()); + $this->assertEquals(1, $data->getTypeId()); + $this->assertEquals(0, $data->isNotify()); + $this->assertEquals(1529228863, $data->getDateAdd()); + $this->assertEquals(1529229463, $data->getDateExpire()); + $this->assertEquals(0, $data->getDateUpdate()); + $this->assertEquals(0, $data->getCountViews()); + $this->assertEquals(3, $data->getMaxCountViews()); + $this->assertEquals(0, $data->getTotalCountViews()); + $this->assertNull($data->getUseInfo()); + + $this->assertEquals(0, self::$repository->getByHash('')->getNumRows()); + } + + /** + * @depends testGetById + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\SPException + * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException + */ + public function testRefresh() + { + $data = new PublicLinkData(); + $data->setHash(Util::generateRandomBytes()); + $data->setDateExpire(time() + 3600); + $data->setMaxCountViews(6); + $data->setData('data_new'); + $data->setId(1); + + $this->assertEquals(1, self::$repository->refresh($data)); + + /** @var PublicLinkListData $resultData */ + $resultData = self::$repository->getById(1)->getData(); + + $this->assertEquals($data->getHash(), $resultData->getHash()); + $this->assertEquals($data->getDateExpire(), $resultData->getDateExpire()); + $this->assertEquals($data->getMaxCountViews(), $resultData->getMaxCountViews()); + $this->assertEquals($data->getData(), $resultData->getData()); + + $this->expectException(ConstraintException::class); + + $data->setId(3); + + $this->assertEquals(0, self::$repository->refresh($data)); + + $data->setId(1); + $data->setHash(null); + + $this->assertEquals(0, self::$repository->refresh($data)); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetByIdBatch() + { + $result = self::$repository->getByIdBatch([1, 2, 3]); + /** @var PublicLinkListData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(2, $result->getNumRows()); + + $this->assertInstanceOf(PublicLinkListData::class, $data[0]); + $this->assertEquals(1, $data[0]->getId()); + + $this->assertInstanceOf(PublicLinkListData::class, $data[1]); + $this->assertEquals(2, $data[1]->getId()); + $this->assertEquals(1, $data[1]->getItemId()); + $this->assertEquals(pack('H*', '313065363937306666653833623531393234356635333433333732626366663433376461623565356134386238326131653238636131356235346635'), $data[1]->getHash()); + $this->assertNotEmpty($data[1]->getData()); + $this->assertEquals(1, $data[1]->getUserId()); + $this->assertEquals(1, $data[1]->getTypeId()); + $this->assertEquals(0, $data[1]->isNotify()); + $this->assertEquals(1529228863, $data[1]->getDateAdd()); + $this->assertEquals(1529229463, $data[1]->getDateExpire()); + $this->assertEquals(0, $data[1]->getDateUpdate()); + $this->assertEquals(0, $data[1]->getCountViews()); + $this->assertEquals(3, $data[1]->getMaxCountViews()); + $this->assertEquals(0, $data[1]->getTotalCountViews()); + $this->assertNull($data[1]->getUseInfo()); + $this->assertEquals('Google', $data[1]->getAccountName()); + $this->assertEquals('admin', $data[1]->getUserLogin()); + + $this->assertEquals(0, self::$repository->getByIdBatch([])->getNumRows()); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetAll() + { + $result = self::$repository->getAll(); + /** @var PublicLinkListData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(2, $result->getNumRows()); + + $this->assertInstanceOf(PublicLinkListData::class, $data[0]); + $this->assertEquals(1, $data[0]->getId()); + + $this->assertInstanceOf(PublicLinkListData::class, $data[1]); + $this->assertEquals(2, $data[1]->getId()); + $this->assertEquals(1, $data[1]->getItemId()); + $this->assertEquals(pack('H*', '313065363937306666653833623531393234356635333433333732626366663433376461623565356134386238326131653238636131356235346635'), $data[1]->getHash()); + $this->assertNotEmpty($data[1]->getData()); + $this->assertEquals(1, $data[1]->getUserId()); + $this->assertEquals(1, $data[1]->getTypeId()); + $this->assertEquals(0, $data[1]->isNotify()); + $this->assertEquals(1529228863, $data[1]->getDateAdd()); + $this->assertEquals(1529229463, $data[1]->getDateExpire()); + $this->assertEquals(0, $data[1]->getDateUpdate()); + $this->assertEquals(0, $data[1]->getCountViews()); + $this->assertEquals(3, $data[1]->getMaxCountViews()); + $this->assertEquals(0, $data[1]->getTotalCountViews()); + $this->assertNull($data[1]->getUseInfo()); + $this->assertEquals('Google', $data[1]->getAccountName()); + $this->assertEquals('admin', $data[1]->getUserLogin()); + } + + /** + * @throws ConstraintException + * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\SPException + */ + public function testUpdate() + { + $data = new PublicLinkData(); + $data->setId(1); + $data->setItemId(2); + $data->setHash(Util::generateRandomBytes()); + $data->setData('data'); + $data->setUserId(2); + $data->setTypeId(1); + $data->setNotify(0); + $data->setDateExpire(time() + 3600); + $data->setDateAdd(time()); + $data->setMaxCountViews(6); + + $this->assertEquals(1, self::$repository->update($data)); + + /** @var PublicLinkListData $resultData */ + $resultData = self::$repository->getById(1)->getData(); + + $this->assertEquals(1, $resultData->getId()); + $this->assertEquals($data->getItemId(), $resultData->getItemId()); + $this->assertEquals($data->getHash(), $resultData->getHash()); + $this->assertEquals($data->getData(), $resultData->getData()); + $this->assertEquals($data->getUserId(), $resultData->getUserId()); + $this->assertEquals($data->getTypeId(), $resultData->getTypeId()); + $this->assertEquals($data->isNotify(), $resultData->isNotify()); + $this->assertEquals($data->getDateExpire(), $resultData->getDateExpire()); + $this->assertEquals($data->getDateAdd(), $resultData->getDateAdd()); + $this->assertEquals($data->getMaxCountViews(), $resultData->getMaxCountViews()); + + $this->expectException(ConstraintException::class); + + $data->setItemId(1); + + self::$repository->update($data); + } +} diff --git a/tests/Repositories/TagRepositoryTest.php b/tests/Repositories/TagRepositoryTest.php index 2993ee24..b8021989 100644 --- a/tests/Repositories/TagRepositoryTest.php +++ b/tests/Repositories/TagRepositoryTest.php @@ -45,7 +45,7 @@ class TagRepositoryTest extends DatabaseTestCase /** * @var TagRepository */ - private static $tagRepository; + private static $repository; /** * @throws \DI\NotFoundException @@ -60,7 +60,7 @@ class TagRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$tagRepository = $dic->get(TagRepository::class); + self::$repository = $dic->get(TagRepository::class); } /** @@ -75,7 +75,7 @@ class TagRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('www'); - $result = self::$tagRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(1, $result->getNumRows()); @@ -87,7 +87,7 @@ class TagRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('prueba'); - $result = self::$tagRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $this->assertEquals(0, $result->getNumRows()); $this->assertCount(0, $result->getDataAsArray()); @@ -95,30 +95,36 @@ class TagRepositoryTest extends DatabaseTestCase /** * Comprobar los resultados de obtener las etiquetas por Id + * + * @throws QueryException + * @throws \SP\Core\Exceptions\ConstraintException */ public function testGetById() { - $tag = self::$tagRepository->getById(10); + $tag = self::$repository->getById(10); $this->assertCount(0, $tag); - $tag = self::$tagRepository->getById(1); + $tag = self::$repository->getById(1); $this->assertEquals('www', $tag->getName()); - $tag = self::$tagRepository->getById(2); + $tag = self::$repository->getById(2); $this->assertEquals('windows', $tag->getName()); } /** * Comprobar la obtención de todas las etiquetas + * + * @throws QueryException + * @throws \SP\Core\Exceptions\ConstraintException */ public function testGetAll() { $count = $this->conn->getRowCount('Tag'); - $results = self::$tagRepository->getAll(); + $results = self::$repository->getAll(); $this->assertCount($count, $results); @@ -135,7 +141,8 @@ class TagRepositoryTest extends DatabaseTestCase /** * Comprobar la actualización de etiquetas * - * @covers \SP\Repositories\Category\CategoryRepository::checkDuplicatedOnUpdate() + * @depends testGetById + * @covers \SP\Repositories\Category\CategoryRepository::checkDuplicatedOnUpdate() * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException * @throws \SP\Core\Exceptions\SPException @@ -146,9 +153,9 @@ class TagRepositoryTest extends DatabaseTestCase $tagData->id = 1; $tagData->name = 'Servidor'; - self::$tagRepository->update($tagData); + self::$repository->update($tagData); - $category = self::$tagRepository->getById(1); + $category = self::$repository->getById(1); $this->assertEquals($category->getName(), $tagData->name); @@ -159,7 +166,7 @@ class TagRepositoryTest extends DatabaseTestCase $this->expectException(DuplicatedItemException::class); - self::$tagRepository->update($tagData); + self::$repository->update($tagData); } /** @@ -169,8 +176,8 @@ class TagRepositoryTest extends DatabaseTestCase */ public function testDeleteByIdBatch() { - $this->assertEquals(0, self::$tagRepository->deleteByIdBatch([4])); - $this->assertEquals(3, self::$tagRepository->deleteByIdBatch([1, 2, 3])); + $this->assertEquals(0, self::$repository->deleteByIdBatch([4])); + $this->assertEquals(3, self::$repository->deleteByIdBatch([1, 2, 3])); $this->assertEquals(0, $this->conn->getRowCount('Tag')); } @@ -178,7 +185,8 @@ class TagRepositoryTest extends DatabaseTestCase /** * Comprobar la creación de etiquetas * - * @covers \SP\Repositories\Category\CategoryRepository::checkDuplicatedOnAdd() + * @depends testGetById + * @covers \SP\Repositories\Category\CategoryRepository::checkDuplicatedOnAdd() * @throws DuplicatedItemException * @throws \SP\Core\Exceptions\SPException */ @@ -189,10 +197,10 @@ class TagRepositoryTest extends DatabaseTestCase $tagData = new TagData(); $tagData->name = 'Core'; - $id = self::$tagRepository->create($tagData); + $id = self::$repository->create($tagData); // Comprobar que el Id devuelto corresponde con la etiqueta creada - $tag = self::$tagRepository->getById($id); + $tag = self::$repository->getById($id); $this->assertEquals($tagData->name, $tag->getName()); @@ -211,14 +219,14 @@ class TagRepositoryTest extends DatabaseTestCase { $countBefore = $this->conn->getRowCount('Tag'); - $this->assertEquals(1, self::$tagRepository->delete(3)); + $this->assertEquals(1, self::$repository->delete(3)); $countAfter = $this->conn->getRowCount('Tag'); $this->assertEquals($countBefore - 1, $countAfter); // Comprobar la eliminación de etiquetas usadas - $this->assertEquals(1, self::$tagRepository->delete(1)); + $this->assertEquals(1, self::$repository->delete(1)); } /** @@ -229,9 +237,9 @@ class TagRepositoryTest extends DatabaseTestCase */ public function testGetByIdBatch() { - $this->assertCount(3, self::$tagRepository->getByIdBatch([1, 2, 3])); - $this->assertCount(3, self::$tagRepository->getByIdBatch([1, 2, 3, 4, 5])); - $this->assertCount(0, self::$tagRepository->getByIdBatch([])); + $this->assertCount(3, self::$repository->getByIdBatch([1, 2, 3])); + $this->assertCount(3, self::$repository->getByIdBatch([1, 2, 3, 4, 5])); + $this->assertCount(0, self::$repository->getByIdBatch([])); } /** @@ -240,6 +248,6 @@ class TagRepositoryTest extends DatabaseTestCase */ public function testCheckInUse() { - $this->assertTrue(self::$tagRepository->checkInUse(1)); + $this->assertTrue(self::$repository->checkInUse(1)); } } diff --git a/tests/Repositories/TrackRepositoryTest.php b/tests/Repositories/TrackRepositoryTest.php new file mode 100644 index 00000000..756f2f77 --- /dev/null +++ b/tests/Repositories/TrackRepositoryTest.php @@ -0,0 +1,187 @@ +. + */ + +namespace SP\Tests\Repositories; + +use DI\DependencyException; +use PHPUnit\DbUnit\DataSet\IDataSet; +use SP\DataModel\TrackData; +use SP\Repositories\Track\TrackRepository; +use SP\Repositories\Track\TrackRequest; +use SP\Storage\Database\DatabaseConnectionData; +use SP\Tests\DatabaseTestCase; +use function SP\Tests\setupContext; + +/** + * Class TrackRepositoryTest + * + * @package SP\Tests\Repositories + */ +class TrackRepositoryTest extends DatabaseTestCase +{ + /** + * @var TrackRepository + */ + private static $repository; + + /** + * @throws DependencyException + * @throws \DI\NotFoundException + * @throws \SP\Core\Context\ContextException + */ + public static function setUpBeforeClass() + { + $dic = setupContext(); + + // Datos de conexión a la BBDD + self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); + + // Inicializar el repositorio + self::$repository = $dic->get(TrackRepository::class); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testDelete() + { + $this->assertEquals(1, self::$repository->delete(1)); + + $this->assertEquals(5, $this->conn->getRowCount('Track')); + + $this->assertEquals(0, self::$repository->delete(10)); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetById() + { + $result = self::$repository->getById(1); + /** @var TrackData $data */ + $data = $result->getData(); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertInstanceOf(TrackData::class, $data); + $this->assertEquals(1, $data->getId()); + $this->assertEquals(0, $data->getUserId()); + $this->assertEquals('1529145183', $data->getTime()); + $this->assertEquals('login', $data->getSource()); + $this->assertEquals('172.22.0.1', $data->getIpv4()); + + $this->assertEquals(0, self::$repository->getById(10)->getNumRows()); + } + + /** + * @depends testGetById + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\InvalidArgumentException + */ + public function testAdd() + { + $data = new TrackRequest(); + $data->setTrackIp('192.168.0.1'); + $data->userId = 1; + $data->time = time(); + $data->source = __METHOD__; + + $this->assertEquals(7, self::$repository->add($data)); + + /** @var TrackData $resultData */ + $resultData = self::$repository->getById(7)->getData(); + + $this->assertEquals(7, $resultData->getId()); + $this->assertEquals($data->userId, $resultData->getUserId()); + $this->assertEquals($data->time, $resultData->getTime()); + $this->assertEquals($data->source, $resultData->getSource()); + $this->assertEquals('192.168.0.1', $resultData->getIpv4()); + } + + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetAll() + { + $result = self::$repository->getAll(); + /** @var TrackData[] $data */ + $data = $result->getDataAsArray(); + + $this->assertEquals(6, $result->getNumRows()); + $this->assertCount(6, $data); + $this->assertInstanceOf(TrackData::class, $data[0]); + $this->assertEquals(1, $data[0]->getId()); + $this->assertEquals(0, $data[0]->getUserId()); + $this->assertEquals('1529145183', $data[0]->getTime()); + $this->assertEquals('login', $data[0]->getSource()); + $this->assertEquals('172.22.0.1', $data[0]->getIpv4()); + $this->assertEquals('', $data[0]->getIpv6()); + } + + /** + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\InvalidArgumentException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetTracksForClientFromTime() + { + $data = new TrackRequest(); + $data->setTrackIp('172.22.0.1'); + $data->time = 1529272367; + $data->source = 'login'; + + $result = self::$repository->getTracksForClientFromTime($data); + /** @var TrackData[] $resultData */ + $resultData = $result->getDataAsArray(); + + $this->assertEquals(3, $result->getNumRows()); + $this->assertCount(3, $resultData); + $this->assertInstanceOf(TrackData::class, $resultData[0]); + $this->assertEquals(4, $resultData[0]->getId()); + $this->assertInstanceOf(TrackData::class, $resultData[1]); + $this->assertEquals(5, $resultData[1]->getId()); + $this->assertInstanceOf(TrackData::class, $resultData[2]); + $this->assertEquals(6, $resultData[2]->getId()); + + $data->time = time(); + + $result = self::$repository->getTracksForClientFromTime($data); + + $this->assertEquals(0, $result->getNumRows()); + } + + /** + * Returns the test dataset. + * + * @return IDataSet + */ + protected function getDataSet() + { + return $this->createMySQLXMLDataSet(RESOURCE_DIR . DIRECTORY_SEPARATOR . 'datasets' . DIRECTORY_SEPARATOR . 'syspass_track.xml'); + } +} diff --git a/tests/Repositories/UserGroupRepositoryTest.php b/tests/Repositories/UserGroupRepositoryTest.php index c304baac..da78bd29 100644 --- a/tests/Repositories/UserGroupRepositoryTest.php +++ b/tests/Repositories/UserGroupRepositoryTest.php @@ -47,7 +47,7 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase /** * @var UserGroupRepository */ - private static $userGroupRepository; + private static $repository; /** * @throws DependencyException @@ -62,17 +62,20 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$userGroupRepository = $dic->get(UserGroupRepository::class); + self::$repository = $dic->get(UserGroupRepository::class); } /** * Comprobar la obtención de uso del grupo por usuarios + * + * @throws ConstraintException + * @throws QueryException */ public function testGetUsageByUsers() { - $this->assertCount(2, self::$userGroupRepository->getUsageByUsers(1)); - $this->assertCount(5, self::$userGroupRepository->getUsageByUsers(2)); - $this->assertCount(0, self::$userGroupRepository->getUsageByUsers(3)); + $this->assertCount(2, self::$repository->getUsageByUsers(1)); + $this->assertCount(5, self::$repository->getUsageByUsers(2)); + $this->assertCount(0, self::$repository->getUsageByUsers(3)); } /** @@ -83,9 +86,9 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase */ public function testCheckInUse() { - $this->assertTrue(self::$userGroupRepository->checkInUse(1)); - $this->assertTrue(self::$userGroupRepository->checkInUse(2)); - $this->assertFalse(self::$userGroupRepository->checkInUse(5)); + $this->assertTrue(self::$repository->checkInUse(1)); + $this->assertTrue(self::$repository->checkInUse(2)); + $this->assertFalse(self::$repository->checkInUse(5)); } /** @@ -96,13 +99,13 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase */ public function testGetByName() { - $group = self::$userGroupRepository->getByName('Demo'); + $group = self::$repository->getByName('Demo'); $this->assertInstanceOf(UserGroupData::class, $group); $this->assertEquals('Demo', $group->getName()); $this->assertEmpty($group->getDescription()); - $group = self::$userGroupRepository->getByName('Prueba'); + $group = self::$repository->getByName('Prueba'); $this->assertCount(0, $group); } @@ -117,7 +120,7 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase // Se lanza excepción en caso de restricción relacional $this->expectException(ConstraintException::class); - $result = self::$userGroupRepository->deleteByIdBatch([1, 2, 3]); + $result = self::$repository->deleteByIdBatch([1, 2, 3]); $this->assertEquals(1, $result); } @@ -137,28 +140,31 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase $userGroupData->setName('Grupo demo'); $userGroupData->setDescription('Grupo para usuarios demo'); - $this->assertEquals(1, self::$userGroupRepository->update($userGroupData)); + $this->assertEquals(1, self::$repository->update($userGroupData)); $this->expectException(DuplicatedItemException::class); $userGroupData->setName('Admins'); - self::$userGroupRepository->update($userGroupData); + self::$repository->update($userGroupData); } /** * Comprobar la obtención de grupos por Id + * + * @throws ConstraintException + * @throws QueryException */ public function testGetById() { - $group = self::$userGroupRepository->getById(2); + $group = self::$repository->getById(2); $this->assertInstanceOf(UserGroupData::class, $group); $this->assertEquals('Demo', $group->getName()); $this->assertEmpty($group->getDescription()); - $group = self::$userGroupRepository->getById(4); + $group = self::$repository->getById(4); $this->assertCount(0, $group); } @@ -176,21 +182,24 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase $userGroupData->setName('Grupo Prueba'); $userGroupData->setDescription('Grupo de prueba para usuarios'); - $this->assertEquals(4, self::$userGroupRepository->create($userGroupData)); + $this->assertEquals(4, self::$repository->create($userGroupData)); $this->expectException(DuplicatedItemException::class); $userGroupData->setName('Admins'); - self::$userGroupRepository->create($userGroupData); + self::$repository->create($userGroupData); } /** * Comprobar la obtención de grupos + * + * @throws ConstraintException + * @throws QueryException */ public function testGetAll() { - $groups = self::$userGroupRepository->getAll(); + $groups = self::$repository->getAll(); $this->assertCount(3, $groups); $this->assertInstanceOf(UserGroupData::class, $groups[0]); @@ -206,32 +215,38 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase */ public function testDelete() { - $result = self::$userGroupRepository->delete(3); + $result = self::$repository->delete(3); $this->assertEquals(1, $result); $this->assertEquals(2, $this->conn->getRowCount('UserGroup')); $this->expectException(ConstraintException::class); - self::$userGroupRepository->delete(1); - self::$userGroupRepository->delete(2); + self::$repository->delete(1); + self::$repository->delete(2); } /** * Comprobar la obtención de uso de grupos + * + * @throws ConstraintException + * @throws QueryException */ public function testGetUsage() { - $this->assertCount(7, self::$userGroupRepository->getUsage(2)); - $this->assertCount(0, self::$userGroupRepository->getUsage(3)); + $this->assertCount(7, self::$repository->getUsage(2)); + $this->assertCount(0, self::$repository->getUsage(3)); } /** * Comprobar la obtención de grupos en lote + * + * @throws ConstraintException + * @throws QueryException */ public function testGetByIdBatch() { - $groups = self::$userGroupRepository->getByIdBatch([1, 2, 5]); + $groups = self::$repository->getByIdBatch([1, 2, 5]); $this->assertCount(2, $groups); $this->assertInstanceOf(UserGroupData::class, $groups[0]); @@ -252,7 +267,7 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('Demo'); - $result = self::$userGroupRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(1, $result->getNumRows()); @@ -265,7 +280,7 @@ class UserGroupRepositoryTestCase extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('prueba'); - $result = self::$userGroupRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $this->assertEquals(0, $result->getNumRows()); $this->assertCount(0, $result->getDataAsArray()); diff --git a/tests/Repositories/UserPassRecoverRepositoryTest.php b/tests/Repositories/UserPassRecoverRepositoryTest.php new file mode 100644 index 00000000..79d6e360 --- /dev/null +++ b/tests/Repositories/UserPassRecoverRepositoryTest.php @@ -0,0 +1,124 @@ +. + */ + +namespace SP\Tests\Repositories; + +use DI\DependencyException; +use SP\Core\Exceptions\ConstraintException; +use SP\Repositories\User\UserPassRecoverRepository; +use SP\Storage\Database\DatabaseConnectionData; +use SP\Tests\DatabaseTestCase; +use SP\Util\Util; +use function SP\Tests\setupContext; + +/** + * Class UserPassRecoverRepositoryTest + * + * @package SP\Tests\Repositories + */ +class UserPassRecoverRepositoryTest extends DatabaseTestCase +{ + /** + * @var UserPassRecoverRepository + */ + private static $repository; + + /** + * @throws DependencyException + * @throws \DI\NotFoundException + * @throws \SP\Core\Context\ContextException + */ + public static function setUpBeforeClass() + { + $dic = setupContext(); + + // Datos de conexión a la BBDD + self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); + + // Inicializar el repositorio + self::$repository = $dic->get(UserPassRecoverRepository::class); + } + + /** + * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testAdd() + { + $this->assertEquals(3, self::$repository->add(2, Util::generateRandomBytes())); + + $this->expectException(ConstraintException::class); + + self::$repository->add(10, Util::generateRandomBytes()); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function testGetAttemptsByUserId() + { + $this->assertEquals(2, self::$repository->getAttemptsByUserId(2, 1529275206)); + + $this->assertEquals(0, self::$repository->getAttemptsByUserId(3, 1529275206)); + + $this->assertEquals(0, self::$repository->getAttemptsByUserId(10, 1529275206)); + } + + /** + * @throws ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException + */ + public function testGetUserIdForHash() + { + $result = self::$repository->getUserIdForHash(pack('H*', '3038366162313036303866363838346566383031396134353237333561633066'), 1529275200); + + $this->assertEquals(1, $result->getNumRows()); + $this->assertEquals(2, $result->getData()->userId); + + $result = self::$repository->getUserIdForHash(Util::generateRandomBytes(), 1529275206); + + $this->assertEquals(0, $result->getNumRows()); + } + + /** + * @throws \SP\Core\Exceptions\SPException + */ + public function testToggleUsedByHash() + { + $result = self::$repository->toggleUsedByHash(pack('H*', '3038366162313036303866363838346566383031396134353237333561633066'), 1529275200); + + $this->assertEquals(1, $result); + + $result = self::$repository->toggleUsedByHash(pack('H*', '3038366162313036303866363838346566383031396134353237333561633066'), 1529275200); + + $this->assertEquals(0, $result); + + $result = self::$repository->toggleUsedByHash(pack('H*', '3532383335346130663366626661376161626538303831373231653065633631'), 1529275331); + + $this->assertEquals(0, $result); + } +} diff --git a/tests/Repositories/UserProfileRepositoryTest.php b/tests/Repositories/UserProfileRepositoryTest.php index 03eff63a..a3229b81 100644 --- a/tests/Repositories/UserProfileRepositoryTest.php +++ b/tests/Repositories/UserProfileRepositoryTest.php @@ -48,7 +48,7 @@ class UserProfileRepositoryTest extends DatabaseTestCase /** * @var UserProfileRepository */ - private static $userProfileRepository; + private static $repository; /** * @throws DependencyException @@ -63,7 +63,7 @@ class UserProfileRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$userProfileRepository = $dic->get(UserProfileRepository::class); + self::$repository = $dic->get(UserProfileRepository::class); } /** @@ -74,7 +74,7 @@ class UserProfileRepositoryTest extends DatabaseTestCase */ public function testGetAll() { - $profiles = self::$userProfileRepository->getAll(); + $profiles = self::$repository->getAll(); $this->assertCount(3, $profiles); $this->assertInstanceOf(UserProfileData::class, $profiles[0]); @@ -95,7 +95,7 @@ class UserProfileRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('Demo'); - $result = self::$userProfileRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(1, $result->getNumRows()); @@ -107,7 +107,7 @@ class UserProfileRepositoryTest extends DatabaseTestCase // Nueva búsqueda de perfil no existente $itemSearchData->setSeachString('prueba'); - $result = self::$userProfileRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $this->assertEquals(0, $result->getNumRows()); $this->assertCount(0, $result->getDataAsArray()); @@ -127,13 +127,13 @@ class UserProfileRepositoryTest extends DatabaseTestCase $userProfileData->setId(2); $userProfileData->setName('Perfil Demo'); - $this->assertEquals(1, self::$userProfileRepository->update($userProfileData)); + $this->assertEquals(1, self::$repository->update($userProfileData)); $this->expectException(DuplicatedItemException::class); $userProfileData->setName('Admin'); - self::$userProfileRepository->update($userProfileData); + self::$repository->update($userProfileData); } /** @@ -144,15 +144,15 @@ class UserProfileRepositoryTest extends DatabaseTestCase */ public function testDelete() { - $result = self::$userProfileRepository->delete(3); + $result = self::$repository->delete(3); $this->assertEquals(1, $result); $this->assertEquals(2, $this->conn->getRowCount('UserProfile')); $this->expectException(ConstraintException::class); - self::$userProfileRepository->delete(1); - self::$userProfileRepository->delete(2); + self::$repository->delete(1); + self::$repository->delete(2); } /** @@ -163,9 +163,9 @@ class UserProfileRepositoryTest extends DatabaseTestCase */ public function testCheckInUse() { - $this->assertTrue(self::$userProfileRepository->checkInUse(1)); - $this->assertTrue(self::$userProfileRepository->checkInUse(2)); - $this->assertFalse(self::$userProfileRepository->checkInUse(3)); + $this->assertTrue(self::$repository->checkInUse(1)); + $this->assertTrue(self::$repository->checkInUse(2)); + $this->assertFalse(self::$repository->checkInUse(3)); } /** @@ -186,7 +186,7 @@ class UserProfileRepositoryTest extends DatabaseTestCase $userProfileData->setName('Prueba'); $userProfileData->setProfile($profileData); - $result = self::$userProfileRepository->create($userProfileData); + $result = self::$repository->create($userProfileData); $this->assertEquals(4, $result); $this->assertEquals(4, $this->conn->getRowCount('UserProfile')); @@ -195,39 +195,48 @@ class UserProfileRepositoryTest extends DatabaseTestCase $userProfileData->setName('Demo'); - self::$userProfileRepository->create($userProfileData); + self::$repository->create($userProfileData); } /** * Comprobar la obtención de perfiles por Id + * + * @throws ConstraintException + * @throws QueryException */ public function testGetById() { - $profile = self::$userProfileRepository->getById(2); + $profile = self::$repository->getById(2); $this->assertInstanceOf(UserProfileData::class, $profile); $this->assertEquals('Demo', $profile->getName()); $this->assertNotEmpty($profile->getProfile()); - $profile = self::$userProfileRepository->getById(4); + $profile = self::$repository->getById(4); $this->assertCount(0, $profile); } /** * Comprobar la obtención de los usuarios asociados a un perfil + * + * @throws ConstraintException + * @throws QueryException */ public function testGetUsersForProfile() { - $this->assertCount(1, self::$userProfileRepository->getUsersForProfile(2)); - $this->assertCount(0, self::$userProfileRepository->getUsersForProfile(3)); + $this->assertCount(1, self::$repository->getUsersForProfile(2)); + $this->assertCount(0, self::$repository->getUsersForProfile(3)); } /** * Comprobar la obtención de perfiles en lote + * + * @throws ConstraintException + * @throws QueryException */ public function testGetByIdBatch() { - $profiles = self::$userProfileRepository->getByIdBatch([1, 2, 5]); + $profiles = self::$repository->getByIdBatch([1, 2, 5]); $this->assertCount(2, $profiles); $this->assertInstanceOf(UserProfileData::class, $profiles[0]); @@ -247,7 +256,7 @@ class UserProfileRepositoryTest extends DatabaseTestCase // Se lanza excepción en caso de restricción relacional $this->expectException(ConstraintException::class); - $result = self::$userProfileRepository->deleteByIdBatch([1, 2, 3, 4]); + $result = self::$repository->deleteByIdBatch([1, 2, 3, 4]); $this->assertEquals(1, $result); } diff --git a/tests/Repositories/UserRepositoryTest.php b/tests/Repositories/UserRepositoryTest.php index 03503eea..a284fbdf 100644 --- a/tests/Repositories/UserRepositoryTest.php +++ b/tests/Repositories/UserRepositoryTest.php @@ -53,7 +53,7 @@ class UserRepositoryTest extends DatabaseTestCase /** * @var UserRepository */ - private static $userRepository; + private static $repository; /** * @throws DependencyException @@ -68,7 +68,7 @@ class UserRepositoryTest extends DatabaseTestCase self::$databaseConnectionData = $dic->get(DatabaseConnectionData::class); // Inicializar el repositorio - self::$userRepository = $dic->get(UserRepository::class); + self::$repository = $dic->get(UserRepository::class); } /** @@ -95,17 +95,17 @@ class UserRepositoryTest extends DatabaseTestCase $userData->setIsChangePass(1); $userData->setIsLdap(0); - $this->assertEquals(1, self::$userRepository->update($userData)); + $this->assertEquals(1, self::$repository->update($userData)); $userData->setId(3); $this->expectException(DuplicatedItemException::class); - self::$userRepository->update($userData); + self::$repository->update($userData); $userData->setId(10); - $this->assertEquals(0, self::$userRepository->update($userData)); + $this->assertEquals(0, self::$repository->update($userData)); } /** @@ -123,7 +123,7 @@ class UserRepositoryTest extends DatabaseTestCase $preferences->setResultsAsCards(true); $preferences->setResultsPerPage(10); - $this->assertEquals(1, self::$userRepository->updatePreferencesById(2, $preferences)); + $this->assertEquals(1, self::$repository->updatePreferencesById(2, $preferences)); } /** @@ -133,7 +133,7 @@ class UserRepositoryTest extends DatabaseTestCase */ public function testGetById() { - $user = self::$userRepository->getById(2); + $user = self::$repository->getById(2); $this->assertInstanceOf(UserData::class, $user); $this->assertEquals('sysPass demo', $user->getName()); @@ -141,7 +141,7 @@ class UserRepositoryTest extends DatabaseTestCase $this->expectException(NoSuchItemException::class); - self::$userRepository->getById(5); + self::$repository->getById(5); } /** @@ -152,16 +152,19 @@ class UserRepositoryTest extends DatabaseTestCase */ public function testCheckExistsByLogin() { - $this->assertTrue(self::$userRepository->checkExistsByLogin('demo')); - $this->assertFalse(self::$userRepository->checkExistsByLogin('usuario')); + $this->assertTrue(self::$repository->checkExistsByLogin('demo')); + $this->assertFalse(self::$repository->checkExistsByLogin('usuario')); } /** * Comprobar los datos de uso de un usuario + * + * @throws ConstraintException + * @throws QueryException */ public function testGetUsageForUser() { - $this->assertCount(2, self::$userRepository->getUsageForUser(2)); + $this->assertCount(2, self::$repository->getUsageForUser(2)); } /** @@ -173,11 +176,11 @@ class UserRepositoryTest extends DatabaseTestCase */ public function testUpdatePassById() { - $result = self::$userRepository->updatePassById(2, new UpdatePassRequest(Hash::hashKey('prueba123'))); + $result = self::$repository->updatePassById(2, new UpdatePassRequest(Hash::hashKey('prueba123'))); $this->assertEquals(1, $result); - $result = self::$userRepository->updatePassById(10, new UpdatePassRequest(Hash::hashKey('prueba123'))); + $result = self::$repository->updatePassById(10, new UpdatePassRequest(Hash::hashKey('prueba123'))); $this->assertEquals(0, $result); } @@ -189,7 +192,7 @@ class UserRepositoryTest extends DatabaseTestCase */ public function testGetByIdBatch() { - $users = self::$userRepository->getByIdBatch([1, 2, 5]); + $users = self::$repository->getByIdBatch([1, 2, 5]); $this->assertCount(2, $users); $this->assertInstanceOf(UserData::class, $users[0]); @@ -199,10 +202,13 @@ class UserRepositoryTest extends DatabaseTestCase /** * Obtener los datos de todos los usuarios + * + * @throws ConstraintException + * @throws QueryException */ public function testGetAll() { - $users = self::$userRepository->getAll(); + $users = self::$repository->getAll(); $this->assertCount(4, $users); $this->assertInstanceOf(UserData::class, $users[0]); @@ -224,11 +230,11 @@ class UserRepositoryTest extends DatabaseTestCase $userData->setIsLdap(1); $userData->setLogin('demo'); - $this->assertEquals(1, self::$userRepository->updateOnLogin($userData)); + $this->assertEquals(1, self::$repository->updateOnLogin($userData)); $userData->setLogin('demodedadae'); - $this->assertEquals(0, self::$userRepository->updateOnLogin($userData)); + $this->assertEquals(0, self::$repository->updateOnLogin($userData)); } /** @@ -241,7 +247,7 @@ class UserRepositoryTest extends DatabaseTestCase { $this->expectException(ConstraintException::class); - $result = self::$userRepository->deleteByIdBatch([1, 2, 5]); + $result = self::$repository->deleteByIdBatch([1, 2, 5]); $this->assertCount(2, $result); } @@ -253,7 +259,7 @@ class UserRepositoryTest extends DatabaseTestCase */ public function testGetByLogin() { - $user = self::$userRepository->getByLogin('demo'); + $user = self::$repository->getByLogin('demo'); $this->assertInstanceOf(UserData::class, $user); $this->assertEquals('sysPass demo', $user->getName()); @@ -261,7 +267,7 @@ class UserRepositoryTest extends DatabaseTestCase $this->expectException(NoSuchItemException::class); - self::$userRepository->getByLogin('prueba'); + self::$repository->getByLogin('prueba'); } /** @@ -272,22 +278,25 @@ class UserRepositoryTest extends DatabaseTestCase */ public function testDelete() { - $result = self::$userRepository->delete(3); + $result = self::$repository->delete(3); $this->assertEquals(1, $result); $this->assertEquals(3, $this->conn->getRowCount('User')); $this->expectException(ConstraintException::class); - self::$userRepository->delete(1); + self::$repository->delete(1); } /** * Comprobar la obtención de los datos de usuarios + * + * @throws ConstraintException + * @throws QueryException */ public function testGetBasicInfo() { - $users = self::$userRepository->getBasicInfo(); + $users = self::$repository->getBasicInfo(); $this->assertCount(4, $users); $this->assertInstanceOf(UserData::class, $users[0]); @@ -301,9 +310,9 @@ class UserRepositoryTest extends DatabaseTestCase */ public function testUpdateLastLoginById() { - $this->assertEquals(1, self::$userRepository->updateLastLoginById(2)); + $this->assertEquals(1, self::$repository->updateLastLoginById(2)); - $this->assertEquals(0, self::$userRepository->updateLastLoginById(10)); + $this->assertEquals(0, self::$repository->updateLastLoginById(10)); } /** @@ -318,7 +327,7 @@ class UserRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('User A'); - $result = self::$userRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(1, $result->getNumRows()); @@ -331,13 +340,14 @@ class UserRepositoryTest extends DatabaseTestCase $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('prueba'); - $result = self::$userRepository->search($itemSearchData); + $result = self::$repository->search($itemSearchData); $this->assertEquals(0, $result->getNumRows()); $this->assertCount(0, $result->getDataAsArray()); } /** + * @depends testGetById * @throws ConstraintException * @throws QueryException * @throws \Defuse\Crypto\Exception\CryptoException @@ -348,9 +358,9 @@ class UserRepositoryTest extends DatabaseTestCase $key = Crypt::makeSecuredKey('prueba123'); $pass = Crypt::encrypt('prueba_key', $key, 'prueba123'); - $this->assertEquals(1, self::$userRepository->updateMasterPassById(3, $pass, $key)); + $this->assertEquals(1, self::$repository->updateMasterPassById(3, $pass, $key)); - $user = self::$userRepository->getById(3); + $user = self::$repository->getById(3); $this->assertEquals($pass, $user->getMPass()); $this->assertEquals($key, $user->getMKey()); @@ -378,26 +388,29 @@ class UserRepositoryTest extends DatabaseTestCase $userData->setIsLdap(0); $userData->setPass(Hash::hashKey('prueba123')); - $this->assertEquals(5, self::$userRepository->create($userData)); + $this->assertEquals(5, self::$repository->create($userData)); $userData->setLogin('demo'); $userData->setEmail('prueba@syspass.org'); $this->expectException(DuplicatedItemException::class); - self::$userRepository->create($userData); + self::$repository->create($userData); $userData->setLogin('prueba'); $userData->setEmail('demo@syspass.org'); - self::$userRepository->create($userData); + self::$repository->create($userData); } /** * Comprobar la obtención de email de usuario por Id de grupo + * + * @throws ConstraintException + * @throws QueryException */ public function testGetUserEmailForGroup() { - $this->assertCount(4, self::$userRepository->getUserEmailForGroup(2)); + $this->assertCount(4, self::$repository->getUserEmailForGroup(2)); } } diff --git a/tests/res/datasets/syspass.xml b/tests/res/datasets/syspass.xml index edd23c37..602c5658 100644 --- a/tests/res/datasets/syspass.xml +++ b/tests/res/datasets/syspass.xml @@ -452,5 +452,96 @@ 2432792431302456425842645839546157334B6146506F38504F7A4C753749412E364D74414A555448633466305A37716A445A664C41416D69795275 + + + 1 + Prueba + Accounts + + Notificación de prueba + + 1529145158 + 0 + 2 + 0 + 0 + + + 2 + Global + Accounts + + test + + 1529145296 + 0 + + 1 + 0 + + + 3 + Admins + Accounts + + test + + 1529145313 + 0 + + 0 + 1 + + + + + 1 + 2 + 646134633934396166303637386334353130313363626137633133626463396137636135383731383034663137343134306636626161653236346464 + 4F3A31393A2253505C436F72655C43727970745C5661756C74223A343A7B733A32353A220053505C436F72655C43727970745C5661756C740064617461223B733A313834343A226465663530323030663736353663393931396532663637643566636463656532343532383066333663633332653766353763616632313135653337656231323131616538636664356132373765363663346336336333336462663032393966393639333436336435353661396531653766623366303730386662373165636136323262643234313061333536663562333561376562326632346366316237663161376637306365313831376235353232636134326564323665656536343533663561336337393261366361373633636631336436643530663161356439623636333662303061663838613465363330376361663235653063336665396631313838336331653766643635343434306564356330363339383438333130396237313361663939636263396565353637646136333966383435643463306534316637356261613261613332306330333235653037653337396230356362326237623337333264306434663863623939333464613935383464623039313433316361623734613634323464373135666664303934353436383062303263343933373732353830633165386237323731363739323466366533616331376239656236353963633137363161613538326564363962636263383161396336633933393336656330653739326439303732363238306364633763386162616366353430643131646163383139663932306439323165323664376134366230663861666433373032633166636139316166333163346136376266633266353533626561323334306365326138653166646666303366663232366164613231626636343166616161353230333630663638653938656161393334353732646337353236643261663238646436626262653130616633656635323730343261366461363535663931386565636232643232343737653630303236373234386432336632633131313537323139313132653138313361653961626361356161393764656431343637613732383737393038666337366565613632383438623036653765636135633937303633383261623632616637656364383131396634373832303664316430366664666535303237613961393434633033636164616539363236336463323364353530383331353462326231636464306233306539333033373638663432666536623237653562646362613237333839373261343138346565363039353337386237353266663532313137353863303130616232623733323066353362363034643364626333336630333862303665623637646266323830633734363533373561376666316238386438303639396330303737373434336432633161646261333235633138363165313632646430393932643137376136333935373134663263326431346265633663666437653966613631393830363239363563633531616132646163656534383636616536636233303961386437366439313535633530393963356465376165663336373633356337306235663131383032386561373538613633363137306639613033353136653130383362623961363664303835343764313436356662386439383366666362366664336238633836323465356639626661663738326565346639383661333534383338613931343562346363633138356238346439346263353730356233616336623966333935366561313133646131353739656339623830343432313035333461353865656432383962393038373736336266316362323136343462333438663237306635333434633837383435323664393832386161303262653762613062656335326531366161613639396261306235663434303739653431303738316636633939633935393931626263336331653834643634326132363933313362343564363262316238623766323535333766623365363462306234643461366363336439346131623536313231333539636532393363636139396364303035346232666563653634643865343363656535366432663531623438376361383166623532303034393232643633363239663964366339363236663236383364653330393132343164653865323166323064613366366438613135623261393536626232613234336365373433366563386130356461333337323964333839633938393133376262396234373061396666393935613265666532306361663536356236613538343964343332393938316262353233663737666265323062646261366236336235626339666433366264393236376533643161316535386666366465373765666564303539343332356661393761323432393234323434336431313738656236353165613431373237633161363661623363333432333165626338623562393439313531353365373532323764646265393762623134373030346561623331383936393364363735383466666337643266353761613932333738303535626565633139326336666464363363393934633032643561343866623262636635326132223B733A32343A220053505C436F72655C43727970745C5661756C74006B6579223B733A3531323A226465663130303030646566353032303065306463383737306634316662396337336564386465363435383536373539393337303264313164663439633639333131303032303637653932633439396139363666383339363362343162633966633962303163646130386237336539343338336539643534626362353139633037623530323234663265303236383931356164346337366232626365303833663331353865383464666236313262316336633036323138333338666634383565306364623337636530366430623831613061636139643934643537633331653232323130656365303132386535626263666433616539623133383932326633363236663232373961326332323464666533393331643932356263353162646137623862396639356337663631373565376565653833336436396338333966396639343739643338353433323131326463313032343863356432323463343131356662643066396533666637653661333464646533643933666630643066343036346661306137353762303936343363636161313531666566633832376436306462613364323634626266666162663763303562646465303637386636333430376338356435613739616436623734333462623032343130313232386565303130306564633833653239626132633966376233613136363430653466643966353064223B733A32383A220053505C436F72655C43727970745C5661756C740074696D65536574223B693A313532393232383835313B733A33323A220053505C436F72655C43727970745C5661756C740074696D6555706461746564223B693A303B7D + 1 + 1 + 1 + 1529228851 + 1529229451 + 0 + 0 + 0 + 3 + + + + 2 + 1 + 313065363937306666653833623531393234356635333433333732626366663433376461623565356134386238326131653238636131356235346635 + 4F3A31393A2253505C436F72655C43727970745C5661756C74223A343A7B733A32353A220053505C436F72655C43727970745C5661756C740064617461223B733A313833303A22646566353032303065363536643666336138613463383230623337333834323766373665383835386330346431633835363033343933386239386136643464383861383930376537356166653764636432306162333733393539656265326336376463356533353264663131373561333766353437386461373136383464373032616363336330336430363562383235343031646631343734646364373731633339613464326436656265626339313034356464643963646463643533343165383565653665646664313338376630653532336661623930383966386563656339316662656631656337396636396136376565323930353665646636656330323866376236373836643431313231316238336333656565396332653332393537393662323561633439646339383862623139396232336435356534396638653332313637643637613739356264376632383434346533323336643564626131343665346538316264363633376330396663363265623932643763663161356539393330336634396564316533623738353335666165623163356530656566376161646231303837396639633333666339353432393133363837373762376533626437626664663762656339613664393130656135383234653139353639323365643838616261623338313238643966643161336435323532373034623632633961333839366637326565343030643466623663363662313134356561616665663063353939666561653035313335306264396632316333373764633035323837313063613461333563646634396562383438343165633633393638333633346135623730613839623230663334613534326232613837376561623164623530653561386635613735653835633036306466376233316236626533613231373237333835666265633663613465363265336434636236623133643566313063313035343938336366376131616633636633633133383136393730386364353238306336356530356234363462333461633334303163353963663637623232333330373636613737383537333830346131323563363362373830666165303234396661373635353938323665303861663961623931656665366666383231393065336464343732623634306333336430393035633634663063623864626239333362616663653931613963353830393437356434346266323666303739626239623230636564343030343666663838323766376263323132656438633261613839626564323836383235396539383938643735316361383339643363633162313361306630333866396131636666326636386465663031663036323961336133633237313963663739373965323539356162613230376532653564346566636363613466363130323864303461636463643837396637646564626337393330653564616164353963356436386138366336333562343539613833623931353562623639356335376165656531623665346161353363613832633665393438636563656563366333656263363031393361623764303931346337373335393735653362656166633532653337626664383736656231346261326465323834353838656265313566303032373038343338613234383938653230323032323839313139313136666661343733306333633935326531643031326565323038373930326237373065666239356331643134373530323065393537616666653163616635333539326431646439356532346537663865363939376237633164643434346537323561633432383962396266366664336664353262363134363864393134343864366335356431656631306532333565373330643662643562373835353966636665383561366637653161306533333039666532633236343161653836336665386264393663333161373764323937313639323539363437346331613635613437313861626532323064643933633336323831323362646231336165633437333939316437333866623962666139326230393332363439323962383134346362656366616561363465323966616331626261383562386531396466636261376166306331666537653136626566666531313165383038313063663036393665623464633463303863333165646533306362636232306636353337326139303932326139366130363035353566613834623535333430333637623763323166633835646633666366613162336162643338343866633030393236393566313036356537623130383964663564636331626563396462666463356332613135666231643138333332613364373738343533396565626430333965356265326465626534666262326234386532313237343964633835633137383762353335306137303865633439326665396165646661343566303832626465356166386331636130373531613637393361643332623864643931323035643934666366646136616532343538383466223B733A32343A220053505C436F72655C43727970745C5661756C74006B6579223B733A3531323A226465663130303030646566353032303066316562333864316662623534643861336632653430373034666465656535623262633766656264303238653164383331363131356365616131363938653235386131633765646336623165633536323236663732666239353131623463656137333032633036323738643330613032333762303664353965303534363761333737386364346462373865343066383862613230366666613964643765666638386261636230353939373136343230653763653362323564396433386132306262646161366237623466313362623761653136313564323534656438333463343664623734393464303864353232666632373064336635363462663661636239343231633936346362396536616337336439623664396133653561383234323236653638633561336630653330373738616366316332313561326264663635616538303636616666623133396234383234373635356662373331323164303761366431373631306363626433396331373334626563303938383836616430336165356530613734346363353638313864643836636261306366326136656439376439346665333336386237393533333432636663356135366536333439616663633064323962666362623265636136613038656437663866643466633735313630313634643062646238373062633763223B733A32383A220053505C436F72655C43727970745C5661756C740074696D65536574223B693A313532393232383836323B733A33323A220053505C436F72655C43727970745C5661756C740074696D6555706461746564223B693A303B7D + 1 + 1 + 0 + 1529228863 + 1529229463 + 0 + 0 + 0 + 3 + + + + + + 1 + 2 + 3038366162313036303866363838346566383031396134353237333561633066 + 1529275206 + 0 + + + 2 + 2 + 3532383335346130663366626661376161626538303831373231653065633631 + 1529275330 + 0 + + diff --git a/tests/res/datasets/syspass_plugin.xml b/tests/res/datasets/syspass_plugin.xml new file mode 100644 index 00000000..1e57c34f --- /dev/null +++ b/tests/res/datasets/syspass_plugin.xml @@ -0,0 +1,28 @@ + + + + + + 1 + Authenticator + + 0 + 1 + + + 2 + XML Exporter + data + 1 + 1 + + + 3 + DokuWiki + + 1 + 0 + + + + diff --git a/tests/res/datasets/syspass_track.xml b/tests/res/datasets/syspass_track.xml new file mode 100644 index 00000000..2568c75c --- /dev/null +++ b/tests/res/datasets/syspass_track.xml @@ -0,0 +1,55 @@ + + + + + + 1 + + login + 1529145183 + AC160001 + + + + 2 + + login + 1529145189 + AC160001 + + + + 3 + + login + 1529145194 + AC160001 + + + + 4 + + login + 1529272367 + AC160001 + + + + 5 + + login + 1529272372 + AC160001 + + + + 6 + + login + 1529272376 + AC160001 + + + + +