gatsby-8.x-1.x-dev/tests/src/Functional/AdminFormTest.php

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

namespace Drupal\Tests\gatsby\Functional;

use Drupal\Tests\BrowserTestBase;
use Drupal\Core\Url;

/**
 * Defines a test for GatsbyAdminForm.
 *
 * @group gatsby
 *
 * @covers \Drupal\gatsby\Form\GatsbyAdminForm
 */
class AdminFormTest extends BrowserTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'gatsby',
  ];

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

  /**
   * {@inheritdoc}
   */
  protected $formUrl;

  /**
   * Tests admin form validation.
   */
  public function testAdminFormValidation() {
    $this->formUrl = Url::fromRoute('gatsby.gatsby_admin_form');
    $this->assertNonAdminsCannotAccessForm();
    $this->drupalLogin($this->createUser([
      'administer gatsby',
    ]));
    $this->drupalGet($this->formUrl);
    $assert = $this->assertSession();
    $assert->statusCodeEquals(200);

    // Test an invalid server URL.
    $this->submitForm([
      'server_url' => 'this is not a URL!',
    ], 'Save configuration');

    $assert->pageTextContains('Invalid Gatsby preview server URL.');

    // Test an invalid server URL, multi-value.
    $this->submitForm([
      'server_url' => 'https://example.com, this is not a URL!',
    ], 'Save configuration');

    $assert->pageTextContains('Invalid Gatsby preview server URL.');

    // Test an invalid preview URL.
    $this->submitForm([
      'preview_callback_url' => 'this is not a URL!',
    ], 'Save configuration');

    $assert->pageTextContains('Invalid Gatsby preview callback URL.');

    // Test an invalid preview URL, multi-value.
    $this->submitForm([
      'preview_callback_url' => 'https://example.com, this is not a URL!',
    ], 'Save configuration');

    $assert->pageTextContains('Invalid Gatsby preview callback URL.');

    // Test an invalid incrementalbuild_url.
    $this->submitForm([
      'incrementalbuild_url' => 'this is not a URL!',
    ], 'Save configuration');

    $assert->pageTextContains('Invalid incremental build URL.');

    // Test an invalid contentsync_url.
    $this->submitForm([
      'contentsync_url' => 'this is not a URL!',
    ], 'Save configuration');
    $assert->pageTextContains('Invalid ContentSync URL.');

    // Test an invalid path-mapping.
    $this->submitForm([
      'path_mapping' => <<<MAPPING
invalid|/mapping
MAPPING,
    ], 'Save configuration');

    $assert->pageTextContains('Invalid preview server path mapping.');

    // Submit valid values.
    $server_url = sprintf('https://%s.com', $this->randomMachineName());
    $build_url = sprintf('https://%s.com', $this->randomMachineName());
    $contentsync_url = sprintf('https://%s.com', $this->randomMachineName());
    $mapping = <<<MAPPING
/home|/
MAPPING;
    $this->submitForm([
      'server_url' => $server_url,
      'preview_callback_url' => $server_url . '/__refresh',
      'incrementalbuild_url' => $build_url,
      'contentsync_url' => $contentsync_url,
      'path_mapping' => $mapping,
      'build_published' => TRUE,
      'supported_entity_types[user]' => 1,
      'delete_log_entities' => FALSE,
      'number_items_delete' => 500,
    ], 'Save configuration');

    // Assert the new values are saved.
    $config = \Drupal::config('gatsby.settings');
    $this->assertEquals($server_url, $config->get('server_url'));
    $this->assertEquals($server_url . '/__refresh', $config->get('preview_callback_url'));
    $this->assertEquals($build_url, $config->get('incrementalbuild_url'));
    $this->assertEquals($contentsync_url, $config->get('contentsync_url'));
    $this->assertEquals($mapping, $config->get('path_mapping'));
    $this->assertTrue($config->get('build_published'));
    $this->assertEquals(['user'], $config->get('supported_entity_types'));
    $this->assertFalse($config->get('delete_log_entities'));
    $this->assertEquals(500, $config->get('number_items_delete'));
  }

  /**
   * Assert non admins can't access the form.
   */
  private function assertNonAdminsCannotAccessForm() {
    $this->drupalGet($this->formUrl);
    $this->assertSession()->statusCodeEquals(403);
  }

}

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

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