Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
- Base: wintercms/winter branch 1.2 (full framework) - Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS - Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication - Partials: hero (offline-first), features, modes (offline/nube toggle), screenshots, pricing (3 planes), comparison, FAQ, CTA - Plugin VivesPOS.Site with ContactForm - Dockerfile: PHP 8.2 Apache, port 80, healthcheck - Added winter/wn-pages, blog, sitemap, seo plugins - Active theme set to vivespos
144 lines
4.3 KiB
PHP
144 lines
4.3 KiB
PHP
<?php
|
|
|
|
namespace Backend\Tests\Widgets;
|
|
|
|
use System\Tests\Bootstrap\PluginTestCase;
|
|
use Winter\Storm\Exception\ApplicationException;
|
|
use Backend\Tests\Fixtures\Models\UserFixture;
|
|
use Backend\Models\User;
|
|
use Backend\Widgets\Lists;
|
|
|
|
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'
|
|
]
|
|
]
|
|
]
|
|
]);
|
|
}
|
|
}
|