* * 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:----SpGjtSwTuds3IyyJixIemZMUCXn0iMk3sRUU3sshYh9x36k4LR7e0qbSlHe9s9stjJzEKdKjX4kUPBb2WmfYlwaHRU2dWbbxx12ImOPOhUAb7HktqcKEH3WBRfwU9AHFpmV+kOKuqApCRlqVutjpVGFwp65np776PuXuYihlo6uPMwS2Oc+w2yyuuJfgK0Y4+OOsznANoRLiFEvV1vooUjRAM5yNvGIOtROb3kcmuNgSOoyR7uZooIsZ0z8qybtU7OgP7gTH1qdZn03GKj/o8zZwKWAkzcyiM9hIIy277X/a1MD++fX3K8d3Mzo03KWgw0R/9Zjm/gX3hS+i6IZnRW/L14/3HrSBKV93n8MwI00n+itr6MKUEgOoaceOKdew3GWg/XIV4sWUJsfwkebrip7tmpGrqstXbZm6oXmC0TvJ+VujEN8abcQjZdixhZiE7u4OfvnyAtYtspmuNn76RWvdtL1Xj17SwKnB8Ra5DFjWEZNBVYyDRBQUvVdrwWpF/WNaoHpPcNarXxAPIP1ECGNlz8yyhkJZOvbMHQlvrnSFbUpCJE77b72yr3H+KO2JiY/jc6AdSRqSQC+dcdnPsneD7vdm4tOMNj3WlOyr0txFufvgzW3MUHp1tiQt9WDuenbpUUhkld18LxhjobZDBFxERATnkQHsTHPoXfGEwtg=----ATTACHMENT:----NjkxNTA5NjAwMTYzNTgzMSAzMzQ2NjMyNDkwMTU1MDUwIDQ3MzMwOTk1NjA3MjQ5Mjg=