Viewing file: HttpUtilsTest.php (9.38 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * 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;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Exception\MethodNotAllowedException; use Symfony\Component\Routing\Exception\ResourceNotFoundException; use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Http\HttpUtils;
class HttpUtilsTest extends \PHPUnit_Framework_TestCase { public function testCreateRedirectResponseWithPath() { $utils = new HttpUtils($this->getUrlGenerator()); $response = $utils->createRedirectResponse($this->getRequest(), '/foobar');
$this->assertTrue($response->isRedirect('http://localhost/foobar')); $this->assertEquals(302, $response->getStatusCode()); }
public function testCreateRedirectResponseWithAbsoluteUrl() { $utils = new HttpUtils($this->getUrlGenerator()); $response = $utils->createRedirectResponse($this->getRequest(), 'http://symfony.com/');
$this->assertTrue($response->isRedirect('http://symfony.com/')); }
public function testCreateRedirectResponseWithRouteName() { $utils = new HttpUtils($urlGenerator = $this->getMock('Symfony\Component\Routing\Generator\UrlGeneratorInterface'));
$urlGenerator ->expects($this->any()) ->method('generate') ->with('foobar', array(), true) ->will($this->returnValue('http://localhost/foo/bar')) ; $urlGenerator ->expects($this->any()) ->method('getContext') ->will($this->returnValue($this->getMock('Symfony\Component\Routing\RequestContext'))) ;
$response = $utils->createRedirectResponse($this->getRequest(), 'foobar');
$this->assertTrue($response->isRedirect('http://localhost/foo/bar')); }
public function testCreateRequestWithPath() { $request = $this->getRequest(); $request->server->set('Foo', 'bar');
$utils = new HttpUtils($this->getUrlGenerator()); $subRequest = $utils->createRequest($request, '/foobar');
$this->assertEquals('GET', $subRequest->getMethod()); $this->assertEquals('/foobar', $subRequest->getPathInfo()); $this->assertEquals('bar', $subRequest->server->get('Foo')); }
public function testCreateRequestWithRouteName() { $utils = new HttpUtils($urlGenerator = $this->getMock('Symfony\Component\Routing\Generator\UrlGeneratorInterface'));
$urlGenerator ->expects($this->once()) ->method('generate') ->will($this->returnValue('/foo/bar')) ; $urlGenerator ->expects($this->any()) ->method('getContext') ->will($this->returnValue($this->getMock('Symfony\Component\Routing\RequestContext'))) ;
$subRequest = $utils->createRequest($this->getRequest(), 'foobar');
$this->assertEquals('/foo/bar', $subRequest->getPathInfo()); }
public function testCreateRequestWithAbsoluteUrl() { $utils = new HttpUtils($this->getMock('Symfony\Component\Routing\Generator\UrlGeneratorInterface')); $subRequest = $utils->createRequest($this->getRequest(), 'http://symfony.com/');
$this->assertEquals('/', $subRequest->getPathInfo()); }
public function testCreateRequestPassesSessionToTheNewRequest() { $request = $this->getRequest(); $request->setSession($session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface'));
$utils = new HttpUtils($this->getUrlGenerator()); $subRequest = $utils->createRequest($request, '/foobar');
$this->assertSame($session, $subRequest->getSession()); }
/** * @dataProvider provideSecurityContextAttributes */ public function testCreateRequestPassesSecurityContextAttributesToTheNewRequest($attribute) { $request = $this->getRequest(); $request->attributes->set($attribute, 'foo');
$utils = new HttpUtils($this->getUrlGenerator()); $subRequest = $utils->createRequest($request, '/foobar');
$this->assertSame('foo', $subRequest->attributes->get($attribute)); }
public function provideSecurityContextAttributes() { return array( array(SecurityContextInterface::AUTHENTICATION_ERROR), array(SecurityContextInterface::ACCESS_DENIED_ERROR), array(SecurityContextInterface::LAST_USERNAME) ); }
public function testCheckRequestPath() { $utils = new HttpUtils($this->getUrlGenerator());
$this->assertTrue($utils->checkRequestPath($this->getRequest(), '/')); $this->assertFalse($utils->checkRequestPath($this->getRequest(), '/foo')); $this->assertTrue($utils->checkRequestPath($this->getRequest('/foo%20bar'), '/foo bar')); // Plus must not decoded to space $this->assertTrue($utils->checkRequestPath($this->getRequest('/foo+bar'), '/foo+bar')); // Checking unicode $this->assertTrue($utils->checkRequestPath($this->getRequest(urlencode('/вход')), '/вход')); }
public function testCheckRequestPathWithUrlMatcherAndResourceNotFound() { $urlMatcher = $this->getMock('Symfony\Component\Routing\Matcher\UrlMatcherInterface'); $urlMatcher ->expects($this->any()) ->method('match') ->with('/') ->will($this->throwException(new ResourceNotFoundException())) ;
$utils = new HttpUtils(null, $urlMatcher); $this->assertFalse($utils->checkRequestPath($this->getRequest(), 'foobar')); }
public function testCheckRequestPathWithUrlMatcherAndMethodNotAllowed() { $request = $this->getRequest(); $urlMatcher = $this->getMock('Symfony\Component\Routing\Matcher\RequestMatcherInterface'); $urlMatcher ->expects($this->any()) ->method('matchRequest') ->with($request) ->will($this->throwException(new MethodNotAllowedException(array()))) ;
$utils = new HttpUtils(null, $urlMatcher); $this->assertFalse($utils->checkRequestPath($request, 'foobar')); }
public function testCheckRequestPathWithUrlMatcherAndResourceFoundByUrl() { $urlMatcher = $this->getMock('Symfony\Component\Routing\Matcher\UrlMatcherInterface'); $urlMatcher ->expects($this->any()) ->method('match') ->with('/foo/bar') ->will($this->returnValue(array('_route' => 'foobar'))) ;
$utils = new HttpUtils(null, $urlMatcher); $this->assertTrue($utils->checkRequestPath($this->getRequest('/foo/bar'), 'foobar')); }
public function testCheckRequestPathWithUrlMatcherAndResourceFoundByRequest() { $request = $this->getRequest(); $urlMatcher = $this->getMock('Symfony\Component\Routing\Matcher\RequestMatcherInterface'); $urlMatcher ->expects($this->any()) ->method('matchRequest') ->with($request) ->will($this->returnValue(array('_route' => 'foobar'))) ;
$utils = new HttpUtils(null, $urlMatcher); $this->assertTrue($utils->checkRequestPath($request, 'foobar')); }
/** * @expectedException \RuntimeException */ public function testCheckRequestPathWithUrlMatcherLoadingException() { $urlMatcher = $this->getMock('Symfony\Component\Routing\Matcher\UrlMatcherInterface'); $urlMatcher ->expects($this->any()) ->method('match') ->will($this->throwException(new \RuntimeException())) ;
$utils = new HttpUtils(null, $urlMatcher); $utils->checkRequestPath($this->getRequest(), 'foobar'); }
/** * @expectedException \InvalidArgumentException * @expectedExceptionMessage Matcher must either implement UrlMatcherInterface or RequestMatcherInterface */ public function testUrlMatcher() { new HttpUtils($this->getUrlGenerator(), new \stdClass()); }
public function testGenerateUriRemovesQueryString() { $utils = new HttpUtils($this->getUrlGenerator('/foo/bar')); $this->assertEquals('/foo/bar', $utils->generateUri(new Request(), 'route_name'));
$utils = new HttpUtils($this->getUrlGenerator('/foo/bar?param=value')); $this->assertEquals('/foo/bar', $utils->generateUri(new Request(), 'route_name')); }
/** * @expectedException \LogicException * @expectedExceptionMessage You must provide a UrlGeneratorInterface instance to be able to use routes. */ public function testUrlGeneratorIsRequiredToGenerateUrl() { $utils = new HttpUtils(); $utils->generateUri(new Request(), 'route_name'); }
private function getUrlGenerator($generatedUrl = '/foo/bar') { $urlGenerator = $this->getMock('Symfony\Component\Routing\Generator\UrlGeneratorInterface'); $urlGenerator ->expects($this->any()) ->method('generate') ->will($this->returnValue($generatedUrl)) ;
return $urlGenerator; }
private function getRequest($path = '/') { return Request::create($path, 'get'); } }
|