From f48f361eb4afa3a724d24b4eb6f998b28cf76dbc Mon Sep 17 00:00:00 2001
From: Lee Rowlands <lee.rowlands@previousnext.com.au>
Date: Thu, 11 Apr 2024 15:46:20 +1000
Subject: [PATCH] Issue #3439829 by thebumik, dimitriskr, vensires: Fix Blocks
 tests that rely on UID1's super user behavior

---
 .../tests/src/Functional/BlockHtmlTest.php     | 13 ++++---------
 .../tests/src/Functional/BlockXssTest.php      | 13 ++++---------
 .../BlockContextualLinksTest.php               | 18 ++++++------------
 3 files changed, 14 insertions(+), 30 deletions(-)

diff --git a/core/modules/block/tests/src/Functional/BlockHtmlTest.php b/core/modules/block/tests/src/Functional/BlockHtmlTest.php
index 89cd2a46ce6b..439984bd4a5c 100644
--- a/core/modules/block/tests/src/Functional/BlockHtmlTest.php
+++ b/core/modules/block/tests/src/Functional/BlockHtmlTest.php
@@ -20,14 +20,6 @@ class BlockHtmlTest extends BrowserTestBase {
    */
   protected static $modules = ['block', 'block_test'];
 
-  /**
-   * {@inheritdoc}
-   *
-   * @todo Remove and fix test to not rely on super user.
-   * @see https://www.drupal.org/project/drupal/issues/3437620
-   */
-  protected bool $usesSuperUserAccessPolicy = TRUE;
-
   /**
    * {@inheritdoc}
    */
@@ -39,7 +31,10 @@ class BlockHtmlTest extends BrowserTestBase {
   protected function setUp(): void {
     parent::setUp();
 
-    $this->drupalLogin($this->rootUser);
+    $this->drupalLogin($this->drupalCreateUser([
+      'administer blocks',
+      'access administration pages',
+    ]));
 
     // Enable the test_html block, to test HTML ID and attributes.
     \Drupal::state()->set('block_test.attributes', ['data-custom-attribute' => 'foo']);
diff --git a/core/modules/block/tests/src/Functional/BlockXssTest.php b/core/modules/block/tests/src/Functional/BlockXssTest.php
index f68350a6b0b9..28b68b465f6e 100644
--- a/core/modules/block/tests/src/Functional/BlockXssTest.php
+++ b/core/modules/block/tests/src/Functional/BlockXssTest.php
@@ -25,14 +25,6 @@ class BlockXssTest extends BrowserTestBase {
    */
   protected static $modules = ['block', 'block_content', 'menu_ui', 'views'];
 
-  /**
-   * {@inheritdoc}
-   *
-   * @todo Remove and fix test to not rely on super user.
-   * @see https://www.drupal.org/project/drupal/issues/3437620
-   */
-  protected bool $usesSuperUserAccessPolicy = TRUE;
-
   /**
    * {@inheritdoc}
    */
@@ -93,7 +85,10 @@ public function testXssInCategory() {
    * Tests various modules that provide blocks for XSS.
    */
   public function testBlockXss() {
-    $this->drupalLogin($this->rootUser);
+    $this->drupalLogin($this->drupalCreateUser([
+      'administer blocks',
+      'access administration pages',
+    ]));
 
     $this->doViewTest();
     $this->doMenuTest();
diff --git a/core/modules/block/tests/src/FunctionalJavascript/BlockContextualLinksTest.php b/core/modules/block/tests/src/FunctionalJavascript/BlockContextualLinksTest.php
index a494ae5e6da4..d5490c91d23c 100644
--- a/core/modules/block/tests/src/FunctionalJavascript/BlockContextualLinksTest.php
+++ b/core/modules/block/tests/src/FunctionalJavascript/BlockContextualLinksTest.php
@@ -18,14 +18,6 @@ class BlockContextualLinksTest extends WebDriverTestBase {
    */
   protected static $modules = ['user', 'block', 'contextual'];
 
-  /**
-   * {@inheritdoc}
-   *
-   * @todo Remove and fix test to not rely on super user.
-   * @see https://www.drupal.org/project/drupal/issues/3437620
-   */
-  protected bool $usesSuperUserAccessPolicy = TRUE;
-
   /**
    * {@inheritdoc}
    */
@@ -43,7 +35,11 @@ class BlockContextualLinksTest extends WebDriverTestBase {
    */
   protected function setUp(): void {
     parent::setUp();
-
+    $this->drupalLogin($this->drupalCreateUser([
+      'administer blocks',
+      'access administration pages',
+      'access contextual links',
+    ]));
     $this->blockId = $this->defaultTheme . '_powered';
     $this->placeBlock('system_powered_by_block', [
       'id' => $this->blockId,
@@ -52,11 +48,9 @@ protected function setUp(): void {
   }
 
   /**
-   * Test to ensure that remove contextual link is present in the block.
+   * Test that remove/configure contextual links are present in the block.
    */
   public function testBlockContextualRemoveLinks() {
-    // Ensure that contextual filter links are visible on the page.
-    $this->drupalLogin($this->rootUser);
     $this->drupalGet('<front>');
     $contextual_id = "[data-contextual-id^='block:block=$this->blockId:langcode=en']";
     $this->assertSession()->waitForElement('css', "$contextual_id .contextual-links");
-- 
GitLab