‪TYPO3CMS  ‪main
FrontendUserRepositoryTest.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\Functional\FunctionalTestCase;
25 
26 final class ‪FrontendUserRepositoryTest extends FunctionalTestCase
27 {
28  protected array ‪$coreExtensionsToLoad = ['felogin'];
29 
30  protected function ‪setUp(): void
31  {
32  parent::setUp();
33  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/fe_users.csv');
34  }
35 
36  #[Test]
37  public function ‪findUserByUsernameOrEmailOnPages(): void
38  {
39  $subject = new ‪FrontendUserRepository(new ‪Context(), new ‪ConnectionPool());
40  self::assertNull($subject->findUserByUsernameOrEmailOnPages(''));
41  self::assertNull($subject->findUserByUsernameOrEmailOnPages('non-existent-email-or-username'));
42  self::assertNull($subject->findUserByUsernameOrEmailOnPages('user-with-username-without-email'));
43  self::assertNull($subject->findUserByUsernameOrEmailOnPages('foobar', [99]));
44  $userByUsername = $subject->findUserByUsernameOrEmailOnPages('foobar');
45  self::assertSame(1, $userByUsername['uid'] ?? 0);
46  $userByEmail = $subject->findUserByUsernameOrEmailOnPages('foo@bar.baz');
47  self::assertSame(1, $userByEmail['uid'] ?? 0);
48  }
49 
50  #[Test]
51  public function ‪existsUserWithHash(): void
52  {
53  $subject = new ‪FrontendUserRepository(new ‪Context(), new ‪ConnectionPool());
54  self::assertFalse($subject->existsUserWithHash('non-existent-hash'));
55  self::assertTrue($subject->existsUserWithHash('cf8edd6fa435b4a9fcbb953f81bd84f2'));
56  }
57 
58  #[Test]
59  public function ‪findOneByForgotPasswordHash(): void
60  {
61  $subject = new ‪FrontendUserRepository(new ‪Context(), new ‪ConnectionPool());
62  self::assertNull($subject->findOneByForgotPasswordHash(''));
63  self::assertNull($subject->findOneByForgotPasswordHash('non-existent-hash'));
64  self::assertIsArray($subject->findOneByForgotPasswordHash('cf8edd6fa435b4a9fcbb953f81bd84f2'));
65  }
66 
67  #[Test]
68  public function ‪findRedirectIdPageByUserId(): void
69  {
70  $subject = new ‪FrontendUserRepository(new ‪Context(), new ‪ConnectionPool());
71  self::assertNull($subject->findRedirectIdPageByUserId(99));
72  self::assertSame(10, $subject->findRedirectIdPageByUserId(1));
73  }
74 
75  #[Test]
76  public function ‪updateForgotHashForUserByUid(): void
77  {
78  ‪$uid = 1;
79  $newPasswordHash = 'new-hash';
80  $subject = new ‪FrontendUserRepository(new ‪Context(), new ‪ConnectionPool());
81  $subject->updateForgotHashForUserByUid(‪$uid, $newPasswordHash);
82  $queryBuilder = $this->getConnectionPool()->getConnectionForTable('fe_users')->createQueryBuilder();
83  $result = $queryBuilder
84  ->select('felogin_forgotHash')
85  ->from('fe_users')
86  ->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter(‪$uid)))
87  ->executeQuery()
88  ->fetchOne();
89  self::assertSame($newPasswordHash, $result);
90  }
91 
92  #[Test]
93  public function ‪updatePasswordAndInvalidateHash(): void
94  {
95  $subject = new ‪FrontendUserRepository(new ‪Context(), new ‪ConnectionPool());
96  $subject->updatePasswordAndInvalidateHash('cf8edd6fa435b4a9fcbb953f81bd84f2', 'new-password');
97  $queryBuilder = $this->getConnectionPool()->getConnectionForTable('fe_users')->createQueryBuilder();
98  $user = $queryBuilder
99  ->select('*')
100  ->from('fe_users')
101  ->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter(1)))
102  ->executeQuery()
103  ->fetchAssociative();
104  self::assertSame('new-password', $user['password']);
105  self::assertSame('', $user['felogin_forgotHash']);
106  }
107 }
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository\FrontendUserRepositoryTest\updatePasswordAndInvalidateHash
‪updatePasswordAndInvalidateHash()
Definition: FrontendUserRepositoryTest.php:93
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository\FrontendUserRepositoryTest\$coreExtensionsToLoad
‪array $coreExtensionsToLoad
Definition: FrontendUserRepositoryTest.php:28
‪TYPO3\CMS\FrontendLogin\Domain\Repository\FrontendUserRepository
Definition: FrontendUserRepository.php:28
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository\FrontendUserRepositoryTest\findOneByForgotPasswordHash
‪findOneByForgotPasswordHash()
Definition: FrontendUserRepositoryTest.php:59
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository\FrontendUserRepositoryTest\existsUserWithHash
‪existsUserWithHash()
Definition: FrontendUserRepositoryTest.php:51
‪TYPO3\CMS\Core\Context\Context
Definition: Context.php:54
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository\FrontendUserRepositoryTest
Definition: FrontendUserRepositoryTest.php:27
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository\FrontendUserRepositoryTest\findRedirectIdPageByUserId
‪findRedirectIdPageByUserId()
Definition: FrontendUserRepositoryTest.php:68
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository\FrontendUserRepositoryTest\setUp
‪setUp()
Definition: FrontendUserRepositoryTest.php:30
‪TYPO3\CMS\Webhooks\Message\$uid
‪identifier readonly int $uid
Definition: PageModificationMessage.php:35
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository
Definition: FrontendUserGroupRepositoryTest.php:18
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository\FrontendUserRepositoryTest\updateForgotHashForUserByUid
‪updateForgotHashForUserByUid()
Definition: FrontendUserRepositoryTest.php:76
‪TYPO3\CMS\FrontendLogin\Tests\Functional\Domain\Repository\FrontendUserRepositoryTest\findUserByUsernameOrEmailOnPages
‪findUserByUsernameOrEmailOnPages()
Definition: FrontendUserRepositoryTest.php:37