acquia_connector-8.x-1.22/tests/src/Kernel/RequirementsTest.php

tests/src/Kernel/RequirementsTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\acquia_connector\Kernel;

use Drupal\acquia_connector\Subscription;
use Drupal\Core\DependencyInjection\ContainerBuilder;

/**
 * Tests requirements for acquia_connector.
 *
 * @group acquia_connector
 */
final class RequirementsTest extends AcquiaConnectorTestBase {

  /**
   * {@inheritdoc}
   */
  public function register(ContainerBuilder $container) {
    parent::register($container);
    // Fake the installation profile for system_requirements().
    $container->setParameter('install_profile', 'standard');
  }

  /**
   * Test that we never get REQUIREMENT_ERROR for runtime PHP requirement.
   */
  public function testPhpEol(): void {
    // Preload install files for system and acquia_connector to ensure their
    // hooks are discovered. They are not loaded in `drupal_load_updates` due to
    // the fact module schema is not registered in Kernel tests.
    $module_handler = $this->container->get('module_handler');
    $module_handler->loadInclude('system', 'install');
    $module_handler->loadInclude('acquia_connector', 'install');

    $requirements = $this->container->get('system.manager')->listRequirements();

    self::assertArrayHasKey('php', $requirements);
    // Severity is only set if there is an issue with PHP. If it is set, ensure
    // it is not set to REQUIREMENT_ERROR.
    if (isset($requirements['php']['severity'])) {
      self::assertNotEquals(REQUIREMENT_ERROR, $requirements['php']['severity']);
    }
  }

  /**
   * Checks the requirements for acquia connector subscription.
   *
   * @dataProvider subscriptionDataProvider
   */
  public function testSubscriptionRequirements(bool $is_active, bool $has_credentials): void {
    $app_uuid = '1b2c3456-a123-456d-a789-e1234567895d';
    $subscription = $this->createMock(Subscription::class);
    $subscription
      ->method('isActive')
      ->willReturn($is_active);
    $subscription
      ->method('hasCredentials')
      ->willReturn($has_credentials);
    $subscription
      ->method('getSubscription')
      ->willReturn(['uuid' => $app_uuid]);
    $this->container->set('acquia_connector.subscription', $subscription);
    $this->container->get('module_handler')->loadInclude('acquia_connector', 'install');
    $requirements = acquia_connector_requirements('runtime');
    self::assertArrayHasKey('acquia_subscription_status', $requirements);
    $subscription_requirements = $requirements['acquia_subscription_status'];
    self::assertEquals('Acquia Subscription status', $subscription_requirements['title']);
    $description = $subscription_requirements['description']->__toString();
    self::assertStringContainsString('manually refresh the subscription status', $description);
    if ($is_active) {
      self::assertEquals(REQUIREMENT_OK, $subscription_requirements['severity']);
      self::assertEquals('Active', $subscription_requirements['value']);
    }
    elseif (!$has_credentials) {
      self::assertEquals(REQUIREMENT_WARNING, $subscription_requirements['severity']);
      self::assertEquals('Unknown', $subscription_requirements['value']);
      self::assertStringContainsString('You did not complete your signup to Acquia. You can provide the subscription identifier and the subscription key', $description);
    }
    else {
      self::assertEquals(REQUIREMENT_WARNING, $subscription_requirements['severity']);
      self::assertEquals('Inactive', $subscription_requirements['value']);
      self::assertStringContainsString("https://cloud.acquia.com/app/develop/applications/$app_uuid", $description);
      self::assertStringContainsString('Your subscription is expired or you are using an invalid identifier and key pair. You can check the subscription identifier and the subscription key', $description);
    }
  }

  /**
   * Data provider for subscription.
   *
   * @return iterable
   *   Iterable.
   */
  public static function subscriptionDataProvider(): iterable {
    yield [
      TRUE,
      TRUE,
    ];
    yield [
      FALSE,
      FALSE,
    ];
    yield [
      FALSE,
      TRUE,
    ];
  }

}

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

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