This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/tests/Symfony/Tests/Component/Security/Http/HttpUtilsTest.php

109 lines
3.6 KiB
PHP
Raw Normal View History

<?php
/*
* This file is part of the Symfony framework.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Symfony\Tests\Component\Security\Http;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Http\HttpUtils;
class HttpUtilsTest extends \PHPUnit_Framework_TestCase
{
public function testCreateRedirectResponse()
{
2011-07-05 10:00:08 +01:00
$utils = new HttpUtils($this->getRouter());
// absolute path
$response = $utils->createRedirectResponse($this->getRequest(), '/foobar');
$this->assertTrue($response->isRedirect('http://localhost/foobar'));
$this->assertEquals(302, $response->getStatusCode());
// absolute URL
$response = $utils->createRedirectResponse($this->getRequest(), 'http://symfony.com/');
$this->assertTrue($response->isRedirect('http://symfony.com/'));
// route name
2011-07-05 10:00:08 +01:00
$utils = new HttpUtils($router = $this->getMock('Symfony\Component\Routing\RouterInterface'));
$router
->expects($this->any())
->method('generate')
->with('foobar', array(), true)
->will($this->returnValue('http://localhost/foo/bar'))
;
$response = $utils->createRedirectResponse($this->getRequest(), 'foobar');
}
public function testCreateRequest()
{
2011-07-05 10:00:08 +01:00
$utils = new HttpUtils($this->getRouter());
// absolute path
$request = $this->getRequest();
$request->server->set('Foo', 'bar');
$subRequest = $utils->createRequest($request, '/foobar');
$this->assertEquals('GET', $subRequest->getMethod());
$this->assertEquals('/foobar', $subRequest->getPathInfo());
$this->assertEquals('bar', $subRequest->server->get('Foo'));
// route name
$subRequest = $utils->createRequest($this->getRequest(), 'foobar');
$this->assertEquals('/foo/bar', $subRequest->getPathInfo());
// absolute URL
$subRequest = $utils->createRequest($this->getRequest(), 'http://symfony.com/');
$this->assertEquals('/', $subRequest->getPathInfo());
}
public function testCheckRequestPath()
{
2011-07-05 10:00:08 +01:00
$utils = new HttpUtils($this->getRouter());
$this->assertTrue($utils->checkRequestPath($this->getRequest(), '/'));
$this->assertFalse($utils->checkRequestPath($this->getRequest(), '/foo'));
2011-07-05 10:00:08 +01:00
$router = $this->getMock('Symfony\Component\Routing\RouterInterface');
$router
->expects($this->any())
->method('match')
->will($this->returnValue(array()))
;
$utils = new HttpUtils($router);
$this->assertFalse($utils->checkRequestPath($this->getRequest(), 'foobar'));
2011-07-05 10:00:08 +01:00
$router = $this->getMock('Symfony\Component\Routing\RouterInterface');
$router
->expects($this->any())
->method('match')
->will($this->returnValue(array('_route' => 'foobar')))
;
$utils = new HttpUtils($router);
$this->assertTrue($utils->checkRequestPath($this->getRequest('/foo/bar'), 'foobar'));
}
2011-07-05 10:00:08 +01:00
private function getRouter()
{
2011-07-05 10:00:08 +01:00
$router = $this->getMock('Symfony\Component\Routing\RouterInterface');
$router
->expects($this->any())
->method('generate')
->will($this->returnValue('/foo/bar'))
;
2011-07-05 10:00:08 +01:00
return $router;
}
private function getRequest($path = '/')
{
return Request::create($path, 'get');
}
}