You are here

public function AnonymousLoginSettingsFormTest::testForm in Anonymous login 8

Same name and namespace in other branches
  1. 8.2 tests/src/Functional/AnonymousLoginSettingsFormTest.php \Drupal\Tests\anonymous_login\Functional\AnonymousLoginSettingsFormTest::testForm()

Tests module settings form.

File

tests/src/Functional/AnonymousLoginSettingsFormTest.php, line 40

Class

AnonymousLoginSettingsFormTest
Anonymous login settings form browser tests.

Namespace

Drupal\Tests\anonymous_login\Functional

Code

public function testForm() {
  $this
    ->drupalGet('admin/config/user-interface/anonymous-login');
  $this
    ->assertSession()
    ->statusCodeEquals(403);
  $this
    ->drupalLogin($this
    ->drupalCreateUser([
    'administer anonymous login settings',
  ]));
  $this
    ->drupalGet('admin/config/user-interface/anonymous-login_wrong');
  $this
    ->assertSession()
    ->statusCodeEquals(404);
  $this
    ->drupalGet('admin/config/user-interface/anonymous-login');
  $this
    ->assertSession()
    ->statusCodeEquals(200);
  $edit = [
    'paths' => '*' . PHP_EOL . '~/user/register',
    'login_path' => '/some-wrong-login-path',
    'message' => 'Test login message.',
  ];

  // Test login path validation.
  $this
    ->drupalPostForm(NULL, $edit, t('Save configuration'));
  $this
    ->assertSession()
    ->pageTextContains('Login page path is invalid. Check it please.');

  // Prepare node to use it in login path setting.
  $this
    ->createContentType([
    'type' => 'node_test',
  ]);
  \Drupal::entityTypeManager()
    ->getStorage('node')
    ->create([
    'type' => 'node_test',
    'title' => $this
      ->randomString(),
  ])
    ->save();
  $edit['login_path'] = '/node/1';

  // Test form saving.
  $this
    ->drupalPostForm(NULL, $edit, t('Save configuration'));
  $this
    ->assertSession()
    ->pageTextContains('The configuration options have been saved.');
  $this
    ->drupalGet('admin/config/user-interface/anonymous-login');
  $this
    ->assertSession()
    ->statusCodeEquals(200);
  $this
    ->assertSession()
    ->fieldValueEquals('paths', '*' . PHP_EOL . '~/user/register');
  $this
    ->assertSession()
    ->fieldValueEquals('login_path', '/node/1');
  $this
    ->assertSession()
    ->fieldValueEquals('message', 'Test login message.');
}