random improvements (#5506)

* fix order of destroying form elements
* API documentation - fixes #1949
* make command path independent
* use PhpSubprocess to execute migrations
* allow to configure optional SAML attributes
* fix deprecation
* unify wording of exported state - fixes #5392
This commit is contained in:
Kevin Papst
2025-05-28 13:34:01 +02:00
committed by GitHub
parent 81107377f4
commit 0420eb27c7
19 changed files with 150 additions and 63 deletions

View File

@@ -122,4 +122,36 @@ class SamlProviderTest extends TestCase
$sut = $this->getSamlProvider(null, $user);
$sut->findUser($token);
}
public function testAuthenticateNotThrowsOnOptionalAttribute(): void
{
$mapping = [
'mapping' => [
['saml' => '$Chicken', 'kimai' => 'alias'],
['saml' => '$$Email', 'kimai' => 'title'],
],
'roles' => [
'attribute' => '',
'mapping' => []
]
];
$user = new User();
$user->setAuth(User::AUTH_SAML);
$user->setUserIdentifier('foo1@example.com');
$user->setTitle('I will not be overwritten');
$token = new SamlLoginAttributes();
$token->setUserIdentifier($user->getUserIdentifier());
$token->setAttributes([
'Chicken' => ['foo@example.com'],
]);
$sut = $this->getSamlProvider($mapping, $user);
$tokenUser = $sut->findUser($token);
self::assertSame($user, $tokenUser);
self::assertTrue($tokenUser->isSamlUser());
self::assertEquals('foo@example.com', $tokenUser->getAlias());
self::assertEquals('I will not be overwritten', $tokenUser->getTitle());
}
}