diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationContentTranslationTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationContentTranslationTest.php index 039556243921c37976ee3656a41217e03a73531e..ea6d277506f7b1240b62fad09ed522d52c17fffd 100644 --- a/core/modules/content_moderation/tests/src/Functional/ModerationContentTranslationTest.php +++ b/core/modules/content_moderation/tests/src/Functional/ModerationContentTranslationTest.php @@ -7,6 +7,7 @@ use Drupal\Tests\BrowserTestBase; use Drupal\Tests\content_moderation\Traits\ContentModerationTestTrait; use Drupal\Tests\content_translation\Traits\ContentTranslationTestTrait; +use Drupal\user\Entity\Role; /** * Test content_moderation functionality with content_translation. @@ -34,14 +35,6 @@ class ModerationContentTranslationTest extends BrowserTestBase { 'content_translation', ]; - /** - * {@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} */ @@ -52,7 +45,12 @@ class ModerationContentTranslationTest extends BrowserTestBase { */ protected function setUp(): void { parent::setUp(); - $this->drupalLogin($this->rootUser); + $this->adminUser = $this->drupalCreateUser([ + 'bypass node access', + 'create content translations', + 'translate any entity', + ]); + $this->drupalLogin($this->adminUser); // Create an Article content type. $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article'])->save(); static::createLanguageFromLangcode('fr'); @@ -91,7 +89,7 @@ public function testModerationWithExistingContent(): void { $workflow = $this->createEditorialWorkflow(); $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'article'); $workflow->save(); - $this->drupalLogin($this->rootUser); + $this->grantPermissions(Role::load(Role::AUTHENTICATED_ID), ['use editorial transition publish']); // Edit the English node. $this->drupalGet('node/' . $english_node->id() . '/edit'); diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php index f9a0a753ee0bf77a6ef338e9fb8ea77dd064b7e0..8688e5ad034caf2e078c4df4ef5b227e6447cb7d 100644 --- a/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php +++ b/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php @@ -29,16 +29,20 @@ class ModerationFormTest extends ModerationStateTestBase { /** * {@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; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} */ - protected $defaultTheme = 'stark'; + protected function getAdministratorPermissions(): array { + return array_merge($this->permissions, [ + 'administer entity_test content', + 'view test entity', + 'translate any entity', + 'bypass node access', + ]); + } /** * {@inheritdoc} @@ -196,7 +200,8 @@ public function testModerationForm(): void { * Tests moderation non-bundle entity type. */ public function testNonBundleModerationForm(): void { - $this->drupalLogin($this->rootUser); + $this->adminUser = $this->drupalCreateUser($this->getAdministratorPermissions()); + $this->drupalLogin($this->adminUser); $this->workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_mulrevpub', 'entity_test_mulrevpub'); $this->workflow->save(); @@ -290,7 +295,8 @@ public function testModerationFormSetsRevisionAuthor(): void { * Tests translated and moderated nodes. */ public function testContentTranslationNodeForm(): void { - $this->drupalLogin($this->rootUser); + $this->adminUser = $this->drupalCreateUser($this->getAdministratorPermissions()); + $this->drupalLogin($this->adminUser); // Add French language. static::createLanguageFromLangcode('fr'); diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php index 1710c550f76a17b54389f5142e953cf4c43fd288..a3b8abe12361c85f98e2685ec1b33bf8c8a51a98 100644 --- a/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php +++ b/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php @@ -29,16 +29,19 @@ class ModerationLocaleTest extends ModerationStateTestBase { /** * {@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; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} */ - protected $defaultTheme = 'stark'; + protected function getAdministratorPermissions(): array { + return array_merge($this->permissions, [ + 'create content translations', + 'bypass node access', + 'translate any entity', + ]); + } /** * {@inheritdoc} @@ -46,8 +49,8 @@ class ModerationLocaleTest extends ModerationStateTestBase { protected function setUp(): void { parent::setUp(); - $this->drupalLogin($this->rootUser); - + $this->adminUser = $this->drupalCreateUser($this->getAdministratorPermissions()); + $this->drupalLogin($this->adminUser); // Enable moderation on Article node type. $this->createContentTypeFromUi('Article', 'article', TRUE); diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationStateBlockTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationStateBlockTest.php index 5880df23bd6717c5254b645937b346ff76187e34..4ab3497c058fb3855ca24811b97f1200bbad83e2 100644 --- a/core/modules/content_moderation/tests/src/Functional/ModerationStateBlockTest.php +++ b/core/modules/content_moderation/tests/src/Functional/ModerationStateBlockTest.php @@ -16,16 +16,18 @@ class ModerationStateBlockTest extends ModerationStateTestBase { /** * {@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; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} */ - protected $defaultTheme = 'stark'; + protected function getAdministratorPermissions(): array { + return array_merge($this->permissions, [ + 'administer blocks', + 'administer block content', + ]); + } /** * {@inheritdoc} @@ -64,7 +66,8 @@ protected function setUp(): void { * @see \Drupal\content_moderation\Tests\ModerationFormTest::testModerationForm */ public function testCustomBlockModeration(): void { - $this->drupalLogin($this->rootUser); + $this->adminUser = $this->drupalCreateUser($this->getAdministratorPermissions()); + $this->drupalLogin($this->adminUser); // Enable moderation for content blocks. $edit['bundles[basic]'] = TRUE; diff --git a/core/modules/content_moderation/tests/src/Functional/WorkspaceContentModerationIntegrationTest.php b/core/modules/content_moderation/tests/src/Functional/WorkspaceContentModerationIntegrationTest.php index 5829390ecc6b334bbe3e9654925754f9e6304f87..5446bf2675448c4db881e867079ac0e3bb5b8108 100644 --- a/core/modules/content_moderation/tests/src/Functional/WorkspaceContentModerationIntegrationTest.php +++ b/core/modules/content_moderation/tests/src/Functional/WorkspaceContentModerationIntegrationTest.php @@ -24,16 +24,18 @@ class WorkspaceContentModerationIntegrationTest extends ModerationStateTestBase /** * {@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; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} */ - protected $defaultTheme = 'stark'; + protected function getAdministratorPermissions(): array { + return array_merge($this->permissions, [ + 'bypass node access', + 'view any workspace', + ]); + } /** * {@inheritdoc} @@ -41,7 +43,8 @@ class WorkspaceContentModerationIntegrationTest extends ModerationStateTestBase protected function setUp(): void { parent::setUp(); - $this->drupalLogin($this->rootUser); + $this->adminUser = $this->drupalCreateUser($this->getAdministratorPermissions()); + $this->drupalLogin($this->adminUser); // Enable moderation on Article node type. $this->createContentTypeFromUi('Article', 'article', TRUE); diff --git a/core/modules/content_moderation/tests/src/Kernel/EntityStateChangeValidationTest.php b/core/modules/content_moderation/tests/src/Kernel/EntityStateChangeValidationTest.php index e769818a9cb20144f8c5dc4cd6a7221616b173cd..3b74d1afe38258d71808359595c8ad5e85e90de0 100644 --- a/core/modules/content_moderation/tests/src/Kernel/EntityStateChangeValidationTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/EntityStateChangeValidationTest.php @@ -33,14 +33,6 @@ class EntityStateChangeValidationTest extends KernelTestBase { 'workflows', ]; - /** - * {@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; - /** * An admin user. * @@ -69,7 +61,6 @@ protected function setUp(): void { * @covers ::validate */ public function testValidTransition(): void { - $this->setCurrentUser($this->adminUser); $node_type = NodeType::create([ 'type' => 'example', @@ -87,6 +78,7 @@ public function testValidTransition(): void { $node->moderation_state->value = 'draft'; $node->save(); + $this->setCurrentUser($this->createUser(['use editorial transition publish'])); $node->moderation_state->value = 'published'; $this->assertCount(0, $node->validate()); $node->save(); @@ -153,7 +145,6 @@ public function testInvalidState(): void { * Tests validation with no initial state or an invalid state. */ public function testInvalidStateWithoutExisting(): void { - $this->setCurrentUser($this->adminUser); // Create content without moderation enabled for the content type. $node_type = NodeType::create([ 'type' => 'example', @@ -173,6 +164,7 @@ public function testInvalidStateWithoutExisting(): void { $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example'); $workflow->save(); + $this->setCurrentUser($this->createUser(['use editorial transition create_new_draft'])); // Validate the invalid state. $node = Node::load($node->id()); $node->moderation_state->value = 'invalid_state'; @@ -203,7 +195,6 @@ public function testInvalidStateWithoutExisting(): void { * Tests state transition validation with multiple languages. */ public function testInvalidStateMultilingual(): void { - $this->setCurrentUser($this->adminUser); ConfigurableLanguage::createFromLangcode('fr')->save(); $node_type = NodeType::create([ @@ -216,6 +207,7 @@ public function testInvalidStateMultilingual(): void { $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example'); $workflow->save(); + $this->setCurrentUser($this->createUser(['use editorial transition archive'])); $node = Node::create([ 'type' => 'example', 'title' => 'English Published Node', @@ -261,7 +253,6 @@ public function testInvalidStateMultilingual(): void { * Tests that content without prior moderation information can be moderated. */ public function testExistingContentWithNoModeration(): void { - $this->setCurrentUser($this->adminUser); $node_type = NodeType::create([ 'type' => 'example', @@ -282,6 +273,7 @@ public function testExistingContentWithNoModeration(): void { $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'example'); $workflow->save(); + $this->setCurrentUser($this->createUser(['use editorial transition publish'])); $node = Node::load($nid); // Having no previous state should not break validation.