Skip to content
This repository was archived by the owner on Nov 25, 2020. It is now read-only.

Commit 6dea8aa

Browse files
committed
New unit tests
1 parent f5b92ad commit 6dea8aa

File tree

2 files changed

+130
-2
lines changed

2 files changed

+130
-2
lines changed
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: charles
5+
* Date: 12/09/2015
6+
* Time: 10:42
7+
*/
8+
9+
namespace AJXP\Tests\Atomics;
10+
11+
12+
class AJXP_PermissionMaskTest extends \PHPUnit_Framework_TestCase
13+
{
14+
/**
15+
* @param \AJXP_Permission $permission
16+
*/
17+
protected function isRW($permission){
18+
$this->assertTrue($permission->canRead());
19+
$this->assertTrue($permission->canWrite());
20+
$this->assertFalse($permission->denies());
21+
}
22+
23+
/**
24+
* @param \AJXP_Permission $permission
25+
*/
26+
protected function isReadonly($permission){
27+
$this->assertTrue($permission->canRead());
28+
$this->assertFalse($permission->canWrite());
29+
$this->assertFalse($permission->denies());
30+
}
31+
32+
/**
33+
* @param \AJXP_Permission $permission
34+
*/
35+
protected function isWriteonly($permission){
36+
37+
$this->assertFalse($permission->canRead());
38+
$this->assertTrue($permission->canWrite());
39+
$this->assertFalse($permission->denies());
40+
41+
}
42+
43+
/**
44+
* @param \AJXP_Permission $permission
45+
*/
46+
protected function isDenied($permission){
47+
48+
$this->assertTrue($permission->denies());
49+
$this->assertFalse($permission->canRead());
50+
$this->assertFalse($permission->canWrite());
51+
52+
}
53+
54+
55+
public function testSimplePermission(){
56+
57+
$perm = new \AJXP_Permission();
58+
$this->isDenied($perm);
59+
60+
$perm->setRead();
61+
$this->isReadonly($perm);
62+
$perm->setWrite();
63+
$this->isRW($perm);
64+
$perm->setDeny();
65+
$this->isDenied($perm);
66+
67+
$perm->setDeny(false);
68+
69+
// When perm is empty, => denied by default
70+
$this->isDenied($perm);
71+
$perm->setRead();
72+
$perm->setRead(false);
73+
$this->isDenied($perm);
74+
$perm->setWrite();
75+
$perm->setWrite(false);
76+
$this->isDenied($perm);
77+
78+
}
79+
80+
81+
public function testPermissionOverride(){
82+
83+
$readonly = new \AJXP_Permission("r");
84+
$writeonly = new \AJXP_Permission("w");
85+
$readwrite = new \AJXP_Permission("rw");
86+
$deny = new \AJXP_Permission("d");
87+
$empty = new \AJXP_Permission();
88+
89+
$this->isRW($writeonly->override($readonly));
90+
$this->isRW($readonly->override($writeonly));
91+
$this->isRW($readwrite->override($readonly));
92+
$this->isRW($readwrite->override($writeonly));
93+
$this->isRW($readonly->override($readwrite));
94+
$this->isRW($writeonly->override($readwrite));
95+
96+
$this->isDenied($deny->override($readonly));
97+
$this->isDenied($deny->override($writeonly));
98+
$this->isDenied($deny->override($readwrite));
99+
100+
$this->isDenied($empty->override($readonly));
101+
$this->isDenied($empty->override($writeonly));
102+
$this->isDenied($empty->override($readwrite));
103+
104+
}
105+
106+
public function testPermissionMask(){
107+
108+
$mask = new \AJXP_PermissionMask();
109+
$mask->updateBranch("/a1/b1/c1", new \AJXP_Permission("r"));
110+
$mask->updateBranch("/a1/b1/c2", new \AJXP_Permission("rw"));
111+
$mask->updateBranch("/a1/b2", new \AJXP_Permission("rw"));
112+
$mask->updateBranch("/a1/b3", new \AJXP_Permission());
113+
114+
$this->assertFalse($mask->match("/", \AJXP_Permission::WRITE));
115+
$this->assertTrue($mask->match("/", \AJXP_Permission::READ));
116+
$this->assertTrue($mask->match("/a1/b1/c1", \AJXP_Permission::READ));
117+
$this->assertTrue($mask->match("/a1/b1", \AJXP_Permission::READ));
118+
$this->assertFalse($mask->match("/a1/b1", \AJXP_Permission::WRITE));
119+
120+
$this->assertFalse($mask->match("/a1/b1/c3", \AJXP_Permission::READ));
121+
$this->assertTrue($mask->match("/a1/b1/c1/d1/e1/f1", \AJXP_Permission::READ));
122+
$this->assertFalse($mask->match("/a1/b1/c1/d1/e1/f1", \AJXP_Permission::WRITE));
123+
124+
// This overrides the whole /a1/b1 branch >> do we want that?
125+
$mask->updateBranch("/a1/b1", new \AJXP_Permission("rw"));
126+
$this->assertTrue($mask->match("/a1/b1", \AJXP_Permission::WRITE));
127+
// Todo write more tests
128+
}
129+
}

core/src/phpunit/AJXP/Tests/Suite/Atomics.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ public static function suite()
2727
$s = new Atomics();
2828
$s->addTestFile("AJXP/Tests/Atomics/RolesTest.php");
2929
$s->addTestFile("AJXP/Tests/Atomics/UtilsTest.php");
30-
$s->addTestFile("AJXP/Tests/Atomics/MemStoresTest.php");
31-
$s->addTestFile("AJXP/Tests/Atomics/FiltersTest.php");
30+
$s->addTestFile("AJXP/Tests/Atomics/PermissionMaskTest.php");
3231
return $s;
3332

3433
}

0 commit comments

Comments
 (0)