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' ] ] ] ]); } }