161 lines
5.5 KiB
PHP
161 lines
5.5 KiB
PHP
<?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\Routing\Tests;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\Routing\RequestContext;
|
|
|
|
class RequestContextTest extends TestCase
|
|
{
|
|
public function testConstruct()
|
|
{
|
|
$requestContext = new RequestContext(
|
|
'foo',
|
|
'post',
|
|
'foo.bar',
|
|
'HTTPS',
|
|
8080,
|
|
444,
|
|
'/baz',
|
|
'bar=foobar'
|
|
);
|
|
|
|
$this->assertEquals('foo', $requestContext->getBaseUrl());
|
|
$this->assertEquals('POST', $requestContext->getMethod());
|
|
$this->assertEquals('foo.bar', $requestContext->getHost());
|
|
$this->assertEquals('https', $requestContext->getScheme());
|
|
$this->assertSame(8080, $requestContext->getHttpPort());
|
|
$this->assertSame(444, $requestContext->getHttpsPort());
|
|
$this->assertEquals('/baz', $requestContext->getPathInfo());
|
|
$this->assertEquals('bar=foobar', $requestContext->getQueryString());
|
|
}
|
|
|
|
public function testFromRequest()
|
|
{
|
|
$request = Request::create('https://test.com:444/foo?bar=baz');
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setHttpPort(123);
|
|
$requestContext->fromRequest($request);
|
|
|
|
$this->assertEquals('', $requestContext->getBaseUrl());
|
|
$this->assertEquals('GET', $requestContext->getMethod());
|
|
$this->assertEquals('test.com', $requestContext->getHost());
|
|
$this->assertEquals('https', $requestContext->getScheme());
|
|
$this->assertEquals('/foo', $requestContext->getPathInfo());
|
|
$this->assertEquals('bar=baz', $requestContext->getQueryString());
|
|
$this->assertSame(123, $requestContext->getHttpPort());
|
|
$this->assertSame(444, $requestContext->getHttpsPort());
|
|
|
|
$request = Request::create('http://test.com:8080/foo?bar=baz');
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setHttpsPort(567);
|
|
$requestContext->fromRequest($request);
|
|
|
|
$this->assertSame(8080, $requestContext->getHttpPort());
|
|
$this->assertSame(567, $requestContext->getHttpsPort());
|
|
}
|
|
|
|
public function testGetParameters()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
$this->assertEquals(array(), $requestContext->getParameters());
|
|
|
|
$requestContext->setParameters(array('foo' => 'bar'));
|
|
$this->assertEquals(array('foo' => 'bar'), $requestContext->getParameters());
|
|
}
|
|
|
|
public function testHasParameter()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setParameters(array('foo' => 'bar'));
|
|
|
|
$this->assertTrue($requestContext->hasParameter('foo'));
|
|
$this->assertFalse($requestContext->hasParameter('baz'));
|
|
}
|
|
|
|
public function testGetParameter()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setParameters(array('foo' => 'bar'));
|
|
|
|
$this->assertEquals('bar', $requestContext->getParameter('foo'));
|
|
$this->assertNull($requestContext->getParameter('baz'));
|
|
}
|
|
|
|
public function testSetParameter()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setParameter('foo', 'bar');
|
|
|
|
$this->assertEquals('bar', $requestContext->getParameter('foo'));
|
|
}
|
|
|
|
public function testMethod()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setMethod('post');
|
|
|
|
$this->assertSame('POST', $requestContext->getMethod());
|
|
}
|
|
|
|
public function testScheme()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setScheme('HTTPS');
|
|
|
|
$this->assertSame('https', $requestContext->getScheme());
|
|
}
|
|
|
|
public function testHost()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setHost('eXampLe.com');
|
|
|
|
$this->assertSame('example.com', $requestContext->getHost());
|
|
}
|
|
|
|
public function testQueryString()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setQueryString(null);
|
|
|
|
$this->assertSame('', $requestContext->getQueryString());
|
|
}
|
|
|
|
public function testPort()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
$requestContext->setHttpPort('123');
|
|
$requestContext->setHttpsPort('456');
|
|
|
|
$this->assertSame(123, $requestContext->getHttpPort());
|
|
$this->assertSame(456, $requestContext->getHttpsPort());
|
|
}
|
|
|
|
public function testFluentInterface()
|
|
{
|
|
$requestContext = new RequestContext();
|
|
|
|
$this->assertSame($requestContext, $requestContext->setBaseUrl('/app.php'));
|
|
$this->assertSame($requestContext, $requestContext->setPathInfo('/index'));
|
|
$this->assertSame($requestContext, $requestContext->setMethod('POST'));
|
|
$this->assertSame($requestContext, $requestContext->setScheme('https'));
|
|
$this->assertSame($requestContext, $requestContext->setHost('example.com'));
|
|
$this->assertSame($requestContext, $requestContext->setQueryString('foo=bar'));
|
|
$this->assertSame($requestContext, $requestContext->setHttpPort(80));
|
|
$this->assertSame($requestContext, $requestContext->setHttpsPort(443));
|
|
$this->assertSame($requestContext, $requestContext->setParameters(array()));
|
|
$this->assertSame($requestContext, $requestContext->setParameter('foo', 'bar'));
|
|
}
|
|
}
|