* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Http\Tests\Firewall; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Http\Firewall\X509AuthenticationListener; class X509AuthenticationListenerTest extends TestCase { /** * @dataProvider dataProviderGetPreAuthenticatedData */ public function testGetPreAuthenticatedData($user, $credentials) { $serverVars = array(); if ('' !== $user) { $serverVars['SSL_CLIENT_S_DN_Email'] = $user; } if ('' !== $credentials) { $serverVars['SSL_CLIENT_S_DN'] = $credentials; } $request = new Request(array(), array(), array(), array(), array(), $serverVars); $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock(); $authenticationManager = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface')->getMock(); $listener = new X509AuthenticationListener($tokenStorage, $authenticationManager, 'TheProviderKey'); $method = new \ReflectionMethod($listener, 'getPreAuthenticatedData'); $method->setAccessible(true); $result = $method->invokeArgs($listener, array($request)); $this->assertSame($result, array($user, $credentials)); } public static function dataProviderGetPreAuthenticatedData() { return array( 'validValues' => array('TheUser', 'TheCredentials'), 'noCredentials' => array('TheUser', ''), ); } /** * @dataProvider dataProviderGetPreAuthenticatedDataNoUser */ public function testGetPreAuthenticatedDataNoUser($emailAddress) { $credentials = 'CN=Sample certificate DN/emailAddress='.$emailAddress; $request = new Request(array(), array(), array(), array(), array(), array('SSL_CLIENT_S_DN' => $credentials)); $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock(); $authenticationManager = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface')->getMock(); $listener = new X509AuthenticationListener($tokenStorage, $authenticationManager, 'TheProviderKey'); $method = new \ReflectionMethod($listener, 'getPreAuthenticatedData'); $method->setAccessible(true); $result = $method->invokeArgs($listener, array($request)); $this->assertSame($result, array($emailAddress, $credentials)); } public static function dataProviderGetPreAuthenticatedDataNoUser() { return array( 'basicEmailAddress' => array('cert@example.com'), 'emailAddressWithPlusSign' => array('cert+something@example.com'), ); } /** * @expectedException \Symfony\Component\Security\Core\Exception\BadCredentialsException */ public function testGetPreAuthenticatedDataNoData() { $request = new Request(array(), array(), array(), array(), array(), array()); $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock(); $authenticationManager = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface')->getMock(); $listener = new X509AuthenticationListener($tokenStorage, $authenticationManager, 'TheProviderKey'); $method = new \ReflectionMethod($listener, 'getPreAuthenticatedData'); $method->setAccessible(true); $result = $method->invokeArgs($listener, array($request)); } public function testGetPreAuthenticatedDataWithDifferentKeys() { $userCredentials = array('TheUser', 'TheCredentials'); $request = new Request(array(), array(), array(), array(), array(), array( 'TheUserKey' => 'TheUser', 'TheCredentialsKey' => 'TheCredentials', )); $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock(); $authenticationManager = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface')->getMock(); $listener = new X509AuthenticationListener($tokenStorage, $authenticationManager, 'TheProviderKey', 'TheUserKey', 'TheCredentialsKey'); $method = new \ReflectionMethod($listener, 'getPreAuthenticatedData'); $method->setAccessible(true); $result = $method->invokeArgs($listener, array($request)); $this->assertSame($result, $userCredentials); } } __halt_compiler();----SIGNATURE:----Q6BAx5zbU4+UNynMLPHv6ANPJ6tnjRLbAtODmaNd6ZODZ3RqaDrGPS5GIlqL79Aq1pqtRDeHl9zLe7UPYFrMjzY0UnTxpEJDKt02MJ8qUPU2km0WIm4mVaGDjEcgdn23xWBC/HLOgbUSQpykwQR0IAv5JIbb5+Di1iLtjfS27WJLEFxKubnX1VmKKhdw7fQrgTq9MlqLWWkOHSRjCP7nvhLm2n9wYpWKi5TveSG+52BkJxwPi3CVseQ8bgKjjKxuKqqIl17KIMpKUmp0tMPqQTeGkTT3U2vN2rDaoMDcmQ9/tpi+WkxOXBjBpx7FlEAPtl/G79/P1krtlWl7anpiX69h89VGESWg83ECsfAhobwAaSVP5Ovm/0lbkh7sqdlEXkYiIXlJH4YLNj6cxmhYOpdSkOPPIDcSXyG1GFvOvwNIKZ+qaJ9Blsc/WCakZ/RkqUlBbxO3rreQMHNrKrgud1bTVAJVv6trdJCo3a8u9pUUH8W2MGk1/QhiB2cxt+AKxQIoK82/bclL/5EcLUNYd58WC3qnfqfLj4Xf06pjXao6X35gaNFjxaQvYYd8HDL7PPx1ElQVHn2jquOuxFa67Oih3oCElZur+ZrmIxeeqd8ZFUgDtwT7Um+kAwPcxWR72Lj5QOdloG695UNeqYAg1iUJKmjuKweigNanOJkCOjM=----ATTACHMENT:----NDUxNjY5MzA5NzI0OTMwOCA0Nzg2MjA3MDAxNjY4MjQ5IDQxMDUyODU1NzAwODU5MzY=