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

@@ -10,21 +10,26 @@
namespace App\Tests\Configuration;
use App\Configuration\LdapConfiguration;
use App\Configuration\SystemConfiguration;
use PHPUnit\Framework\TestCase;
/**
* @covers \App\Configuration\LdapConfiguration
* @covers \App\Configuration\SystemConfiguration
*/
class LdapConfigurationTest extends TestCase
{
protected function getSut(array $settings)
{
return new LdapConfiguration($settings);
$systemConfig = new SystemConfiguration(new TestConfigLoader([]), ['ldap' => $settings]);
return new LdapConfiguration($systemConfig);
}
protected function getDefaultSettings()
{
return [
'activate' => true,
'connection' => [
'host' => '1.2.3.4',
],
@@ -37,9 +42,19 @@ class LdapConfigurationTest extends TestCase
];
}
public function testDefault()
{
$sut = $this->getSut([]);
$this->assertFalse($sut->isActivated());
$this->assertEquals([], $sut->getUserParameters());
$this->assertEquals([], $sut->getRoleParameters());
$this->assertEquals([], $sut->getConnectionParameters());
}
public function testMapping()
{
$sut = $this->getSut($this->getDefaultSettings());
$this->assertTrue($sut->isActivated());
$this->assertEquals(['foo' => 'bar'], $sut->getUserParameters());
$this->assertEquals(['bar' => 'foo'], $sut->getRoleParameters());
$this->assertEquals(['host' => '1.2.3.4'], $sut->getConnectionParameters());

View File

@@ -0,0 +1,80 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Tests\Configuration;
use App\Configuration\SamlConfiguration;
use App\Configuration\SystemConfiguration;
use PHPUnit\Framework\TestCase;
/**
* @covers \App\Configuration\SamlConfiguration
* @covers \App\Configuration\SystemConfiguration
*/
class SamlConfigurationTest extends TestCase
{
protected function getSut(array $settings)
{
$systemConfig = new SystemConfiguration(new TestConfigLoader([]), ['saml' => $settings]);
return new SamlConfiguration($systemConfig);
}
protected function getDefaultSettings()
{
return [
'activate' => true,
'title' => 'SAML title',
'connection' => [
'host' => '1.2.3.4',
],
'mapping' => [
['saml' => '$Email', 'kimai' => 'email'],
['saml' => '$FirstName $LastName', 'kimai' => 'alias'],
],
'roles' => [
'attribute' => 'Roles',
'mapping' => [
['saml' => 'Kimai - Admin', 'kimai' => 'ROLE_SUPER_ADMIN'],
['saml' => 'Management', 'kimai' => 'ROLE_TEAMLEAD'],
]
],
];
}
public function testDefault()
{
$sut = $this->getSut([]);
$this->assertFalse($sut->isActivated());
$this->assertEquals('', $sut->getTitle());
$this->assertEquals([], $sut->getConnection());
$this->assertEquals([], $sut->getRolesMapping());
$this->assertEquals('', $sut->getRolesAttribute());
$this->assertEquals([], $sut->getAttributeMapping());
}
public function testDefaultSettings()
{
$sut = $this->getSut($this->getDefaultSettings());
$this->assertTrue($sut->isActivated());
$this->assertEquals('SAML title', $sut->getTitle());
$this->assertEquals([
'host' => '1.2.3.4',
], $sut->getConnection());
$this->assertEquals([
['saml' => 'Kimai - Admin', 'kimai' => 'ROLE_SUPER_ADMIN'],
['saml' => 'Management', 'kimai' => 'ROLE_TEAMLEAD'],
], $sut->getRolesMapping());
$this->assertEquals('Roles', $sut->getRolesAttribute());
$this->assertEquals([
['saml' => '$Email', 'kimai' => 'email'],
['saml' => '$FirstName $LastName', 'kimai' => 'alias'],
], $sut->getAttributeMapping());
}
}

View File

@@ -19,6 +19,9 @@ class TestConfigLoader implements ConfigLoaderInterface
{
private $configs = [];
/**
* @param Configuration[] $configs
*/
public function __construct(array $configs)
{
$this->configs = $configs;