mirror of
https://git.sekbaer.de/Friendica/friendica.git
synced 2025-06-16 20:05:14 +02:00
Fixing PUBLIC usage, Fixing DB-View, Creating tests
This commit is contained in:
parent
a07acac463
commit
b5d994394e
14 changed files with 304 additions and 45 deletions
148
tests/src/Profile/ProfileField/Depository/ProfileFieldTest.php
Normal file
148
tests/src/Profile/ProfileField/Depository/ProfileFieldTest.php
Normal file
|
@ -0,0 +1,148 @@
|
|||
<?php
|
||||
|
||||
namespace Friendica\Test\src\Profile\ProfileField\Depository;
|
||||
|
||||
use Dice\Dice;
|
||||
use Friendica\Database\Database;
|
||||
use Friendica\DI;
|
||||
use Friendica\Profile\ProfileField\Depository\ProfileField as ProfileFieldDepository;
|
||||
use Friendica\Profile\ProfileField\Entity\ProfileField;
|
||||
use Friendica\Profile\ProfileField\Exception\ProfileFieldPersistenceException;
|
||||
use Friendica\Profile\ProfileField\Factory\ProfileField as ProfileFieldFactory;
|
||||
use Friendica\Security\PermissionSet\Depository\PermissionSet;
|
||||
use Friendica\Security\PermissionSet\Factory\PermissionSet as PermissionSetFactory;
|
||||
use Friendica\Security\PermissionSet\Depository\PermissionSet as PermissionSetDepository;
|
||||
use Friendica\Test\DatabaseTest;
|
||||
use Friendica\Test\Util\Database\StaticDatabase;
|
||||
|
||||
class ProfileFieldTest extends DatabaseTest
|
||||
{
|
||||
/** @var ProfileFieldDepository */
|
||||
private $depository;
|
||||
/** @var ProfileFieldFactory */
|
||||
private $factory;
|
||||
/** @var PermissionSetFactory */
|
||||
private $permissionSetFactory;
|
||||
/** @var PermissionSetDepository */
|
||||
private $permissionSetDepository;
|
||||
/** @var Database */
|
||||
private $dba;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$dice = (new Dice())
|
||||
->addRules(include __DIR__ . '/../../../../../static/dependencies.config.php')
|
||||
->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true]);
|
||||
|
||||
$this->depository = $dice->create(ProfileFieldDepository::class);
|
||||
$this->factory = $dice->create(ProfileFieldFactory::class);
|
||||
$this->permissionSetFactory = $dice->create(PermissionSetFactory::class);
|
||||
$this->permissionSetDepository = $dice->create(PermissionSetDepository::class);
|
||||
$this->dba = $dice->create(Database::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test create ProfileField without a valid PermissionSet
|
||||
*/
|
||||
public function testSavingWithoutPermissionSet()
|
||||
{
|
||||
self::expectExceptionMessage('PermissionSet needs to be saved first.');
|
||||
self::expectException(ProfileFieldPersistenceException::class);
|
||||
|
||||
$this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', DI::dba());
|
||||
|
||||
$profileField = $this->factory->createFromValues(42, 0, 'public', 'value', $this->permissionSetFactory->createFromString(42, '', '<~>'));
|
||||
|
||||
self::assertEquals($profileField->uid, $profileField->permissionSet->uid);
|
||||
|
||||
$this->depository->save($profileField);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test saving a new entity
|
||||
*/
|
||||
public function testSaveNew()
|
||||
{
|
||||
$this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', DI::dba());
|
||||
|
||||
$profileField = $this->factory->createFromValues(42, 0, 'public', 'value', $this->permissionSetDepository->save($this->permissionSetFactory->createFromString(42, '', '<~>')));
|
||||
|
||||
self::assertEquals($profileField->uid, $profileField->permissionSet->uid);
|
||||
|
||||
$savedProfileField = $this->depository->save($profileField);
|
||||
|
||||
self::assertNotNull($savedProfileField->id);
|
||||
self::assertNull($profileField->id);
|
||||
|
||||
/** @var ProfileField $selectedProfileField */
|
||||
$selectedProfileField = $this->depository->selectOneById($savedProfileField->id);
|
||||
|
||||
self::assertEquals($savedProfileField, $selectedProfileField);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test updating the order of a ProfileField
|
||||
*/
|
||||
public function testUpdateOrder()
|
||||
{
|
||||
$this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', DI::dba());
|
||||
|
||||
$profileField = $this->factory->createFromValues(42, 0, 'public', 'value', $this->permissionSetDepository->save($this->permissionSetFactory->createFromString(42, '', '<~>')));
|
||||
|
||||
self::assertEquals($profileField->uid, $profileField->permissionSet->uid);
|
||||
|
||||
$savedProfileField = $this->depository->save($profileField);
|
||||
|
||||
self::assertNotNull($savedProfileField->id);
|
||||
self::assertNull($profileField->id);
|
||||
|
||||
/** @var ProfileField $selectedProfileField */
|
||||
$selectedProfileField = $this->depository->selectOneById($savedProfileField->id);
|
||||
|
||||
self::assertEquals($savedProfileField, $selectedProfileField);
|
||||
|
||||
$selectedProfileField->setOrder(66);
|
||||
|
||||
$updatedOrderProfileField = $this->depository->save($selectedProfileField);
|
||||
|
||||
self::assertEquals($selectedProfileField->id, $updatedOrderProfileField->id);
|
||||
self::assertEquals(66, $updatedOrderProfileField->order);
|
||||
|
||||
// Even using the ID of the old, saved ProfileField returns the right instance
|
||||
$updatedFromOldProfileField = $this->depository->selectOneById($savedProfileField->id);
|
||||
self::assertEquals(66, $updatedFromOldProfileField->order);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test updating a whole entity
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
$this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', DI::dba());
|
||||
|
||||
$profileField = $this->factory->createFromValues(42, 0, 'public', 'value', $this->permissionSetDepository->save($this->permissionSetFactory->createFromString(42, '', '<~>')));
|
||||
|
||||
self::assertEquals($profileField->uid, $profileField->permissionSet->uid);
|
||||
|
||||
$savedProfileField = $this->depository->save($profileField);
|
||||
|
||||
self::assertNotNull($savedProfileField->id);
|
||||
self::assertNull($profileField->id);
|
||||
|
||||
/** @var ProfileField $selectedProfileField */
|
||||
$selectedProfileField = $this->depository->selectOneById($savedProfileField->id);
|
||||
|
||||
self::assertEquals($savedProfileField, $selectedProfileField);
|
||||
|
||||
$savedProfileField->update('another', 5, $this->permissionSetDepository->selectPublic(42));
|
||||
self::assertEquals(PermissionSet::PUBLIC, $savedProfileField->permissionSet->id);
|
||||
|
||||
$publicProfileField = $this->depository->save($savedProfileField);
|
||||
|
||||
self::assertEquals($this->permissionSetDepository->selectPublic(42), $publicProfileField->permissionSet);
|
||||
self::assertEquals('another', $publicProfileField->value);
|
||||
self::assertEquals(5, $publicProfileField->order);
|
||||
}
|
||||
}
|
|
@ -5,36 +5,68 @@ namespace Friendica\Test\src\Security\PermissionSet\Depository;
|
|||
use Dice\Dice;
|
||||
use Friendica\Database\Database;
|
||||
use Friendica\DI;
|
||||
use Friendica\Security\PermissionSet\Depository\PermissionSet;
|
||||
use Friendica\Test\MockedTest;
|
||||
use Friendica\Security\PermissionSet\Depository\PermissionSet as PermissionSetDepository;
|
||||
use Friendica\Security\PermissionSet\Factory\PermissionSet as PermissionSetFactory;
|
||||
use Friendica\Test\DatabaseTest;
|
||||
use Friendica\Test\Util\Database\StaticDatabase;
|
||||
|
||||
class PermissionSetTest extends MockedTest
|
||||
class PermissionSetTest extends DatabaseTest
|
||||
{
|
||||
/** @var PermissionSet */
|
||||
/** @var PermissionSetDepository */
|
||||
private $depository;
|
||||
/** @var PermissionSetFactory */
|
||||
private $factory;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$dice = (new Dice())
|
||||
->addRules(include __DIR__ . '/../../../../../static/dependencies.config.php')
|
||||
->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true]);
|
||||
DI::init($dice);
|
||||
|
||||
$this->depository = DI::permissionSet();
|
||||
}
|
||||
|
||||
public function testSelectOneByIdPublicMissingUid()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
|
||||
$this->depository->selectOneById(PermissionSet::PUBLIC);
|
||||
$this->depository = $dice->create(PermissionSetDepository::class);
|
||||
$this->factory = $dice->create(PermissionSetFactory::class);
|
||||
}
|
||||
|
||||
public function testSelectOneByIdPublic()
|
||||
{
|
||||
$permissionSet = $this->depository->selectOneById(PermissionSet::PUBLIC, 1);
|
||||
$permissionSet = $this->depository->selectPublic(1);
|
||||
|
||||
$this->assertInstanceOf(\Friendica\Security\PermissionSet\Entity\PermissionSet::class, $permissionSet);
|
||||
self::assertEmpty($permissionSet->allow_cid);
|
||||
self::assertEmpty($permissionSet->allow_gid);
|
||||
self::assertEmpty($permissionSet->deny_cid);
|
||||
self::assertEmpty($permissionSet->deny_gid);
|
||||
self::assertEmpty(PermissionSetDepository::PUBLIC, $permissionSet->id);
|
||||
self::assertEquals(1, $permissionSet->uid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test create/update PermissionSets
|
||||
*/
|
||||
public function testSaving()
|
||||
{
|
||||
$this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', DI::dba());
|
||||
|
||||
$permissionSet = $this->factory->createFromString(42, '', '<~>');
|
||||
|
||||
$permissionSet = $this->depository->selectOrCreate($permissionSet);
|
||||
|
||||
self::assertNotNull($permissionSet->id);
|
||||
|
||||
$permissionSetSelected = $this->depository->selectOneById($permissionSet->id, 42);
|
||||
|
||||
self::assertEquals($permissionSet, $permissionSetSelected);
|
||||
|
||||
$newPermissionSet = $permissionSet->withAllowedContacts(['1', '2']);
|
||||
$savedPermissionSet = $this->depository->save($newPermissionSet);
|
||||
|
||||
self::assertNotNull($savedPermissionSet->id);
|
||||
self::assertNull($newPermissionSet->id);
|
||||
|
||||
$permissionSetSavedSelected = $this->depository->selectOneById($savedPermissionSet->id, 42);
|
||||
|
||||
self::assertEquals($savedPermissionSet, $permissionSetSavedSelected);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue