4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Routing\Tests;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\HttpFoundation\Request;
16 use Symfony\Component\Routing\RequestContext;
18 class RequestContextTest extends TestCase
20 public function testConstruct()
22 $requestContext = new RequestContext(
33 $this->assertEquals('foo', $requestContext->getBaseUrl());
34 $this->assertEquals('POST', $requestContext->getMethod());
35 $this->assertEquals('foo.bar', $requestContext->getHost());
36 $this->assertEquals('https', $requestContext->getScheme());
37 $this->assertSame(8080, $requestContext->getHttpPort());
38 $this->assertSame(444, $requestContext->getHttpsPort());
39 $this->assertEquals('/baz', $requestContext->getPathInfo());
40 $this->assertEquals('bar=foobar', $requestContext->getQueryString());
43 public function testFromRequest()
45 $request = Request::create('https://test.com:444/foo?bar=baz');
46 $requestContext = new RequestContext();
47 $requestContext->setHttpPort(123);
48 $requestContext->fromRequest($request);
50 $this->assertEquals('', $requestContext->getBaseUrl());
51 $this->assertEquals('GET', $requestContext->getMethod());
52 $this->assertEquals('test.com', $requestContext->getHost());
53 $this->assertEquals('https', $requestContext->getScheme());
54 $this->assertEquals('/foo', $requestContext->getPathInfo());
55 $this->assertEquals('bar=baz', $requestContext->getQueryString());
56 $this->assertSame(123, $requestContext->getHttpPort());
57 $this->assertSame(444, $requestContext->getHttpsPort());
59 $request = Request::create('http://test.com:8080/foo?bar=baz');
60 $requestContext = new RequestContext();
61 $requestContext->setHttpsPort(567);
62 $requestContext->fromRequest($request);
64 $this->assertSame(8080, $requestContext->getHttpPort());
65 $this->assertSame(567, $requestContext->getHttpsPort());
68 public function testGetParameters()
70 $requestContext = new RequestContext();
71 $this->assertEquals(array(), $requestContext->getParameters());
73 $requestContext->setParameters(array('foo' => 'bar'));
74 $this->assertEquals(array('foo' => 'bar'), $requestContext->getParameters());
77 public function testHasParameter()
79 $requestContext = new RequestContext();
80 $requestContext->setParameters(array('foo' => 'bar'));
82 $this->assertTrue($requestContext->hasParameter('foo'));
83 $this->assertFalse($requestContext->hasParameter('baz'));
86 public function testGetParameter()
88 $requestContext = new RequestContext();
89 $requestContext->setParameters(array('foo' => 'bar'));
91 $this->assertEquals('bar', $requestContext->getParameter('foo'));
92 $this->assertNull($requestContext->getParameter('baz'));
95 public function testSetParameter()
97 $requestContext = new RequestContext();
98 $requestContext->setParameter('foo', 'bar');
100 $this->assertEquals('bar', $requestContext->getParameter('foo'));
103 public function testMethod()
105 $requestContext = new RequestContext();
106 $requestContext->setMethod('post');
108 $this->assertSame('POST', $requestContext->getMethod());
111 public function testScheme()
113 $requestContext = new RequestContext();
114 $requestContext->setScheme('HTTPS');
116 $this->assertSame('https', $requestContext->getScheme());
119 public function testHost()
121 $requestContext = new RequestContext();
122 $requestContext->setHost('eXampLe.com');
124 $this->assertSame('example.com', $requestContext->getHost());
127 public function testQueryString()
129 $requestContext = new RequestContext();
130 $requestContext->setQueryString(null);
132 $this->assertSame('', $requestContext->getQueryString());
135 public function testPort()
137 $requestContext = new RequestContext();
138 $requestContext->setHttpPort('123');
139 $requestContext->setHttpsPort('456');
141 $this->assertSame(123, $requestContext->getHttpPort());
142 $this->assertSame(456, $requestContext->getHttpsPort());
145 public function testFluentInterface()
147 $requestContext = new RequestContext();
149 $this->assertSame($requestContext, $requestContext->setBaseUrl('/app.php'));
150 $this->assertSame($requestContext, $requestContext->setPathInfo('/index'));
151 $this->assertSame($requestContext, $requestContext->setMethod('POST'));
152 $this->assertSame($requestContext, $requestContext->setScheme('https'));
153 $this->assertSame($requestContext, $requestContext->setHost('example.com'));
154 $this->assertSame($requestContext, $requestContext->setQueryString('foo=bar'));
155 $this->assertSame($requestContext, $requestContext->setHttpPort(80));
156 $this->assertSame($requestContext, $requestContext->setHttpsPort(443));
157 $this->assertSame($requestContext, $requestContext->setParameters(array()));
158 $this->assertSame($requestContext, $requestContext->setParameter('foo', 'bar'));