You are here

public function ReadonlymodeKernelTest::testReadonlyValidation in Read only mode 2.0.x

Make sure that entities fail validation during read-only maintenance mode.

File

tests/src/Kernel/ReadonlymodeKernelTest.php, line 39

Class

ReadonlymodeKernelTest
Test the entity validation.

Namespace

Drupal\Tests\readonlymode\Kernel

Code

public function testReadonlyValidation() {
  $existing = $this
    ->createUser();
  $violations = $existing
    ->validate();
  self::assertEquals(0, $violations
    ->count());

  /** @var \Drupal\readonlymode\ReadonlymodeManager $manager */
  $manager = \Drupal::service('readonlymode.manager');
  self::assertFalse($manager
    ->isReadonly());
  $manager
    ->setReadonly(TRUE);
  self::assertTrue($manager
    ->isReadonly());
  $name = $this
    ->randomMachineName();
  $new = User::create([
    'name' => $name,
    'mail' => $name . '@example.com',
    'pass' => \Drupal::service('password_generator')
      ->generate(),
    'status' => 1,
  ]);

  // This warning is configurable, here we test also the token replacement.
  $warning = 'Data not saved. Drupal is currently under maintenance.';
  $violations = $new
    ->validate();
  self::assertEquals(1, $violations
    ->count());
  self::assertEquals($warning, $violations[0]
    ->getMessage());
  $violations = $existing
    ->validate();
  self::assertEquals(1, $violations
    ->count());
  self::assertEquals($warning, $violations[0]
    ->getMessage());
}