]> git.mxchange.org Git - friendica.git/blobdiff - tests/src/Security/PermissionSet/Depository/PermissionSetTest.php
Try to delete all data at the end of the test ..
[friendica.git] / tests / src / Security / PermissionSet / Depository / PermissionSetTest.php
index 305769411797c1672518e24987218644b29df21e..51ed993902f0bf7d2a513d688e13a88f25098f27 100644 (file)
@@ -4,37 +4,73 @@ 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;
+       /** @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]);
-               DI::init($dice);
 
-               $this->depository = DI::permissionSet();
+               $this->depository = $dice->create(PermissionSetDepository::class);
+               $this->factory    = $dice->create(PermissionSetFactory::class);
+               $this->dba        = $dice->create(Database::class);
        }
 
-       public function testSelectOneByIdPublicMissingUid()
+       public function testSelectOneByIdPublic()
        {
-               $this->expectException(\InvalidArgumentException::class);
+               $permissionSet = $this->depository->selectPublicForUser(1);
 
-               $this->depository->selectOneById(PermissionSet::PUBLIC);
+               $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);
        }
 
-       public function testSelectOneByIdPublic()
+       /**
+        * Test create/update PermissionSets
+        */
+       public function testSaving()
        {
-               $permissionSet = $this->depository->selectOneById(PermissionSet::PUBLIC, 1);
+               $this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', $this->dba);
 
-               $this->assertInstanceOf(\Friendica\Security\PermissionSet\Entity\PermissionSet::class, $permissionSet);
+               $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);
+
+               $this->dba->delete('permissionset', ['1=1']);
        }
 }