Skip to content

Commit

Permalink
Merge branch '5.1'
Browse files Browse the repository at this point in the history
* 5.1:
  fix forward compatibility with Doctrine DBAL 2.11+
  [SecurityBundle] Fix the session listener registration under the new authentication manager
  allow cursor to be used even when STDIN is not defined
  • Loading branch information
fabpot committed Jun 8, 2020
2 parents bf53b26 + 0b19249 commit 5a74790
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -168,14 +168,6 @@ public function load(array $configs, ContainerBuilder $container)
$container->getDefinition('security.authentication.guard_handler')
->replaceArgument(2, $this->statelessFirewallKeys);

if ($this->authenticatorManagerEnabled) {
foreach ($this->statelessFirewallKeys as $statelessFirewallId) {
$container
->setDefinition('security.listener.session.'.$statelessFirewallId, new ChildDefinition('security.listener.session'))
->addTag('kernel.event_subscriber', ['dispatcher' => 'security.event_dispatcher.'.$statelessFirewallId]);
}
}

if ($config['encoders']) {
$this->createEncoders($config['encoders'], $container);
}
Expand Down Expand Up @@ -373,6 +365,12 @@ private function createFirewall(ContainerBuilder $container, string $id, array $
$contextKey = $firewall['context'] ?? $id;
$listeners[] = new Reference($contextListenerId = $this->createContextListener($container, $contextKey));
$sessionStrategyId = 'security.authentication.session_strategy';

if ($this->authenticatorManagerEnabled) {
$container
->setDefinition('security.listener.session.'.$id, new ChildDefinition('security.listener.session'))
->addTag('kernel.event_subscriber', ['dispatcher' => $firewallEventDispatcherId]);
}
} else {
$this->statelessFirewallKeys[] = $id;
$sessionStrategyId = 'security.authentication.session_strategy_noop';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@
class="Symfony\Component\Security\Http\EventListener\SessionStrategyListener"
abstract="true">
<argument type="service" id="security.authentication.session_strategy" />
<argument type="abstract">stateless firewall keys</argument>
</service>

<service id="security.listener.remember_me"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -559,6 +559,48 @@ public function provideConfigureCustomAuthenticatorData()
];
}

public function testCompilesWithoutSessionListenerWithStatelessFirewallWithAuthenticationManager()
{
$container = $this->getRawContainer();

$firewallId = 'stateless_firewall';
$container->loadFromExtension('security', [
'enable_authenticator_manager' => true,
'firewalls' => [
$firewallId => [
'pattern' => '/.*',
'stateless' => true,
'http_basic' => null,
],
],
]);

$container->compile();

$this->assertFalse($container->has('security.listener.session.'.$firewallId));
}

public function testCompilesWithSessionListenerWithStatefulllFirewallWithAuthenticationManager()
{
$container = $this->getRawContainer();

$firewallId = 'statefull_firewall';
$container->loadFromExtension('security', [
'enable_authenticator_manager' => true,
'firewalls' => [
$firewallId => [
'pattern' => '/.*',
'stateless' => false,
'http_basic' => null,
],
],
]);

$container->compile();

$this->assertTrue($container->has('security.listener.session.'.$firewallId));
}

protected function getRawContainer()
{
$container = new ContainerBuilder();
Expand Down
4 changes: 2 additions & 2 deletions src/Symfony/Component/Console/Cursor.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ final class Cursor
private $output;
private $input;

public function __construct(OutputInterface $output, $input = STDIN)
public function __construct(OutputInterface $output, $input = null)
{
$this->output = $output;
$this->input = $input;
$this->input = $input ?? (\defined('STDIN') ? STDIN : fopen('php://input', 'r+'));
}

public function moveUp(int $lines = 1): self
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@

use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Driver\ResultStatement;
use Doctrine\DBAL\ForwardCompatibility\Driver\ResultStatement as ForwardCompatibleResultStatement;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Query\QueryBuilder;
use Doctrine\DBAL\Schema\AbstractSchemaManager;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Schema\SchemaConfig;
use Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer;
use Doctrine\DBAL\Statement;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Messenger\Bridge\Doctrine\Tests\Fixtures\DummyMessage;
use Symfony\Component\Messenger\Bridge\Doctrine\Transport\Connection;
Expand Down Expand Up @@ -146,14 +146,10 @@ private function getQueryBuilderMock()

private function getStatementMock($expectedResult): ResultStatement
{
$mockedInterface = interface_exists(ForwardCompatibleResultStatement::class)
? ForwardCompatibleResultStatement::class
: ResultStatement::class;

$stmt = $this->createMock($mockedInterface);
$stmt = $this->createMock(Statement::class);

$stmt->expects($this->once())
->method(method_exists($mockedInterface, 'fetchAssociative') ? 'fetchAssociative' : 'fetch')
->method(method_exists(Statement::class, 'fetchAssociative') ? 'fetchAssociative' : 'fetch')
->willReturn($expectedResult);

return $stmt;
Expand Down Expand Up @@ -315,12 +311,9 @@ public function testFindAll()
'headers' => json_encode(['type' => DummyMessage::class]),
];

$mockedInterface = interface_exists(ForwardCompatibleResultStatement::class)
? ForwardCompatibleResultStatement::class
: ResultStatement::class;
$stmt = $this->createMock($mockedInterface);
$stmt = $this->createMock(Statement::class);
$stmt->expects($this->once())
->method(method_exists($mockedInterface, 'fetchAllAssociative') ? 'fetchAllAssociative' : 'fetchAll')
->method(method_exists(Statement::class, 'fetchAllAssociative') ? 'fetchAllAssociative' : 'fetchAll')
->willReturn([$message1, $message2]);

$driverConnection
Expand Down

0 comments on commit 5a74790

Please sign in to comment.