ORIENT/tests/unit/backend/widgets/ListsTest.php

141 lines
4.2 KiB
PHP

<?php
use Backend\Models\User;
use Backend\Widgets\Lists;
use October\Rain\Exception\ApplicationException;
use October\Tests\Fixtures\Backend\Models\UserFixture;
class ListsTest extends PluginTestCase
{
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'
]
]
]
]);
}
}