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.