0
0
mirror of https://github.com/kevinpapst/kimai2.git synced 2024-10-31 06:08:11 +00:00
kevinpapst_kimai2/tests/Mocks/Saml/SamlAuthFactoryFactory.php

97 lines
3.8 KiB
PHP

<?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\Mocks\Saml;
use App\Configuration\SamlConfiguration;
use App\Saml\SamlAuthFactory;
use App\Tests\Configuration\TestConfigLoader;
use App\Tests\Mocks\AbstractMockFactory;
use App\Tests\Mocks\SystemConfigurationFactory;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
class SamlAuthFactoryFactory extends AbstractMockFactory
{
public function create(?array $connection = null, bool $fromTrustedProxy = false): SamlAuthFactory
{
if (null === $connection) {
$connection = [
'idp' => [
'entityId' => 'https://accounts.google.com/o/saml2?idpid=',
'singleSignOnService' => [
'url' => 'https://accounts.google.com/o/saml2/idp?idpid=',
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
],
'x509cert' => 'asdf',
],
'sp' => [
'entityId' => 'https://127.0.0.1:8010/auth/saml/metadata',
'assertionConsumerService' => [
'url' => 'https://127.0.0.1:8010/auth/saml/acs',
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
],
'singleLogoutService' => [
'url' => 'https://127.0.0.1:8010/auth/saml/logout',
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
],
'privateKey' => ''
],
'strict' => true,
'debug' => true,
'security' => [
'nameIdEncrypted' => false,
'authnRequestsSigned' => false,
'logoutRequestSigned' => false,
'logoutResponseSigned' => false,
'wantMessagesSigned' => false,
'wantAssertionsSigned' => false,
'wantNameIdEncrypted' => false,
'requestedAuthnContext' => true,
'signMetadata' => false,
'wantXMLValidation' => true,
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmlenc#sha256',
],
'contactPerson' => [
'technical' => [
'givenName' => 'Kimai Admin',
'emailAddress' => 'kimai-tech@example.com',
],
'support' => [
'givenName' => 'Kimai Support',
'emailAddress' => 'kimai-support@example.com',
]
],
'organization' => [
'en' => [
'name' => 'Kimai',
'displayname' => 'Kimai',
'url' => 'https://www.kimai.org',
]
]
];
}
$mock = $this->getMockBuilder(Request::class)->getMock();
$mock->method('isFromTrustedProxy')->willReturn($fromTrustedProxy);
/** @var Request $request */
$request = $mock;
$requestStack = new RequestStack();
$requestStack->push($request);
$configuration = SystemConfigurationFactory::create(new TestConfigLoader([]), [
'saml' => ['connection' => $connection]
]);
return new SamlAuthFactory($requestStack, new SamlConfiguration($configuration));
}
}