Line Files Duplications Code 97 82 /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayOverrideAccessControlTest.php 110 lines244 tokens
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,
132 113 116 /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_page_layout/tests/src/Kernel/InstancePageLayoutAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_views/tests/src/Kernel/InstanceViewsAccessControlTest.php 75 lines156 tokens
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,
145 273 /display_builder/web/modules/custom/display_builder/modules/display_builder_page_layout/src/Plugin/UiPatterns/Source/PageLayoutSource.php /display_builder/web/modules/custom/display_builder/src/Plugin/UiPatterns/Source/LayoutSource.php 46 lines80 tokens
return $slots;
}
/**
* {@inheritdoc}
*/
public function getSlotValues(): array {
return $this->configuration['settings']['regions'] ?? [];
}
/**
* {@inheritdoc}
*/
public function getSlotValue(string $slot_id): array {
return $this->configuration['settings']['regions'][$slot_id] ?? [];
}
/**
* {@inheritdoc}
*/
public function setSlotValue(string $slot_id, array $slot): array {
$this->configuration['settings']['regions'][$slot_id] = $slot;
return $this->configuration['settings'];
}
/**
* {@inheritdoc}
*/
public function setSlotRenderable(array $build, string $slot_id, array $slot): array {
$build[$slot_id] = $slot;
return $build;
}
/**
* {@inheritdoc}
*/
public static function getSlotPath(string $slot_id): array {
return ['regions', $slot_id];
}
/**
* {@inheritdoc}
*/
public function settingsFormPropsOnly(array $form, FormStateInterface $form_state): array {
28 27 /display_builder/web/modules/custom/display_builder/tests/src/Kernel/ApiControllerTest.php /display_builder/web/modules/custom/display_builder/tests/src/Kernel/ApiPublishingControllerTest.php 41 lines71 tokens
protected ApiController $controller;
/**
* The builder instance entity.
*/
protected InstanceInterface $instance;
/**
* {@inheritdoc}
*/
protected static $modules = [
'system',
'user',
'path_alias',
'ui_patterns',
'ui_patterns_field',
'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 = $this->createDisplayBuilderInstance('test_base', 'test_instance');
$this->instance->save();
// Get the controller from the container.
$this->controller = $this->container->get('class_resolver')->getInstanceFromDefinition(ApiController::class);
97 78 81 57 /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_page_layout/tests/src/Kernel/InstancePageLayoutAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_views/tests/src/Kernel/InstanceViewsAccessControlTest.php /display_builder/web/modules/custom/display_builder/tests/src/Kernel/InstanceAccessControlTest.php 36 lines87 tokens
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 {
71 56 /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayOverrideAccessControlTest.php 24 lines71 tokens
#[DataProvider('accessInstanceEntityViewDisplayProvider')]
public function testInstanceEntityViewDisplayAccess(array $data, array $expect): void {
// Create the Display builder profiles and verify permissions exist.
foreach ($data['profiles'] as $pid) {
$permission = \sprintf($this->useDisplayBuilderPermission, $pid);
self::createDisplayBuilderProfile($pid);
$availablePermissions = $this->userPermissions->getPermissions();
self::assertArrayHasKey($permission, $availablePermissions, 'Display builder profile permission is created and available.');
}
// Create the user with the permissions to test.
$permissions = [];
if ($data['user_has_admin_permission']) {
$permissions[] = $this->adminPermission;
}
if (isset($data['user_has_profile_id_permission'])) {
$permissions[] = \sprintf($this->useDisplayBuilderPermission, $data['user_has_profile_id_permission']);
}
$user = $this->setUpCurrentUser([], $permissions ?? []);
// Create the instance with profile and instance id.
$instance = $this->createDisplayBuilderInstance($data['instance_use_profile_id'] ?? NULL, EntityView::getPrefix() . 'user__user__default');
239 283 /display_builder/web/modules/custom/display_builder/tests/src/Kernel/ApiContextualMenuControllerTest.php /display_builder/web/modules/custom/display_builder/tests/src/Kernel/ApiContextualMenuControllerTest.php 19 lines78 tokens
public function testPasteStylesReplace(): void {
$source_id = $this->instance->attachToRoot(0, 'token', []);
$target_id = $this->instance->attachToRoot(1, 'token', []);
$this->instance->setThirdPartySettings($source_id, 'styles', [
'selected' => ['test' => 'source-option'],
'extra' => 'source-extra',
]);
$this->instance->setThirdPartySettings($target_id, 'styles', [
'selected' => ['test' => 'target-option'],
'extra' => 'target-extra',
]);
$this->instance->save();
$url = Url::fromRoute('display_builder.api_paste_styles', [
'display_builder_instance' => $this->instance->id(),
]);
$request = Request::create($url->toString(), 'POST', [
'node_id' => $target_id,
'source_node_id' => $source_id,