function WriteSafeSessionHandlerTest::testSetSessionWritable

Same name and namespace in other branches
  1. 8.9.x core/tests/Drupal/Tests/Core/Session/WriteSafeSessionHandlerTest.php \Drupal\Tests\Core\Session\WriteSafeSessionHandlerTest::testSetSessionWritable()
  2. 10 core/tests/Drupal/Tests/Core/Session/WriteSafeSessionHandlerTest.php \Drupal\Tests\Core\Session\WriteSafeSessionHandlerTest::testSetSessionWritable()
  3. 11.x core/tests/Drupal/Tests/Core/Session/WriteSafeSessionHandlerTest.php \Drupal\Tests\Core\Session\WriteSafeSessionHandlerTest::testSetSessionWritable()

Tests using setSessionWritable to enable/disable session writing.

@covers ::setSessionWritable @covers ::write

File

core/tests/Drupal/Tests/Core/Session/WriteSafeSessionHandlerTest.php, line 90

Class

WriteSafeSessionHandlerTest
Tests <a href="/api/drupal/core%21lib%21Drupal%21Core%21Session%21WriteSafeSessionHandler.php/class/WriteSafeSessionHandler/9" title="Wraps the session handler to prevent writes when not necessary or allowed." class="local">\Drupal\Core\Session\WriteSafeSessionHandler</a>.

Namespace

Drupal\Tests\Core\Session

Code

public function testSetSessionWritable() {
    $session_id = 'some-id';
    $session_data = 'serialized-session-data';
    $this->assertTrue($this->sessionHandler
        ->isSessionWritable());
    // Disable writing after construction.
    $this->sessionHandler
        ->setSessionWritable(FALSE);
    $this->assertFalse($this->sessionHandler
        ->isSessionWritable());
    $this->sessionHandler = new WriteSafeSessionHandler($this->wrappedSessionHandler, FALSE);
    $this->assertFalse($this->sessionHandler
        ->isSessionWritable());
    $result = $this->sessionHandler
        ->write($session_id, $session_data);
    $this->assertTrue($result);
    // Enable writing again.
    $this->sessionHandler
        ->setSessionWritable(TRUE);
    $this->assertTrue($this->sessionHandler
        ->isSessionWritable());
    // Writing should be enabled, return value passed to the caller by default.
    $this->wrappedSessionHandler
        ->expects($this->exactly(2))
        ->method('write')
        ->with($session_id, $session_data)
        ->willReturnOnConsecutiveCalls(TRUE, FALSE);
    $result = $this->sessionHandler
        ->write($session_id, $session_data);
    $this->assertTrue($result);
    $result = $this->sessionHandler
        ->write($session_id, $session_data);
    $this->assertFalse($result);
}

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