function StackSessionHandlerIntegrationTest::testRequestWriteInvokesValidateId

Tests a session modify request with a valid session cookie.

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

The trace should include `write` but not include `updateTimestamp` because the session data is modified.

File

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

Class

StackSessionHandlerIntegrationTest
Tests the stacked session handler functionality.

Namespace

Drupal\Tests\system\Functional\Session

Code

public function testRequestWriteInvokesValidateId() : 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 write trace handler again with the session cookie to modify
  // the session data.
  $actual_trace = json_decode($this->drupalGet('session-test/trace-handler', $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",
      "write",
      $sessionId,
    ],
    [
      "BEGIN",
      NULL,
      "write",
      $sessionId,
    ],
    [
      "END",
      NULL,
      "write",
      $sessionId,
    ],
    [
      "END",
      "test_argument",
      "write",
      $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.