function UserRegistrationTest::testUuidFormState

Same name and namespace in other branches
  1. 9 core/modules/user/tests/src/Functional/UserRegistrationTest.php \Drupal\Tests\user\Functional\UserRegistrationTest::testUuidFormState()
  2. 8.9.x core/modules/user/tests/src/Functional/UserRegistrationTest.php \Drupal\Tests\user\Functional\UserRegistrationTest::testUuidFormState()
  3. 11.x core/modules/user/tests/src/Functional/UserRegistrationTest.php \Drupal\Tests\user\Functional\UserRegistrationTest::testUuidFormState()

Tests that UUID isn't cached in form state on register form.

This is a regression test for https://www.drupal.org/node/2500527 to ensure that the form is not cached on GET requests.

File

core/modules/user/tests/src/Functional/UserRegistrationTest.php, line 180

Class

UserRegistrationTest
Tests registration of user under different configurations.

Namespace

Drupal\Tests\user\Functional

Code

public function testUuidFormState() : void {
  \Drupal::service('module_installer')->install([
    'image',
  ]);
  // Add a picture field in order to ensure that no form cache is written,
  // which breaks registration of more than 1 user every 6 hours.
  $field_storage = FieldStorageConfig::create([
    'field_name' => 'user_picture',
    'entity_type' => 'user',
    'type' => 'image',
  ]);
  $field_storage->save();
  $field = FieldConfig::create([
    'field_name' => 'user_picture',
    'entity_type' => 'user',
    'bundle' => 'user',
  ]);
  $field->save();
  $form_display = EntityFormDisplay::create([
    'targetEntityType' => 'user',
    'bundle' => 'user',
    'mode' => 'default',
    'status' => TRUE,
  ]);
  $form_display->setComponent('user_picture', [
    'type' => 'image_image',
  ]);
  $form_display->save();
  // Don't require email verification and allow registration by site visitors
  // without administrator approval.
  $this->config('user.settings')
    ->set('verify_mail', FALSE)
    ->set('register', UserInterface::REGISTER_VISITORS)
    ->save();
  $edit = [];
  $edit['name'] = $this->randomMachineName();
  $edit['mail'] = $edit['name'] . '@example.com';
  $edit['pass[pass2]'] = $edit['pass[pass1]'] = $this->randomMachineName();
  // Create one account.
  $this->drupalGet('user/register');
  $this->submitForm($edit, 'Create new account');
  $this->assertSession()
    ->statusCodeEquals(200);
  $user_storage = \Drupal::entityTypeManager()->getStorage('user');
  $this->assertNotEmpty($user_storage->loadByProperties([
    'name' => $edit['name'],
  ]));
  $this->drupalLogout();
  // Create a second account.
  $edit['name'] = $this->randomMachineName();
  $edit['mail'] = $edit['name'] . '@example.com';
  $edit['pass[pass2]'] = $edit['pass[pass1]'] = $this->randomMachineName();
  $this->drupalGet('user/register');
  $this->submitForm($edit, 'Create new account');
  $this->assertSession()
    ->statusCodeEquals(200);
  $this->assertNotEmpty($user_storage->loadByProperties([
    'name' => $edit['name'],
  ]));
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.