You are here

public function LockFunctionalTest::testPersistentLock in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/system/tests/src/Functional/Lock/LockFunctionalTest.php \Drupal\Tests\system\Functional\Lock\LockFunctionalTest::testPersistentLock()
  2. 9 core/modules/system/tests/src/Functional/Lock/LockFunctionalTest.php \Drupal\Tests\system\Functional\Lock\LockFunctionalTest::testPersistentLock()

Tests that the persistent lock is persisted between requests.

File

core/modules/system/tests/src/Functional/Lock/LockFunctionalTest.php, line 66

Class

LockFunctionalTest
Confirm locking works between two separate requests.

Namespace

Drupal\Tests\system\Functional\Lock

Code

public function testPersistentLock() {
  $persistent_lock = $this->container
    ->get('lock.persistent');

  // Get a persistent lock.
  $this
    ->drupalGet('system-test/lock-persist/lock1');
  $this
    ->assertSession()
    ->pageTextContains('TRUE: Lock successfully acquired in SystemTestController::lockPersist()');

  // Ensure that a shutdown function has not released the lock.
  $this
    ->assertFalse($persistent_lock
    ->lockMayBeAvailable('lock1'));
  $this
    ->drupalGet('system-test/lock-persist/lock1');
  $this
    ->assertSession()
    ->pageTextContains('FALSE: Lock not acquired in SystemTestController::lockPersist()');

  // Get another persistent lock.
  $this
    ->drupalGet('system-test/lock-persist/lock2');
  $this
    ->assertSession()
    ->pageTextContains('TRUE: Lock successfully acquired in SystemTestController::lockPersist()');
  $this
    ->assertFalse($persistent_lock
    ->lockMayBeAvailable('lock2'));

  // Release the first lock and try getting it again.
  $persistent_lock
    ->release('lock1');
  $this
    ->drupalGet('system-test/lock-persist/lock1');
  $this
    ->assertSession()
    ->pageTextContains('TRUE: Lock successfully acquired in SystemTestController::lockPersist()');
}