function StackSessionHandlerIntegrationTest::testRequestWriteInvokesUpdateTimestamp

Tests a session rewrite-unmodified request with a valid session cookie.

The trace should include `validateId` because a session cookie is included.

The trace should include `updateTimestamp` but not include `write` because the session data is rewritten without modification and `session.lazy_write` is enabled.

File

core/modules/system/tests/src/Functional/Session/StackSessionHandlerIntegrationTest.php, line 111

Class

StackSessionHandlerIntegrationTest
Tests the stacked session handler functionality.

Namespace

Drupal\Tests\system\Functional\Session

Code

public function testRequestWriteInvokesUpdateTimestamp() : void {
  $options['query'][MainContentViewSubscriber::WRAPPER_FORMAT] = 'drupal_ajax';
  $headers = [
    'X-Requested-With' => 'XMLHttpRequest',
  ];
  // Call the write trace handler to store the trace and retrieve a session
  // cookie.
  $this->drupalGet('session-test/trace-handler');
  // Call the rewrite-unmodified trace handler with the session cookie.
  $actual_trace = json_decode($this->drupalGet('session-test/trace-handler-rewrite-unmodified', $options, $headers));
  $sessionId = $this->getSessionCookies()
    ->getCookieByName($this->getSessionName())
    ->getValue();
  $expect_trace = [
    [
      "BEGIN",
      "test_argument",
      "open",
    ],
    [
      "BEGIN",
      NULL,
      "open",
    ],
    [
      "END",
      NULL,
      "open",
    ],
    [
      "END",
      "test_argument",
      "open",
    ],
    [
      "BEGIN",
      "test_argument",
      "validateId",
      $sessionId,
    ],
    [
      "BEGIN",
      NULL,
      "validateId",
      $sessionId,
    ],
    [
      "END",
      NULL,
      "validateId",
      $sessionId,
    ],
    [
      "END",
      "test_argument",
      "validateId",
      $sessionId,
    ],
    [
      "BEGIN",
      "test_argument",
      "read",
      $sessionId,
    ],
    [
      "BEGIN",
      NULL,
      "read",
      $sessionId,
    ],
    [
      "END",
      NULL,
      "read",
      $sessionId,
    ],
    [
      "END",
      "test_argument",
      "read",
      $sessionId,
    ],
    [
      "BEGIN",
      "test_argument",
      "updateTimestamp",
      $sessionId,
    ],
    [
      "BEGIN",
      NULL,
      "updateTimestamp",
      $sessionId,
    ],
    [
      "END",
      NULL,
      "updateTimestamp",
      $sessionId,
    ],
    [
      "END",
      "test_argument",
      "updateTimestamp",
      $sessionId,
    ],
    [
      "BEGIN",
      "test_argument",
      "close",
    ],
    [
      "BEGIN",
      NULL,
      "close",
    ],
    [
      "END",
      NULL,
      "close",
    ],
    [
      "END",
      "test_argument",
      "close",
    ],
  ];
  $this->assertEquals($expect_trace, $actual_trace);
}

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