mirror of
https://github.com/nuxsmin/sysPass.git
synced 2026-03-06 00:24:08 +01:00
fix: Use generators and fix ItemSearch builders
Signed-off-by: Rubén D <nuxsmin@syspass.org>
This commit is contained in:
@@ -24,17 +24,15 @@
|
||||
|
||||
namespace SP\Domain\Account\Adapters;
|
||||
|
||||
use JsonSerializable;
|
||||
use SP\Domain\Common\Adapters\DataModel;
|
||||
use SP\Domain\Common\Adapters\DataModelInterface;
|
||||
use SP\Http\Json;
|
||||
|
||||
/**
|
||||
* Class AccountData
|
||||
*/
|
||||
class AccountData extends DataModel implements DataModelInterface
|
||||
{
|
||||
protected int $id;
|
||||
protected ?int $id = null;
|
||||
protected ?int $userId = null;
|
||||
protected ?int $userGroupId = null;
|
||||
protected ?int $userEditId = null;
|
||||
@@ -58,11 +56,9 @@ class AccountData extends DataModel implements DataModelInterface
|
||||
protected ?bool $otherUserGroupEdit = false;
|
||||
protected ?bool $otherUserEdit = false;
|
||||
|
||||
public function __construct(int $accountId = 0, ?array $properties = [])
|
||||
public function __construct(?array $properties = [])
|
||||
{
|
||||
parent::__construct($properties);
|
||||
|
||||
$this->id = $accountId;
|
||||
}
|
||||
|
||||
public function getDateAdd(): ?int
|
||||
|
||||
@@ -91,4 +91,27 @@ final class AccountDataGenerator extends DataGenerator
|
||||
range(0, 9)
|
||||
);
|
||||
}
|
||||
|
||||
public function buildAccountHistoryData(): SimpleModel
|
||||
{
|
||||
return new SimpleModel([
|
||||
'id' => $this->faker->randomNumber(),
|
||||
'accountId' => $this->faker->randomNumber(),
|
||||
'name' => $this->faker->name,
|
||||
'login' => $this->faker->userName,
|
||||
'url' => $this->faker->url,
|
||||
'notes' => $this->faker->text,
|
||||
'userEditId' => $this->faker->randomNumber(),
|
||||
'passDateChange' => $this->faker->unixTime,
|
||||
'clientId' => $this->faker->randomNumber(),
|
||||
'categoryId' => $this->faker->randomNumber(),
|
||||
'isPrivate' => $this->faker->numberBetween(0, 1),
|
||||
'isPrivateGroup' => $this->faker->numberBetween(0, 1),
|
||||
'parentId' => $this->faker->randomNumber(),
|
||||
'userId' => $this->faker->randomNumber(),
|
||||
'userGroupId' => $this->faker->randomNumber(),
|
||||
'key' => $this->faker->text,
|
||||
'pass' => $this->faker->text,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ use SP\Infrastructure\Account\Repositories\AccountFileRepository;
|
||||
use SP\Infrastructure\Database\DatabaseInterface;
|
||||
use SP\Infrastructure\Database\QueryData;
|
||||
use SP\Infrastructure\Database\QueryResult;
|
||||
use SP\Tests\Generators\FileDataGenerator;
|
||||
use SP\Tests\UnitaryTestCase;
|
||||
|
||||
/**
|
||||
@@ -48,7 +49,7 @@ class AccountFileRepositoryTest extends UnitaryTestCase
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function testDeleteByIdBatch()
|
||||
public function testDeleteByIdBatch(): void
|
||||
{
|
||||
$ids = [self::$faker->randomNumber(), self::$faker->randomNumber(), self::$faker->randomNumber()];
|
||||
|
||||
@@ -76,7 +77,7 @@ class AccountFileRepositoryTest extends UnitaryTestCase
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function testDeleteByIdBatchWithNoIds()
|
||||
public function testDeleteByIdBatchWithNoIds(): void
|
||||
{
|
||||
$this->database->expects(self::never())
|
||||
->method('doQuery');
|
||||
@@ -84,53 +85,13 @@ class AccountFileRepositoryTest extends UnitaryTestCase
|
||||
$this->assertEquals(0, $this->accountFileRepository->deleteByIdBatch([]));
|
||||
}
|
||||
|
||||
public function testGetAll()
|
||||
{
|
||||
$callback = new Callback(
|
||||
static function (QueryData $arg) {
|
||||
return $arg->getMapClassName() === SimpleModel::class
|
||||
&& !empty($arg->getQuery()->getStatement());
|
||||
}
|
||||
);
|
||||
|
||||
$this->database
|
||||
->expects(self::once())
|
||||
->method('doSelect')
|
||||
->with($callback)
|
||||
->willReturn(new QueryResult());
|
||||
|
||||
$this->accountFileRepository->getAll();
|
||||
}
|
||||
|
||||
public function testGetInfoById()
|
||||
{
|
||||
$id = self::$faker->randomNumber();
|
||||
|
||||
$callback = new Callback(
|
||||
static function (QueryData $arg) use ($id) {
|
||||
$query = $arg->getQuery();
|
||||
|
||||
return $query->getBindValues()['id'] === $id
|
||||
&& $arg->getMapClassName() === SimpleModel::class
|
||||
&& !empty($query->getStatement());
|
||||
}
|
||||
);
|
||||
|
||||
$this->database->expects(self::once())
|
||||
->method('doSelect')
|
||||
->with($callback)
|
||||
->willReturn(new QueryResult());
|
||||
|
||||
$this->accountFileRepository->getInfoById($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
*/
|
||||
public function testCreate()
|
||||
public function testCreate(): void
|
||||
{
|
||||
$fileData = $this->buildFileData();
|
||||
$fileData = FileData::buildFromSimpleModel(FileDataGenerator::factory()->buildFileData());
|
||||
|
||||
$expected = new QueryResult();
|
||||
$expected->setLastId(1);
|
||||
@@ -140,13 +101,13 @@ class AccountFileRepositoryTest extends UnitaryTestCase
|
||||
$query = $arg->getQuery();
|
||||
$params = $query->getBindValues();
|
||||
|
||||
return $params['accountId'] === $fileData->accountId
|
||||
&& $params['name'] === $fileData->name
|
||||
&& $params['type'] === $fileData->type
|
||||
&& $params['thumb'] === $fileData->thumb
|
||||
&& $params['content'] === $fileData->content
|
||||
&& $params['extension'] === $fileData->extension
|
||||
&& $params['size'] === $fileData->size
|
||||
return $params['accountId'] === $fileData->getAccountId()
|
||||
&& $params['name'] === $fileData->getName()
|
||||
&& $params['type'] === $fileData->getType()
|
||||
&& $params['thumb'] === $fileData->getThumb()
|
||||
&& $params['content'] === $fileData->getContent()
|
||||
&& $params['extension'] === $fileData->getExtension()
|
||||
&& $params['size'] === $fileData->getSize()
|
||||
&& !empty($query->getStatement());
|
||||
}
|
||||
);
|
||||
@@ -159,22 +120,7 @@ class AccountFileRepositoryTest extends UnitaryTestCase
|
||||
$this->assertEquals($expected->getLastId(), $this->accountFileRepository->create($fileData));
|
||||
}
|
||||
|
||||
private function buildFileData(): FileData
|
||||
{
|
||||
$fileData = new FileData();
|
||||
$fileData->id = self::$faker->randomNumber();
|
||||
$fileData->accountId = self::$faker->randomNumber();
|
||||
$fileData->name = self::$faker->name;
|
||||
$fileData->type = self::$faker->randomNumber();
|
||||
$fileData->thumb = self::$faker->image();
|
||||
$fileData->content = self::$faker->image();
|
||||
$fileData->extension = self::$faker->name();
|
||||
$fileData->size = self::$faker->randomNumber();
|
||||
|
||||
return $fileData;
|
||||
}
|
||||
|
||||
public function testGetByAccountId()
|
||||
public function testGetByAccountId(): void
|
||||
{
|
||||
$id = self::$faker->randomNumber();
|
||||
|
||||
@@ -196,40 +142,11 @@ class AccountFileRepositoryTest extends UnitaryTestCase
|
||||
$this->accountFileRepository->getByAccountId($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
*/
|
||||
public function testGetByIdBatch()
|
||||
{
|
||||
$ids = [self::$faker->randomNumber(), self::$faker->randomNumber(), self::$faker->randomNumber()];
|
||||
|
||||
$callback = new Callback(
|
||||
static function (QueryData $arg) use ($ids) {
|
||||
$query = $arg->getQuery();
|
||||
$values = $query->getBindValues();
|
||||
|
||||
return array_shift($values) === array_shift($ids)
|
||||
&& array_shift($values) === array_shift($ids)
|
||||
&& array_shift($values) === array_shift($ids)
|
||||
&& $arg->getMapClassName() === SimpleModel::class
|
||||
&& !empty($query->getStatement());
|
||||
}
|
||||
);
|
||||
|
||||
$this->database->expects(self::once())
|
||||
->method('doQuery')
|
||||
->with($callback)
|
||||
->willReturn(new QueryResult());
|
||||
|
||||
$this->accountFileRepository->getByIdBatch($ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function testDelete()
|
||||
public function testDelete(): void
|
||||
{
|
||||
$id = 1;
|
||||
$expected = new QueryResult();
|
||||
@@ -253,7 +170,7 @@ class AccountFileRepositoryTest extends UnitaryTestCase
|
||||
$this->assertTrue($this->accountFileRepository->delete($id));
|
||||
}
|
||||
|
||||
public function testGetById()
|
||||
public function testGetById(): void
|
||||
{
|
||||
$id = self::$faker->randomNumber();
|
||||
|
||||
@@ -275,15 +192,14 @@ class AccountFileRepositoryTest extends UnitaryTestCase
|
||||
$this->accountFileRepository->getById($id);
|
||||
}
|
||||
|
||||
public function testSearch()
|
||||
public function testSearch(): void
|
||||
{
|
||||
$item = new ItemSearchData();
|
||||
$item->seachString = self::$faker->name;
|
||||
$item = new ItemSearchData(self::$faker->name);
|
||||
|
||||
$callback = new Callback(
|
||||
static function (QueryData $arg) use ($item) {
|
||||
$params = $arg->getQuery()->getBindValues();
|
||||
$searchStringLike = '%'.$item->seachString.'%';
|
||||
$searchStringLike = '%'.$item->getSeachString().'%';
|
||||
|
||||
return $params['name'] === $searchStringLike
|
||||
&& $params['clientName'] === $searchStringLike
|
||||
|
||||
@@ -37,6 +37,7 @@ use SP\Infrastructure\Account\Repositories\AccountHistoryRepository;
|
||||
use SP\Infrastructure\Database\DatabaseInterface;
|
||||
use SP\Infrastructure\Database\QueryData;
|
||||
use SP\Infrastructure\Database\QueryResult;
|
||||
use SP\Tests\Generators\AccountDataGenerator;
|
||||
use SP\Tests\UnitaryTestCase;
|
||||
|
||||
/**
|
||||
@@ -164,13 +165,12 @@ class AccountHistoryRepositoryTest extends UnitaryTestCase
|
||||
|
||||
public function testSearch(): void
|
||||
{
|
||||
$item = new ItemSearchData();
|
||||
$item->seachString = self::$faker->name;
|
||||
$item = new ItemSearchData(self::$faker->name);
|
||||
|
||||
$callback = new Callback(
|
||||
static function (QueryData $arg) use ($item) {
|
||||
$params = $arg->getQuery()->getBindValues();
|
||||
$searchStringLike = '%'.$item->seachString.'%';
|
||||
$searchStringLike = '%'.$item->getSeachString().'%';
|
||||
|
||||
return $params['name'] === $searchStringLike
|
||||
&& $params['clientName'] === $searchStringLike
|
||||
@@ -191,7 +191,7 @@ class AccountHistoryRepositoryTest extends UnitaryTestCase
|
||||
public function testSearchWithoutString(): void
|
||||
{
|
||||
$callback = new Callback(
|
||||
static function (QueryData $arg) use ($item) {
|
||||
static function (QueryData $arg) {
|
||||
return count($arg->getQuery()->getBindValues()) === 0
|
||||
&& $arg->getMapClassName() === SimpleModel::class
|
||||
&& !empty($arg->getQuery()->getStatement());
|
||||
@@ -282,34 +282,8 @@ class AccountHistoryRepositoryTest extends UnitaryTestCase
|
||||
|
||||
private function buildAccountHistoryCreateDto(): AccountHistoryCreateDto
|
||||
{
|
||||
$accountRequest = new AccountData();
|
||||
$accountRequest->id = self::$faker->randomNumber();
|
||||
$accountRequest->accountId = self::$faker->randomNumber();
|
||||
$accountRequest->name = self::$faker->name;
|
||||
$accountRequest->login = self::$faker->userName;
|
||||
$accountRequest->url = self::$faker->url;
|
||||
$accountRequest->notes = self::$faker->text;
|
||||
$accountRequest->userEditId = self::$faker->randomNumber();
|
||||
$accountRequest->passDateChange = self::$faker->unixTime;
|
||||
$accountRequest->clientId = self::$faker->randomNumber();
|
||||
$accountRequest->categoryId = self::$faker->randomNumber();
|
||||
$accountRequest->isPrivate = self::$faker->numberBetween(0, 1);
|
||||
$accountRequest->isPrivateGroup = self::$faker->numberBetween(0, 1);
|
||||
$accountRequest->parentId = self::$faker->randomNumber();
|
||||
$accountRequest->userId = self::$faker->randomNumber();
|
||||
$accountRequest->userGroupId = self::$faker->randomNumber();
|
||||
$accountRequest->key = self::$faker->text;
|
||||
$accountRequest->pass = self::$faker->text;
|
||||
$accountRequest->passDate = self::$faker->unixTime();
|
||||
$accountRequest->passDateChange = self::$faker->unixTime();
|
||||
$accountRequest->countView = self::$faker->randomNumber();
|
||||
$accountRequest->countDecrypt = self::$faker->randomNumber();
|
||||
$accountRequest->dateAdd = self::$faker->unixTime();
|
||||
$accountRequest->dateEdit = self::$faker->unixTime();
|
||||
$accountRequest->otherUserEdit = self::$faker->boolean();
|
||||
|
||||
return new AccountHistoryCreateDto(
|
||||
$accountRequest,
|
||||
AccountData::buildFromSimpleModel(AccountDataGenerator::factory()->buildAccountData()),
|
||||
self::$faker->boolean(),
|
||||
self::$faker->boolean(),
|
||||
self::$faker->sha1,
|
||||
|
||||
@@ -38,6 +38,7 @@ use SP\Infrastructure\Account\Repositories\AccountRepository;
|
||||
use SP\Infrastructure\Database\DatabaseInterface;
|
||||
use SP\Infrastructure\Database\QueryData;
|
||||
use SP\Infrastructure\Database\QueryResult;
|
||||
use SP\Tests\Generators\AccountDataGenerator;
|
||||
use SP\Tests\UnitaryTestCase;
|
||||
|
||||
/**
|
||||
@@ -305,24 +306,8 @@ class AccountRepositoryTest extends UnitaryTestCase
|
||||
*/
|
||||
public function testEditRestore(): void
|
||||
{
|
||||
$accountHistoryData = new AccountHistoryData();
|
||||
$accountHistoryData->id = self::$faker->randomNumber();
|
||||
$accountHistoryData->accountId = self::$faker->randomNumber();
|
||||
$accountHistoryData->name = self::$faker->name;
|
||||
$accountHistoryData->login = self::$faker->userName;
|
||||
$accountHistoryData->url = self::$faker->url;
|
||||
$accountHistoryData->notes = self::$faker->text;
|
||||
$accountHistoryData->userEditId = self::$faker->randomNumber();
|
||||
$accountHistoryData->passDateChange = self::$faker->unixTime;
|
||||
$accountHistoryData->clientId = self::$faker->randomNumber();
|
||||
$accountHistoryData->categoryId = self::$faker->randomNumber();
|
||||
$accountHistoryData->isPrivate = self::$faker->numberBetween(0, 1);
|
||||
$accountHistoryData->isPrivateGroup = self::$faker->numberBetween(0, 1);
|
||||
$accountHistoryData->parentId = self::$faker->randomNumber();
|
||||
$accountHistoryData->userId = self::$faker->randomNumber();
|
||||
$accountHistoryData->userGroupId = self::$faker->randomNumber();
|
||||
$accountHistoryData->key = self::$faker->text;
|
||||
$accountHistoryData->pass = self::$faker->text;
|
||||
$accountHistoryData =
|
||||
AccountHistoryData::buildFromSimpleModel(AccountDataGenerator::factory()->buildAccountHistoryData());
|
||||
|
||||
$userId = 1;
|
||||
|
||||
@@ -652,13 +637,12 @@ class AccountRepositoryTest extends UnitaryTestCase
|
||||
|
||||
public function testSearch(): void
|
||||
{
|
||||
$item = new ItemSearchData();
|
||||
$item->seachString = self::$faker->name;
|
||||
$item = new ItemSearchData(self::$faker->name);
|
||||
|
||||
$callback = new Callback(
|
||||
static function (QueryData $arg) use ($item) {
|
||||
$params = $arg->getQuery()->getBindValues();
|
||||
$searchStringLike = '%'.$item->seachString.'%';
|
||||
$searchStringLike = '%'.$item->getSeachString().'%';
|
||||
|
||||
return $params['name'] === $searchStringLike
|
||||
&& $params['clientName'] === $searchStringLike
|
||||
@@ -881,6 +865,7 @@ class AccountRepositoryTest extends UnitaryTestCase
|
||||
$this->database = $this->createMock(DatabaseInterface::class);
|
||||
$queryFactory = new QueryFactory('mysql');
|
||||
|
||||
/** @noinspection ClassMockingCorrectnessInspection */
|
||||
/** @noinspection PhpUnitInvalidMockingEntityInspection */
|
||||
$this->accountFilterUser =
|
||||
$this->getMockBuilder(AccountFilterUser::class)
|
||||
|
||||
@@ -73,13 +73,12 @@ class PublicLinkRepositoryTest extends UnitaryTestCase
|
||||
|
||||
public function testSearch(): void
|
||||
{
|
||||
$item = new ItemSearchData();
|
||||
$item->seachString = self::$faker->name;
|
||||
$item = new ItemSearchData(self::$faker->name);
|
||||
|
||||
$callback = new Callback(
|
||||
static function (QueryData $arg) use ($item) {
|
||||
$params = $arg->getQuery()->getBindValues();
|
||||
$searchStringLike = '%'.$item->seachString.'%';
|
||||
$searchStringLike = '%'.$item->getSeachString().'%';
|
||||
|
||||
return $params['login'] === $searchStringLike
|
||||
&& $params['accountName'] === $searchStringLike
|
||||
|
||||
Reference in New Issue
Block a user