szuru/tests/Tests/MiscTests/AccessTest.php

125 lines
5.1 KiB
PHP
Raw Permalink Normal View History

2014-05-06 13:07:24 +02:00
<?php
class AccessTest extends AbstractTest
{
public function testDefaultPrivilege()
{
//by default, all privileges are set to false
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts)));
}
public function testAccessRanks1()
{
$user = $this->userMocker->mockSingle();
2014-05-06 13:07:24 +02:00
$user->setAccessRank(new AccessRank(AccessRank::Admin));
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::Moderator));
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::PowerUser));
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::Registered));
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::Nobody));
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts), $user));
}
public function testAccessRanks2()
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->privileges->listPosts = 'power-user';
2014-08-23 14:15:04 +02:00
Access::initWithoutCache();
2014-05-06 13:07:24 +02:00
$user = $this->userMocker->mockSingle();
2014-05-06 13:07:24 +02:00
$user->setAccessRank(new AccessRank(AccessRank::Admin));
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::Moderator));
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::PowerUser));
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::Registered));
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::Nobody));
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts), $user));
}
2014-05-13 00:02:25 +02:00
public function testSubPrivilegesOnlySub()
2014-05-06 13:07:24 +02:00
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->privileges->{'listPosts.own'} = 'power-user';
2014-08-23 14:15:04 +02:00
Access::initWithoutCache();
2014-05-06 13:07:24 +02:00
$user = $this->userMocker->mockSingle();
2014-05-06 13:07:24 +02:00
$user->setAccessRank(new AccessRank(AccessRank::PowerUser));
2014-05-13 00:02:25 +02:00
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts, 'own'), $user));
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts, 'all'), $user));
2014-05-06 13:07:24 +02:00
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts), $user));
}
2014-05-13 00:02:25 +02:00
public function testSubPrivilegesSubAndGeneralNormalOrder()
2014-05-06 13:07:24 +02:00
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->privileges->{'listPosts.own'} = 'power-user';
Core::getConfig()->privileges->{'listPosts'} = 'admin';
2014-08-23 14:15:04 +02:00
Access::initWithoutCache();
2014-05-13 00:02:25 +02:00
$this->testSubPrivilegesSubAndGeneral();
2014-05-06 13:07:24 +02:00
}
2014-05-13 00:02:25 +02:00
public function testSubPrivilegesSubAndGeneralReverseOrder()
2014-05-06 13:07:24 +02:00
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->privileges->{'listPosts'} = 'admin';
Core::getConfig()->privileges->{'listPosts.own'} = 'power-user';
2014-08-23 14:15:04 +02:00
Access::initWithoutCache();
2014-05-13 00:02:25 +02:00
$this->testSubPrivilegesSubAndGeneral();
2014-05-06 13:07:24 +02:00
}
2014-05-13 00:02:25 +02:00
protected function testSubPrivilegesSubAndGeneral()
2014-05-06 13:07:24 +02:00
{
$user = $this->userMocker->mockSingle();
2014-05-06 13:07:24 +02:00
$user->setAccessRank(new AccessRank(AccessRank::PowerUser));
2014-05-13 00:02:25 +02:00
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts, 'own'), $user));
2014-05-06 13:07:24 +02:00
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts, 'baka'), $user));
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::Admin));
2014-05-13 00:02:25 +02:00
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts, 'own'), $user));
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts, 'all'), $user));
2014-05-06 13:07:24 +02:00
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts), $user));
}
2014-05-13 00:02:25 +02:00
public function testSubPrivilegesMultipleSubAndGeneralNormalOrder()
2014-05-06 13:07:24 +02:00
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->privileges->{'listPosts.own'} = 'power-user';
Core::getConfig()->privileges->{'listPosts.all'} = 'admin';
Core::getConfig()->privileges->{'listPosts'} = 'nobody';
2014-08-23 14:15:04 +02:00
Access::initWithoutCache();
2014-05-13 00:02:25 +02:00
$this->testSubPrivilegesMultipleSubAndGeneral();
2014-05-06 13:07:24 +02:00
}
2014-05-13 00:02:25 +02:00
public function testSubPrivilegesMultipleSubAndGeneralReverseOrder()
2014-05-06 13:07:24 +02:00
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->privileges->{'listPosts'} = 'nobody';
Core::getConfig()->privileges->{'listPosts.own'} = 'power-user';
Core::getConfig()->privileges->{'listPosts.all'} = 'admin';
2014-08-23 14:15:04 +02:00
Access::initWithoutCache();
2014-05-13 00:02:25 +02:00
$this->testSubPrivilegesMultipleSubAndGeneral();
2014-05-06 13:07:24 +02:00
}
2014-05-13 00:02:25 +02:00
protected function testSubPrivilegesMultipleSubAndGeneral()
2014-05-06 13:07:24 +02:00
{
$user = $this->userMocker->mockSingle();
2014-05-06 13:07:24 +02:00
$user->setAccessRank(new AccessRank(AccessRank::PowerUser));
2014-05-13 00:02:25 +02:00
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts, 'own'), $user));
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts, 'all'), $user));
2014-05-06 13:07:24 +02:00
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts), $user));
$user->setAccessRank(new AccessRank(AccessRank::Admin));
2014-05-13 00:02:25 +02:00
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts, 'own'), $user));
$this->assert->isTrue(Access::check(new Privilege(Privilege::ListPosts, 'all'), $user));
2014-05-06 13:07:24 +02:00
$this->assert->isFalse(Access::check(new Privilege(Privilege::ListPosts), $user));
}
}