Initial import of space_profiles module
This commit is contained in:
69
tests/codeception/unit/ProfileAccessTest.php
Normal file
69
tests/codeception/unit/ProfileAccessTest.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace space_profiles;
|
||||
|
||||
use humhub\modules\space\models\Space;
|
||||
use humhub\modules\space_profiles\helpers\ProfileAccess;
|
||||
use humhub\modules\user\models\User;
|
||||
|
||||
class ProfileAccessTest extends UnitTester
|
||||
{
|
||||
public function testPublicSpaceAllowsGuest(): void
|
||||
{
|
||||
$space = $this->createSpaceMock(Space::VISIBILITY_ALL, true, false);
|
||||
|
||||
$this->assertTrue(ProfileAccess::canView($space, null));
|
||||
}
|
||||
|
||||
public function testMembersOnlyBlocksGuestAndAllowsUser(): void
|
||||
{
|
||||
$space = $this->createSpaceMock(Space::VISIBILITY_REGISTERED_ONLY, true, false);
|
||||
$user = $this->createUserMock(false);
|
||||
|
||||
$this->assertFalse(ProfileAccess::canView($space, null));
|
||||
$this->assertTrue(ProfileAccess::canView($space, $user));
|
||||
}
|
||||
|
||||
public function testPrivateSpaceRequiresMembership(): void
|
||||
{
|
||||
$user = $this->createUserMock(false);
|
||||
$nonMemberSpace = $this->createSpaceMock(Space::VISIBILITY_NONE, true, false);
|
||||
$memberSpace = $this->createSpaceMock(Space::VISIBILITY_NONE, true, true);
|
||||
|
||||
$this->assertFalse(ProfileAccess::canView($nonMemberSpace, $user));
|
||||
$this->assertTrue(ProfileAccess::canView($memberSpace, $user));
|
||||
}
|
||||
|
||||
public function testDisabledSpaceDenied(): void
|
||||
{
|
||||
$space = $this->createSpaceMock(Space::VISIBILITY_ALL, false, true);
|
||||
|
||||
$this->assertFalse(ProfileAccess::canView($space, $this->createUserMock(true)));
|
||||
}
|
||||
|
||||
private function createSpaceMock(int $visibility, bool $enabled, bool $isMember): Space
|
||||
{
|
||||
$space = $this->getMockBuilder(Space::class)
|
||||
->disableOriginalConstructor()
|
||||
->onlyMethods(['isMember'])
|
||||
->getMock();
|
||||
|
||||
$space->visibility = $visibility;
|
||||
$space->status = $enabled ? Space::STATUS_ENABLED : Space::STATUS_ARCHIVED;
|
||||
$space->method('isMember')->willReturn($isMember);
|
||||
|
||||
return $space;
|
||||
}
|
||||
|
||||
private function createUserMock(bool $isAdmin): User
|
||||
{
|
||||
$user = $this->getMockBuilder(User::class)
|
||||
->disableOriginalConstructor()
|
||||
->onlyMethods(['isSystemAdmin'])
|
||||
->getMock();
|
||||
|
||||
$user->method('isSystemAdmin')->willReturn($isAdmin);
|
||||
|
||||
return $user;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user