if ($expect['view']) {
self::assertTrue($this->accessControl->access($instance, 'view', $user), 'User can view the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'view', $user), 'User can not view the instance.');
}
if ($expect['update']) {
self::assertTrue($this->accessControl->access($instance, 'update', $user), 'User can update the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'update', $user), 'User can not update the instance.');
}
if ($expect['delete']) {
self::assertTrue($this->accessControl->access($instance, 'delete', $user), 'User can delete the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'delete', $user), 'User can not delete the instance.');
}
}
/**
* Data provider for testInstanceEntityViewDisplayAccess().
*
* Each case needs:
* - profiles: Display Builder array of profiles to create
* - user_has_admin_permission: Add user admin permission
* - user_has_profile_id_permission: Add profile id permission on user
* - instance_use_profile_id: Add profile id permission on user
* - expect: expected use access results for view, update, delete.
*
* @return array<string, array<string, mixed>>
* The data to test and expected.
*/
public static function accessInstanceEntityViewDisplayProvider(): array {
return [
'user without permission' => [
'data' => [
'profiles' => ['instance_only'],
'user_has_admin_permission' => FALSE,
'instance_use_profile_id' => 'instance_only',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with same profile as instance but not admin views' => [
'data' => [
'profiles' => ['user_instance'],
'user_has_admin_permission' => FALSE,
'user_has_profile_id_permission' => 'user_instance',
'instance_use_profile_id' => 'user_instance',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with different profile than instance' => [
'data' => [
'profiles' => ['user_profile', 'instance_profile'],
'user_has_admin_permission' => FALSE,
'user_has_profile_id_permission' => 'user_profile',
'instance_use_profile_id' => 'instance_profile',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with admin permission but not profile' => [
'data' => [
'profiles' => [],
'user_has_admin_permission' => TRUE,
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with admin and profile permission' => [
'data' => [
'profiles' => ['test_profile'],
'user_has_admin_permission' => TRUE,
'user_has_profile_id_permission' => 'test_profile',
'instance_use_profile_id' => 'test_profile',
],
'expect' => [
'view' => TRUE,
'update' => TRUE,
'delete' => TRUE,
],
],
'user with admin and other profile permission' => [
'data' => [
'profiles' => ['user_profile', 'instance_profile'],
'user_has_admin_permission' => TRUE,
'user_has_profile_id_permission' => 'user_profile',
'instance_use_profile_id' => 'instance_profile',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
|
public static function accessInstanceEntityViewDisplayProvider(): array {
return [
'user without permission' => [
'data' => [
'profiles' => ['instance_only'],
'user_has_admin_permission' => FALSE,
'instance_use_profile_id' => 'instance_only',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with same profile as instance but not admin views' => [
'data' => [
'profiles' => ['user_instance'],
'user_has_admin_permission' => FALSE,
'user_has_profile_id_permission' => 'user_instance',
'instance_use_profile_id' => 'user_instance',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with different profile than instance' => [
'data' => [
'profiles' => ['user_profile', 'instance_profile'],
'user_has_admin_permission' => FALSE,
'user_has_profile_id_permission' => 'user_profile',
'instance_use_profile_id' => 'instance_profile',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with admin permission but not profile' => [
'data' => [
'profiles' => [],
'user_has_admin_permission' => TRUE,
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with admin and profile permission' => [
'data' => [
'profiles' => ['test_profile'],
'user_has_admin_permission' => TRUE,
'user_has_profile_id_permission' => 'test_profile',
'instance_use_profile_id' => 'test_profile',
],
'expect' => [
'view' => TRUE,
'update' => TRUE,
'delete' => TRUE,
],
],
'user with admin and other profile permission' => [
'data' => [
'profiles' => ['user_profile', 'instance_profile'],
'user_has_admin_permission' => TRUE,
'user_has_profile_id_permission' => 'user_profile',
'instance_use_profile_id' => 'instance_profile',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
|
protected ApiController $controller;
/**
* The builder instance entity.
*/
protected InstanceInterface $instance;
/**
* {@inheritdoc}
*/
protected static $modules = [
'system',
'user',
'path_alias',
'ui_patterns',
'ui_styles',
'ui_skins',
'breakpoint',
'display_builder',
'display_builder_test',
];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->installEntitySchema('user');
$this->installEntitySchema('path_alias');
$this->installEntitySchema('display_builder_profile');
$this->installEntitySchema('display_builder_instance');
$this->installConfig(['system', 'display_builder', 'ui_patterns', 'display_builder_test']);
// Create a real builder entity.
$this->instance = Instance::create([
'id' => 'test_instance',
'label' => 'Test Builder instance',
'profileId' => 'test',
]);
$this->instance->save();
// Get the controller from the container.
$this->controller = $this->container->get('class_resolver')->getInstanceFromDefinition(ApiController::class);
|
if ($expect['view']) {
self::assertTrue($this->accessControl->access($instance, 'view', $user), 'User can view the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'view', $user), 'User can not view the instance.');
}
if ($expect['update']) {
self::assertTrue($this->accessControl->access($instance, 'update', $user), 'User can update the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'update', $user), 'User can not update the instance.');
}
if ($expect['delete']) {
self::assertTrue($this->accessControl->access($instance, 'delete', $user), 'User can delete the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'delete', $user), 'User can not delete the instance.');
}
}
/**
* Data provider for testInstanceEntityViewDisplayAccess().
*
* Each case needs:
* - profiles: Display Builder array of profiles to create
* - user_has_admin_permission: Add user admin permission
* - user_has_profile_id_permission: Add profile id permission on user
* - instance_use_profile_id: Add profile id permission on user
* - expect: expected use access results for view, update, delete.
*
* @return array<string, array<string, mixed>>
* The data to test and expected.
*/
public static function accessInstanceEntityViewDisplayProvider(): array {
|