Skip to content

Commit 6c0c716

Browse files
committed
Merge branch '4.2'
* 4.2: update years in license files Fix: Adjust DocBlock \"ParserTest->getParserTestData()\" -> only some more tests access the container getting it from the kernel Replace slave and master by replica and primary Fix erasing cookies issue [Lock] Pedantic improvements for lock [EventDispatcher] Fixed phpdoc on interface update year in license files [VarExporter] fix exporting array indexes [SecurityBundle] Fix traceable voters [Console] Fix help text for single command applications Fix random test failure on lock improve error message when using test client without the BrowserKit component Fixed minor typos in an error message [Event Dispatcher] fixed 29703: TraceableEventDispatcher reset now sets callStack to null with test to dispatch after reset. Fixed minor typos Fix: Method can also return null [Stopwatch] Fixed phpdoc for category name
2 parents d7103f3 + 404bb89 commit 6c0c716

File tree

3 files changed

+17
-22
lines changed

3 files changed

+17
-22
lines changed

DependencyInjection/Compiler/AddSecurityVotersPass.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function process(ContainerBuilder $container)
4444
}
4545

4646
$debug = $container->getParameter('kernel.debug');
47-
47+
$voterServices = array();
4848
foreach ($voters as $voter) {
4949
$voterServiceId = (string) $voter;
5050
$definition = $container->getDefinition($voterServiceId);
@@ -56,17 +56,18 @@ public function process(ContainerBuilder $container)
5656
}
5757

5858
if ($debug) {
59-
// Decorate original voters with TraceableVoter
60-
$debugVoterServiceId = 'debug.security.voter.'.$voterServiceId;
59+
$voterServices[] = new Reference($debugVoterServiceId = 'debug.security.voter.'.$voterServiceId);
60+
6161
$container
6262
->register($debugVoterServiceId, TraceableVoter::class)
63-
->setDecoratedService($voterServiceId)
64-
->addArgument(new Reference($debugVoterServiceId.'.inner'))
63+
->addArgument($voter)
6564
->addArgument(new Reference('event_dispatcher'));
65+
} else {
66+
$voterServices[] = $voter;
6667
}
6768
}
6869

69-
$adm = $container->getDefinition('security.access.decision_manager');
70-
$adm->replaceArgument(0, new IteratorArgument($voters));
70+
$container->getDefinition('security.access.decision_manager')
71+
->replaceArgument(0, new IteratorArgument($voterServices));
7172
}
7273
}

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2004-2018 Fabien Potencier
1+
Copyright (c) 2004-2019 Fabien Potencier
22

33
Permission is hereby granted, free of charge, to any person obtaining a copy
44
of this software and associated documentation files (the "Software"), to deal

Tests/DependencyInjection/Compiler/AddSecurityVotersPassTest.php

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,7 @@ public function testThatSecurityVotersAreProcessedInPriorityOrder()
7272
$this->assertCount(4, $refs);
7373
}
7474

75-
/**
76-
* Test that in debug mode, voters are correctly decorated.
77-
*/
78-
public function testThatVotersAreDecoratedInDebugMode(): void
75+
public function testThatVotersAreTraceableInDebugMode(): void
7976
{
8077
$container = new ContainerBuilder();
8178

@@ -96,21 +93,18 @@ public function testThatVotersAreDecoratedInDebugMode(): void
9693
$compilerPass->process($container);
9794

9895
$def1 = $container->getDefinition('debug.security.voter.voter1');
99-
$this->assertEquals(array('voter1', null, 0), $def1->getDecoratedService(), 'voter1: wrong return from getDecoratedService');
100-
$this->assertEquals(new Reference('debug.security.voter.voter1.inner'), $def1->getArgument(0), 'voter1: wrong decorator argument');
96+
$this->assertNull($def1->getDecoratedService(), 'voter1: should not be decorated');
97+
$this->assertEquals(new Reference('voter1'), $def1->getArgument(0), 'voter1: wrong argument');
10198

10299
$def2 = $container->getDefinition('debug.security.voter.voter2');
103-
$this->assertEquals(array('voter2', null, 0), $def2->getDecoratedService(), 'voter2: wrong return from getDecoratedService');
104-
$this->assertEquals(new Reference('debug.security.voter.voter2.inner'), $def2->getArgument(0), 'voter2: wrong decorator argument');
100+
$this->assertNull($def2->getDecoratedService(), 'voter2: should not be decorated');
101+
$this->assertEquals(new Reference('voter2'), $def2->getArgument(0), 'voter2: wrong argument');
105102

106103
$voters = $container->findTaggedServiceIds('security.voter');
107104
$this->assertCount(2, $voters, 'Incorrect count of voters');
108105
}
109106

110-
/**
111-
* Test that voters are not decorated if the application is not in debug mode.
112-
*/
113-
public function testThatVotersAreNotDecoratedWithoutDebugMode(): void
107+
public function testThatVotersAreNotTraceableWithoutDebugMode(): void
114108
{
115109
$container = new ContainerBuilder();
116110
$container->setParameter('kernel.debug', false);
@@ -130,8 +124,8 @@ public function testThatVotersAreNotDecoratedWithoutDebugMode(): void
130124
$compilerPass = new AddSecurityVotersPass();
131125
$compilerPass->process($container);
132126

133-
$this->assertFalse($container->has('debug.security.voter.voter1'), 'voter1 should not be decorated');
134-
$this->assertFalse($container->has('debug.security.voter.voter2'), 'voter2 should not be decorated');
127+
$this->assertFalse($container->has('debug.security.voter.voter1'), 'voter1 should not be traced');
128+
$this->assertFalse($container->has('debug.security.voter.voter2'), 'voter2 should not be traced');
135129
}
136130

137131
/**

0 commit comments

Comments
 (0)