Refactor authentication system (#2602)

Make auth configuration available via UI, remove FOSUserBundle and SAML-Bundle dependency
This commit is contained in:
Kevin Papst
2021-06-10 15:34:13 +02:00
committed by GitHub
parent 286b63e2c8
commit 7f20cb045c
155 changed files with 5590 additions and 1802 deletions

View File

@@ -14,9 +14,12 @@ use App\Entity\User;
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;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @covers \App\Entity\User
@@ -26,6 +29,9 @@ 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());
@@ -34,6 +40,7 @@ class UserTest extends TestCase
self::assertNull($user->getId());
self::assertNull($user->getApiToken());
self::assertNull($user->getPlainApiToken());
self::assertNull($user->getPasswordRequestedAt());
self::assertEquals(User::DEFAULT_LANGUAGE, $user->getLocale());
self::assertFalse($user->hasTeamAssignment());
self::assertFalse($user->canSeeAllData());
@@ -89,6 +96,20 @@ class UserTest extends TestCase
self::assertEquals($date, $user->getRegisteredAt());
}
public function testPasswordRequestedAt()
{
$date = new \DateTime('-60 minutes');
$sut = new User();
self::assertFalse($sut->isPasswordRequestNonExpired(3599));
self::assertNull($sut->getPasswordRequestedAt());
$sut->setPasswordRequestedAt($date);
self::assertEquals($date, $sut->getPasswordRequestedAt());
self::assertFalse($sut->isPasswordRequestNonExpired(3599));
// 10 seconds just to make sure it doesn't expire by accident
self::assertTrue($sut->isPasswordRequestNonExpired(3610));
}
public function testPreferences()
{
$user = new User();
@@ -216,6 +237,12 @@ class UserTest extends TestCase
self::assertFalse($sut->canSeeAllData());
self::assertFalse($sut->isSuperAdmin());
self::assertTrue($sut->isTeamlead());
$sut->setSuperAdmin(true);
self::assertTrue($sut->isSuperAdmin());
$sut->setSuperAdmin(false);
self::assertFalse($sut->isSuperAdmin());
}
/**
@@ -306,4 +333,62 @@ class UserTest extends TestCase
self::assertEquals($item[1], $column->getType());
}
}
public function testEqualsTo()
{
$sut = new User();
$user = new TestUserEntity();
self::assertFalse($sut->isEqualTo($user));
$sut2 = clone $sut;
self::assertTrue($sut->isEqualTo($sut));
self::assertTrue($sut->isEqualTo($sut2));
self::assertTrue($sut2->isEqualTo($sut));
$sut->setPassword('sdfsdfsdfsdf');
self::assertFalse($sut->isEqualTo($sut2));
self::assertFalse($sut2->isEqualTo($sut));
$sut2->setPassword('sdfsdfsdfsdf');
self::assertTrue($sut->isEqualTo($sut2));
self::assertTrue($sut2->isEqualTo($sut));
$sut->setUsername('12345678');
self::assertFalse($sut->isEqualTo($sut2));
self::assertFalse($sut2->isEqualTo($sut));
$sut2->setUsername('12345678');
self::assertTrue($sut->isEqualTo($sut2));
self::assertTrue($sut2->isEqualTo($sut));
}
public function testSerialize()
{
$sut = new User();
$sut->setPassword('ABC-1234567890');
$sut->setUsername('foo-BAR');
$sut->setEmail('hello@world.com');
$sut->setEnabled(false);
$data = serialize($sut);
$expected = [
'foo-BAR',
false,
null,
'hello@world.com',
];
$unserialized = unserialize($data);
$actual = [
$sut->getUsername(),
$sut->isEnabled(),
$sut->getId(),
$sut->getEmail(),
];
self::assertEquals($expected, $actual);
}
}