‪TYPO3CMS  ‪main
UserSessionTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
24 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
25 
26 final class ‪UserSessionTest extends UnitTestCase
27 {
28  use ‪JwtTrait;
29 
30  #[Test]
31  public function ‪createFromRecordTest(): void
32  {
33  ‪$record = [
34  'ses_id' => '12345abcdf',
35  'ses_data' => serialize(['some' => 'data', 'backuserid' => 1]),
36  'ses_userid' => 0,
37  'ses_iplock' => '[DISABLED]',
38  'ses_tstamp' => 1607041477,
39  'ses_permanent' => 1,
40  ];
41  $scope = new ‪CookieScope(domain: 'example.com', hostOnly: true, path: '/');
42 
43  $session = ‪UserSession::createFromRecord(‪$record['ses_id'], ‪$record, true);
44 
45  self::assertEquals(‪$record['ses_id'], $session->getIdentifier());
46  self::assertNull($session->getUserId());
47  self::assertTrue($session->isAnonymous());
48  self::assertEquals(‪$record['ses_tstamp'], $session->getLastUpdated());
49  self::assertEquals(‪$record['ses_iplock'], $session->getIpLock());
50  self::assertTrue($session->isNew());
51  self::assertTrue($session->isPermanent());
52  self::assertTrue($session->needsUpdate());
53  self::assertEquals(‪$record, $session->toArray());
54 
55  $session->set('new', 'value');
56 
57  self::assertTrue($session->hasData());
58  self::assertEquals(1, $session->get('backuserid'));
59  self::assertEquals(['some' => 'data', 'backuserid' => 1, 'new' => 'value'], $session->getData());
60 
61  $session->overrideData(['override' => 'data']);
62 
63  self::assertTrue($session->dataWasUpdated());
64  self::assertEquals(['override' => 'data'], $session->getData());
65  self::assertSame(‪$record['ses_id'], ‪UserSession::resolveIdentifierFromJwt($session->getJwt($scope), $scope) ?? '');
66  }
67 
68  #[Test]
69  public function ‪createNonFixated(): void
70  {
71  $session = ‪UserSession::createNonFixated('fdcba54321');
72 
73  self::assertEquals('fdcba54321', $session->getIdentifier());
74  self::assertEmpty($session->getIpLock());
75  self::assertEquals(‪$GLOBALS['EXEC_TIME'], $session->getLastUpdated());
76  self::assertNull($session->getUserId());
77  self::assertFalse($session->hasData());
78  self::assertFalse($session->isPermanent());
79  self::assertFalse($session->needsUpdate());
80  self::assertFalse($session->dataWasUpdated());
81  self::assertTrue($session->isNew());
82  self::assertTrue($session->isAnonymous());
83  self::assertEquals(
84  [
85  'ses_id' => 'fdcba54321',
86  'ses_data' => 'a:0:{}',
87  'ses_userid' => 0,
88  'ses_iplock' => '',
89  'ses_tstamp' => ‪$GLOBALS['EXEC_TIME'],
90  ],
91  $session->toArray()
92  );
93  }
94 }
‪TYPO3\CMS\Core\Tests\Unit\Session\UserSessionTest\createNonFixated
‪createNonFixated()
Definition: UserSessionTest.php:68
‪TYPO3\CMS\Core\Tests\Unit\Session
‪TYPO3\CMS\Core\Session\UserSession\createNonFixated
‪static createNonFixated(string $identifier)
Definition: UserSession.php:243
‪TYPO3\CMS\Core\Security\JwtTrait
Definition: JwtTrait.php:32
‪TYPO3\CMS\Core\Session\UserSession
Definition: UserSession.php:45
‪TYPO3\CMS\Core\Session\UserSession\createFromRecord
‪static createFromRecord(string $id, array $record, bool $markAsNew=false)
Definition: UserSession.php:223
‪TYPO3\CMS\Core\Session\UserSession\resolveIdentifierFromJwt
‪static non empty string null resolveIdentifierFromJwt(string $cookieValue, CookieScope $scope)
Definition: UserSession.php:261
‪TYPO3\CMS\Webhooks\Message\$record
‪identifier readonly int readonly array $record
Definition: PageModificationMessage.php:36
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Tests\Unit\Session\UserSessionTest\createFromRecordTest
‪createFromRecordTest()
Definition: UserSessionTest.php:30
‪TYPO3\CMS\Core\Tests\Unit\Session\UserSessionTest
Definition: UserSessionTest.php:27