Skip to content
Snippets Groups Projects
Unverified Commit 56186f90 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3439832 by pooja_sharma, solimanharkas, smustgrave, quietone, vensires:...

Issue #3439832 by pooja_sharma, solimanharkas, smustgrave, quietone, vensires: Fix Content Moderation tests that rely on UID1's super user behavior
parent ba24f059
No related branches found
No related tags found
No related merge requests found
......@@ -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');
......
......@@ -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');
......
......@@ -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);
......
......@@ -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;
......
......@@ -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);
......
......@@ -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.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment