]> git.mxchange.org Git - friendica.git/blob - 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
1 <?php
2
3 namespace Friendica\Test\src\Security\PermissionSet\Depository;
4
5 use Dice\Dice;
6 use Friendica\Database\Database;
7 use Friendica\Security\PermissionSet\Depository\PermissionSet as PermissionSetDepository;
8 use Friendica\Security\PermissionSet\Factory\PermissionSet as PermissionSetFactory;
9 use Friendica\Test\DatabaseTest;
10 use Friendica\Test\Util\Database\StaticDatabase;
11
12 class PermissionSetTest extends DatabaseTest
13 {
14         /** @var PermissionSetDepository */
15         private $depository;
16         /** @var PermissionSetFactory */
17         private $factory;
18         /** @var Database */
19         private $dba;
20
21         public function setUp(): void
22         {
23                 parent::setUp();
24
25                 $dice = (new Dice())
26                         ->addRules(include __DIR__ . '/../../../../../static/dependencies.config.php')
27                         ->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true]);
28
29                 $this->depository = $dice->create(PermissionSetDepository::class);
30                 $this->factory    = $dice->create(PermissionSetFactory::class);
31                 $this->dba        = $dice->create(Database::class);
32         }
33
34         public function testSelectOneByIdPublic()
35         {
36                 $permissionSet = $this->depository->selectPublicForUser(1);
37
38                 $this->assertInstanceOf(\Friendica\Security\PermissionSet\Entity\PermissionSet::class, $permissionSet);
39                 self::assertEmpty($permissionSet->allow_cid);
40                 self::assertEmpty($permissionSet->allow_gid);
41                 self::assertEmpty($permissionSet->deny_cid);
42                 self::assertEmpty($permissionSet->deny_gid);
43                 self::assertEmpty(PermissionSetDepository::PUBLIC, $permissionSet->id);
44                 self::assertEquals(1, $permissionSet->uid);
45         }
46
47         /**
48          * Test create/update PermissionSets
49          */
50         public function testSaving()
51         {
52                 $this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', $this->dba);
53
54                 $permissionSet = $this->factory->createFromString(42, '', '<~>');
55
56                 $permissionSet = $this->depository->selectOrCreate($permissionSet);
57
58                 self::assertNotNull($permissionSet->id);
59
60                 $permissionSetSelected = $this->depository->selectOneById($permissionSet->id, 42);
61
62                 self::assertEquals($permissionSet, $permissionSetSelected);
63
64                 $newPermissionSet   = $permissionSet->withAllowedContacts(['1', '2']);
65                 $savedPermissionSet = $this->depository->save($newPermissionSet);
66
67                 self::assertNotNull($savedPermissionSet->id);
68                 self::assertNull($newPermissionSet->id);
69
70                 $permissionSetSavedSelected = $this->depository->selectOneById($savedPermissionSet->id, 42);
71
72                 self::assertEquals($savedPermissionSet, $permissionSetSavedSelected);
73
74                 $this->dba->delete('permissionset', ['1=1']);
75         }
76 }