localgov_microsites_group-4.1.0/tests/src/Functional/GroupInvitationAccessTest.php

tests/src/Functional/GroupInvitationAccessTest.php
<?php

namespace Drupal\Tests\localgov_microsites_group\Functional;

use Drupal\Core\Test\AssertMailTrait;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\localgov_microsites_group\Traits\InitializeGroupsTrait;
use Drupal\Tests\user\Traits\UserCreationTrait;

/**
 * Tests the group and group content access.
 *
 * @group localgov_microsites_group
 */
class GroupInvitationAccessTest extends BrowserTestBase {

  use UserCreationTrait;
  use InitializeGroupsTrait;
  use AssertMailTrait;

  /**
   * Will be removed when issue #3204455 on Domain Site Settings gets merged.
   *
   * See https://www.drupal.org/project/domain_site_settings/issues/3204455.
   *
   * @var bool
   * @see \Drupal\Core\Config\Development\ConfigSchemaChecker
   * phpcs:disable DrupalPractice.Objects.StrictSchemaDisabled.StrictConfigSchema
   */
  protected $strictConfigSchema = FALSE;

  /**
   * Modules to enable.
   *
   * @var array
   */
  protected static $modules = [
    'block',
    'group',
    'domain',
    'localgov_microsites_group',
  ];

  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'localgov_base';

  /**
   * Regular authenticated User for tests.
   *
   * @var \Drupal\user\UserInterface
   */
  protected $otherUser;

  /**
   * User administrator of group 1.
   *
   * @var \Drupal\user\UserInterface
   */
  protected $adminUser;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    // Test uses groups on control domain, so disable group sites.
    $this->ownerUser = $this->createUser(['use group_sites admin mode']);
    $this->adminUser = $this->createUser(['use group_sites admin mode']);
    $this->memberUser = $this->createUser(['use group_sites admin mode']);
    $this->otherUser = $this->createUser(['use group_sites admin mode']);
    $this->createMicrositeGroups([
      'uid' => $this->ownerUser->id(),
    ]);
    $this->groups[1]->addMember($this->adminUser, ['group_roles' => 'microsite-admin']);
    $this->groups[1]->addMember($this->memberUser);
    $this->createMicrositeGroupsDomains($this->groups);
  }

  /**
   * Test content access when unique group access is enabled.
   */
  public function testInvitationPermissions() {
    $group = $this->groups[1];

    // Admin can check invitations.
    $this->drupalLogin($this->adminUser);
    \Drupal::service('group_sites.admin_mode')->setAdminMode(TRUE);
    $this->drupalGet('/group/' . $group->id() . '/invitations');
    $this->assertSession()->statusCodeEquals(200);

    // Ordinary member can't.
    $this->drupalLogin($this->memberUser);
    \Drupal::service('group_sites.admin_mode')->setAdminMode(TRUE);
    $this->drupalGet('/group/' . $group->id() . '/invitations');
    $this->assertSession()->statusCodeEquals(403);
    $this->drupalGet('/group/' . $group->id() . '/content/add/group_invitation');
    $this->assertSession()->statusCodeEquals(403);

    // Check admin can invite.
    $this->drupalLogin($this->adminUser);
    \Drupal::service('group_sites.admin_mode')->setAdminMode(TRUE);
    $this->drupalGet('/group/' . $group->id() . '/content/add/group_invitation');
    $this->submitForm([
      'invitee_mail[0][value]' => $this->otherUser->getEmail(),
    ], 'Save');
    $this->assertMailString('to', $this->otherUser->getEmail(), 1);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc