148 lines
4.4 KiB
PHP
148 lines
4.4 KiB
PHP
<?php
|
|
|
|
use Backend\Models\User;
|
|
use Backend\Widgets\Lists;
|
|
use October\Rain\Exception\ApplicationException;
|
|
use October\Core\Tests\Fixtures\Backend\Models\UserFixture;
|
|
|
|
class ListsTest extends \October\Core\Tests\PluginTestCase
|
|
{
|
|
public function setUp() : void
|
|
{
|
|
parent::setUp();
|
|
|
|
include_once base_path() . '/tests/fixtures/backend/models/UserFixture.php';
|
|
}
|
|
|
|
public function testRestrictedColumnWithUserWithNoPermissions()
|
|
{
|
|
$user = new UserFixture;
|
|
$this->actingAs($user);
|
|
|
|
$list = $this->restrictedListsFixture();
|
|
$list->render();
|
|
|
|
$this->assertNotNull($list->getColumn('id'));
|
|
|
|
// Expect an exception
|
|
$this->expectException(ApplicationException::class);
|
|
$this->expectExceptionMessage('No definition for column email');
|
|
$column = $list->getColumn('email');
|
|
}
|
|
|
|
public function testRestrictedColumnWithUserWithWrongPermissions()
|
|
{
|
|
$user = new UserFixture;
|
|
$this->actingAs($user->withPermission('test.wrong_permission', true));
|
|
|
|
$list = $this->restrictedListsFixture();
|
|
$list->render();
|
|
|
|
$this->assertNotNull($list->getColumn('id'));
|
|
|
|
// Expect an exception
|
|
$this->expectException(ApplicationException::class);
|
|
$this->expectExceptionMessage('No definition for column email');
|
|
$column = $list->getColumn('email');
|
|
}
|
|
|
|
public function testRestrictedColumnWithUserWithRightPermissions()
|
|
{
|
|
$user = new UserFixture;
|
|
$this->actingAs($user->withPermission('test.access_field', true));
|
|
|
|
$list = $this->restrictedListsFixture();
|
|
$list->render();
|
|
|
|
$this->assertNotNull($list->getColumn('id'));
|
|
$this->assertNotNull($list->getColumn('email'));
|
|
}
|
|
|
|
public function testRestrictedColumnWithUserWithRightWildcardPermissions()
|
|
{
|
|
$user = new UserFixture;
|
|
$this->actingAs($user->withPermission('test.access_field', true));
|
|
|
|
$list = new Lists(null, [
|
|
'model' => new User,
|
|
'arrayName' => 'array',
|
|
'columns' => [
|
|
'id' => [
|
|
'type' => 'text',
|
|
'label' => 'ID'
|
|
],
|
|
'email' => [
|
|
'type' => 'text',
|
|
'label' => 'Email',
|
|
'permission' => 'test.*'
|
|
]
|
|
]
|
|
]);
|
|
$list->render();
|
|
|
|
$this->assertNotNull($list->getColumn('id'));
|
|
$this->assertNotNull($list->getColumn('email'));
|
|
}
|
|
|
|
public function testRestrictedColumnWithSuperuser()
|
|
{
|
|
$user = new UserFixture;
|
|
$this->actingAs($user->asSuperUser());
|
|
|
|
$list = $this->restrictedListsFixture();
|
|
$list->render();
|
|
|
|
$this->assertNotNull($list->getColumn('id'));
|
|
$this->assertNotNull($list->getColumn('email'));
|
|
}
|
|
|
|
public function testRestrictedColumnSinglePermissionWithUserWithWrongPermissions()
|
|
{
|
|
$user = new UserFixture;
|
|
$this->actingAs($user->withPermission('test.wrong_permission', true));
|
|
|
|
$list = $this->restrictedListsFixture(true);
|
|
$list->render();
|
|
|
|
$this->assertNotNull($list->getColumn('id'));
|
|
|
|
// Expect an exception
|
|
$this->expectException(ApplicationException::class);
|
|
$this->expectExceptionMessage('No definition for column email');
|
|
$column = $list->getColumn('email');
|
|
}
|
|
|
|
public function testRestrictedColumnSinglePermissionWithUserWithRightPermissions()
|
|
{
|
|
$user = new UserFixture;
|
|
$this->actingAs($user->withPermission('test.access_field', true));
|
|
|
|
$list = $this->restrictedListsFixture(true);
|
|
$list->render();
|
|
|
|
$this->assertNotNull($list->getColumn('id'));
|
|
$this->assertNotNull($list->getColumn('email'));
|
|
}
|
|
|
|
protected function restrictedListsFixture(bool $singlePermission = false)
|
|
{
|
|
return new Lists(null, [
|
|
'model' => new User,
|
|
'arrayName' => 'array',
|
|
'columns' => [
|
|
'id' => [
|
|
'type' => 'text',
|
|
'label' => 'ID'
|
|
],
|
|
'email' => [
|
|
'type' => 'text',
|
|
'label' => 'Email',
|
|
'permissions' => ($singlePermission) ? 'test.access_field' : [
|
|
'test.access_field'
|
|
]
|
|
]
|
|
]
|
|
]);
|
|
}
|
|
}
|