phpcpd report

Duplications6
- lines
- tokens
335
715
Files9
LineFilesDuplicationsCode
95
79
/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 lines
244 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,
130
110
113
/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 lines
156 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,
142
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 lines
80 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 {
30
28
/display_builder/web/modules/custom/display_builder/tests/src/Kernel/ApiControllerTest.php
/display_builder/web/modules/custom/display_builder/tests/src/Kernel/ApiPublishingControllerTest.php
44 lines
77 tokens
  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);
95
75
78
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 lines
87 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 {
69
53
/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 lines
71 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');