3 namespace Drupal\Tests\user\Kernel;
5 use Drupal\KernelTests\KernelTestBase;
6 use Drupal\user\Entity\User;
7 use Drupal\user\RoleInterface;
10 * Tests the user entity class.
13 * @see \Drupal\user\Entity\User
15 class UserEntityTest extends KernelTestBase {
22 public static $modules = ['system', 'user', 'field'];
27 protected function setUp() {
29 $this->installEntitySchema('user');
33 * Tests some of the methods.
35 * @see \Drupal\user\Entity\User::getRoles()
36 * @see \Drupal\user\Entity\User::addRole()
37 * @see \Drupal\user\Entity\User::removeRole()
39 public function testUserMethods() {
40 $role_storage = $this->container->get('entity.manager')->getStorage('user_role');
41 $role_storage->create(['id' => 'test_role_one'])->save();
42 $role_storage->create(['id' => 'test_role_two'])->save();
43 $role_storage->create(['id' => 'test_role_three'])->save();
47 'roles' => ['test_role_one'],
49 $user = User::create($values);
51 $this->assertTrue($user->hasRole('test_role_one'));
52 $this->assertFalse($user->hasRole('test_role_two'));
53 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_one'], $user->getRoles());
55 $user->addRole('test_role_one');
56 $this->assertTrue($user->hasRole('test_role_one'));
57 $this->assertFalse($user->hasRole('test_role_two'));
58 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_one'], $user->getRoles());
60 $user->addRole('test_role_two');
61 $this->assertTrue($user->hasRole('test_role_one'));
62 $this->assertTrue($user->hasRole('test_role_two'));
63 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_one', 'test_role_two'], $user->getRoles());
65 $user->removeRole('test_role_three');
66 $this->assertTrue($user->hasRole('test_role_one'));
67 $this->assertTrue($user->hasRole('test_role_two'));
68 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_one', 'test_role_two'], $user->getRoles());
70 $user->removeRole('test_role_one');
71 $this->assertFalse($user->hasRole('test_role_one'));
72 $this->assertTrue($user->hasRole('test_role_two'));
73 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_two'], $user->getRoles());
77 * Tests that all user fields validate properly.
79 * @see \Drupal\Core\Field\FieldItemListInterface::generateSampleItems
80 * @see \Drupal\Core\Field\FieldItemInterface::generateSampleValue()
81 * @see \Drupal\Core\Entity\FieldableEntityInterface::validate()
83 public function testUserValidation() {
84 $user = User::create([]);
85 foreach ($user as $field_name => $field) {
86 if (!in_array($field_name, ['uid'])) {
87 $user->$field_name->generateSampleItems();
90 $violations = $user->validate();
91 $this->assertFalse((bool) $violations->count());