Next major version 2 with PHP 8.1, Symfony 6, Tabler UI, 2FA ... (#2902)

This commit is contained in:
Kevin Papst
2022-12-31 21:19:55 +01:00
committed by GitHub
parent 95e06746bd
commit 90a0fd8a22
2164 changed files with 83700 additions and 86426 deletions

View File

@@ -17,7 +17,6 @@ use App\Entity\UserPreference;
use App\Export\Spreadsheet\ColumnDefinition;
use App\Export\Spreadsheet\Extractor\AnnotationExtractor;
use App\Tests\Security\TestUserEntity;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Collections\ArrayCollection;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Security\Core\User\EquatableInterface;
@@ -31,12 +30,10 @@ class UserTest extends TestCase
public function testDefaultValues()
{
$user = new User();
self::assertInstanceOf(\Serializable::class, $user);
self::assertInstanceOf(EquatableInterface::class, $user);
self::assertInstanceOf(UserInterface::class, $user);
$this->assertInstanceOf(ArrayCollection::class, $user->getPreferences());
self::assertNull($user->getTitle());
self::assertNull($user->getDisplayName());
self::assertNull($user->getAvatar());
self::assertNull($user->getAlias());
self::assertNull($user->getId());
@@ -47,10 +44,14 @@ class UserTest extends TestCase
self::assertEquals(User::DEFAULT_LANGUAGE, $user->getLocale());
self::assertFalse($user->hasTeamAssignment());
self::assertFalse($user->canSeeAllData());
self::assertFalse($user->isSmallLayout());
self::assertFalse($user->isExportDecimal());
self::assertFalse($user->isSystemAccount());
self::assertTrue($user->is24Hour());
$user->setUserIdentifier('foo');
self::assertEquals('foo', $user->getUserIdentifier());
self::assertEquals('foo', $user->getDisplayName());
$user->setAlias('BAR');
self::assertEquals('BAR', $user->getDisplayName());
$user->setAvatar('https://www.gravatar.com/avatar/00000000000000000000000000000000?d=retro&f=y');
self::assertEquals('https://www.gravatar.com/avatar/00000000000000000000000000000000?d=retro&f=y', $user->getAvatar());
@@ -83,6 +84,22 @@ class UserTest extends TestCase
self::assertTrue($sut->hasColor());
}
public function testWizards()
{
$sut = new User();
// internal name may not be changed
self::assertNull($sut->getPreferenceValue('__wizards__'));
self::assertFalse($sut->hasSeenWizard('intro'));
$sut->setWizardAsSeen('intro');
self::assertTrue($sut->hasSeenWizard('intro'));
self::assertNotNull($sut->getPreferenceValue('__wizards__'));
$sut->setWizardAsSeen('intro');
self::assertTrue($sut->hasSeenWizard('intro'));
self::assertFalse($sut->hasSeenWizard('profile'));
$sut->setWizardAsSeen('profile');
self::assertTrue($sut->hasSeenWizard('profile'));
}
public function testAuth()
{
$user = new User();
@@ -138,34 +155,21 @@ class UserTest extends TestCase
$user = new User();
self::assertNull($user->getPreference('test'));
self::assertNull($user->getPreferenceValue('test'));
self::assertNull($user->getMetaFieldValue('test'));
self::assertEquals('foo', $user->getPreferenceValue('test', 'foo'));
$preference = new UserPreference();
$preference
->setName('test')
->setValue('foobar');
$preference = new UserPreference('test', 'foobar');
$user->addPreference($preference);
self::assertEquals('foobar', $user->getPreferenceValue('test', 'foo'));
self::assertEquals('foobar', $user->getMetaFieldValue('test'));
self::assertEquals($preference, $user->getPreference('test'));
$user->setPreferenceValue('test', 'Hello World');
self::assertEquals('Hello World', $user->getPreferenceValue('test', 'foo'));
self::assertEquals('Hello World', $user->getMetaFieldValue('test'));
self::assertNull($user->getPreferenceValue('test2'));
self::assertNull($user->getMetaFieldValue('test2'));
$user->setPreferenceValue('test2', 'I like rain');
self::assertEquals('I like rain', $user->getPreferenceValue('test2'));
self::assertEquals('I like rain', $user->getMetaFieldValue('test2'));
$user->setPreferenceValue('theme.layout', 'boxed');
self::assertTrue($user->isSmallLayout());
$user->setPreferenceValue('theme.layout', '12345');
self::assertFalse($user->isSmallLayout());
$user->setPreferenceValue('timesheet.export_decimal', true);
$user->setPreferenceValue('export_decimal', true);
self::assertTrue($user->isExportDecimal());
}
@@ -173,14 +177,30 @@ class UserTest extends TestCase
{
$user = new User();
$user->setUsername('bar');
$user->setUserIdentifier('bar');
self::assertEquals('bar', $user->getDisplayName());
self::assertEquals('bar', $user->getUsername());
self::assertEquals('bar', $user->getUserIdentifier());
self::assertEquals('bar', (string) $user);
$user->setAlias('foo');
self::assertEquals('foo', $user->getAlias());
self::assertEquals('bar', $user->getUsername());
self::assertEquals('bar', $user->getUserIdentifier());
self::assertEquals('foo', $user->getDisplayName());
self::assertEquals('foo', (string) $user);
}
public function testGetUsername()
{
$user = new User();
$user->setUserIdentifier('bar');
self::assertEquals('bar', $user->getDisplayName());
self::assertEquals('bar', $user->getUserIdentifier());
self::assertEquals('bar', (string) $user);
$user->setAlias('foo');
self::assertEquals('foo', $user->getAlias());
self::assertEquals('bar', $user->getUserIdentifier());
self::assertEquals('foo', $user->getDisplayName());
self::assertEquals('foo', (string) $user);
}
@@ -190,9 +210,7 @@ class UserTest extends TestCase
$sut = new User();
self::assertEquals(User::DEFAULT_LANGUAGE, $sut->getLocale());
$language = new UserPreference();
$language->setName(UserPreference::LOCALE);
$language->setValue('fr');
$language = new UserPreference(UserPreference::LOCALE, 'fr');
$sut->addPreference($language);
self::assertEquals('fr', $sut->getLocale());
@@ -202,7 +220,7 @@ class UserTest extends TestCase
{
$sut = new User();
$user = new User();
$team = new Team();
$team = new Team('foo');
self::assertEmpty($sut->getTeams());
self::assertEmpty($team->getUsers());
@@ -223,10 +241,10 @@ class UserTest extends TestCase
self::assertFalse($sut->isTeamleadOf($team));
self::assertTrue($sut->isInTeam($team));
$team2 = new Team();
$team2 = new Team('foo');
self::assertFalse($sut->isInTeam($team2));
self::assertFalse($sut->isTeamleadOf($team2));
$team2->setTeamLead($sut);
$team2->addTeamLead($sut);
self::assertTrue($sut->isTeamleadOf($team2));
self::assertTrue($sut->isInTeam($team2));
@@ -305,10 +323,7 @@ class UserTest extends TestCase
// lets keep it, as it occured during the work on SAML authentication
$sut = new User();
$preference = new UserPreference();
$preference
->setName('test')
->setValue('foobar');
$preference = new UserPreference('test', 'foobar');
$property = new \ReflectionProperty(User::class, 'preferences');
$property->setAccessible(true);
@@ -330,28 +345,38 @@ class UserTest extends TestCase
self::assertFalse($sut->initCanSeeAllData(true));
}
public function testSystemAccount()
{
$sut = new User();
self::assertFalse($sut->isSystemAccount());
$sut->setSystemAccount(true);
self::assertTrue($sut->isSystemAccount());
$sut->setSystemAccount(false);
self::assertFalse($sut->isSystemAccount());
}
public function testExportAnnotations()
{
$sut = new AnnotationExtractor(new AnnotationReader());
$sut = new AnnotationExtractor();
$columns = $sut->extract(User::class);
self::assertIsArray($columns);
$expected = [
['label.id', 'integer'],
['label.username', 'string'],
['label.alias', 'string'],
['label.title', 'string'],
['label.email', 'string'],
['label.lastLogin', 'datetime'],
['label.language', 'string'],
['label.timezone', 'string'],
['label.active', 'boolean'],
['id', 'integer'],
['username', 'string'],
['alias', 'string'],
['title', 'string'],
['email', 'string'],
['lastLogin', 'datetime'],
['language', 'string'],
['timezone', 'string'],
['active', 'boolean'],
['profile.registration_date', 'datetime'],
['label.roles', 'array'],
['label.color', 'string'],
['label.account_number', 'string'],
['roles', 'array'],
['color', 'string'],
['account_number', 'string'],
];
self::assertCount(\count($expected), $columns);
@@ -372,6 +397,7 @@ class UserTest extends TestCase
public function testEqualsTo()
{
$sut = new User();
$sut->setUserIdentifier('foo');
$user = new TestUserEntity();
self::assertFalse($sut->isEqualTo($user));
@@ -389,11 +415,11 @@ class UserTest extends TestCase
self::assertTrue($sut->isEqualTo($sut2));
self::assertTrue($sut2->isEqualTo($sut));
$sut->setUsername('12345678');
$sut->setUserIdentifier('12345678');
self::assertFalse($sut->isEqualTo($sut2));
self::assertFalse($sut2->isEqualTo($sut));
$sut2->setUsername('12345678');
$sut2->setUserIdentifier('12345678');
self::assertTrue($sut->isEqualTo($sut2));
self::assertTrue($sut2->isEqualTo($sut));
}
@@ -402,7 +428,7 @@ class UserTest extends TestCase
{
$sut = new User();
$sut->setPassword('ABC-1234567890');
$sut->setUsername('foo-BAR');
$sut->setUserIdentifier('foo-BAR');
$sut->setEmail('hello@world.com');
$sut->setEnabled(false);
@@ -415,10 +441,11 @@ class UserTest extends TestCase
'hello@world.com',
];
/** @var User $unserialized */
$unserialized = unserialize($data);
$actual = [
$unserialized->getUsername(),
$unserialized->getUserIdentifier(),
$unserialized->isEnabled(),
$unserialized->getId(),
$unserialized->getEmail(),
@@ -429,8 +456,7 @@ class UserTest extends TestCase
public function testTeamMemberships()
{
$team = new Team();
$team->setName('Foo');
$team = new Team('Foo');
$member = new TeamMember();
$member->setTeam($team);
@@ -475,7 +501,7 @@ class UserTest extends TestCase
self::assertCount(1, $sut->getMemberships());
self::assertSame($sut, $member21->getUser());
$sut->addTeam(new Team());
$sut->addTeam(new Team('foo'));
self::assertCount(2, $sut->getTeams());
self::assertCount(2, $sut->getMemberships());
@@ -491,15 +517,4 @@ class UserTest extends TestCase
$member->setUser(new User());
$sut->addMembership($member);
}
public function test24Hour()
{
$user = new User();
self::assertTrue($user->is24Hour());
self::assertEquals('H:i', $user->getTimeFormat());
$user->setPreferenceValue(UserPreference::HOUR_24, false);
self::assertFalse($user->is24Hour());
self::assertEquals('h:i A', $user->getTimeFormat());
}
}