1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Symfony\Component\Routing\Tests;
13:
14: use PHPUnit\Framework\TestCase;
15: use Symfony\Component\HttpFoundation\Request;
16: use Symfony\Component\Routing\RequestContext;
17:
18: class RequestContextTest extends TestCase
19: {
20: public function testConstruct()
21: {
22: $requestContext = new RequestContext(
23: 'foo',
24: 'post',
25: 'foo.bar',
26: 'HTTPS',
27: 8080,
28: 444,
29: '/baz',
30: 'bar=foobar'
31: );
32:
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());
41: }
42:
43: public function testFromRequest()
44: {
45: $request = Request::create('https://test.com:444/foo?bar=baz');
46: $requestContext = new RequestContext();
47: $requestContext->setHttpPort(123);
48: $requestContext->fromRequest($request);
49:
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());
58:
59: $request = Request::create('http://test.com:8080/foo?bar=baz');
60: $requestContext = new RequestContext();
61: $requestContext->setHttpsPort(567);
62: $requestContext->fromRequest($request);
63:
64: $this->assertSame(8080, $requestContext->getHttpPort());
65: $this->assertSame(567, $requestContext->getHttpsPort());
66: }
67:
68: public function testGetParameters()
69: {
70: $requestContext = new RequestContext();
71: $this->assertEquals(array(), $requestContext->getParameters());
72:
73: $requestContext->setParameters(array('foo' => 'bar'));
74: $this->assertEquals(array('foo' => 'bar'), $requestContext->getParameters());
75: }
76:
77: public function testHasParameter()
78: {
79: $requestContext = new RequestContext();
80: $requestContext->setParameters(array('foo' => 'bar'));
81:
82: $this->assertTrue($requestContext->hasParameter('foo'));
83: $this->assertFalse($requestContext->hasParameter('baz'));
84: }
85:
86: public function testGetParameter()
87: {
88: $requestContext = new RequestContext();
89: $requestContext->setParameters(array('foo' => 'bar'));
90:
91: $this->assertEquals('bar', $requestContext->getParameter('foo'));
92: $this->assertNull($requestContext->getParameter('baz'));
93: }
94:
95: public function testSetParameter()
96: {
97: $requestContext = new RequestContext();
98: $requestContext->setParameter('foo', 'bar');
99:
100: $this->assertEquals('bar', $requestContext->getParameter('foo'));
101: }
102:
103: public function testMethod()
104: {
105: $requestContext = new RequestContext();
106: $requestContext->setMethod('post');
107:
108: $this->assertSame('POST', $requestContext->getMethod());
109: }
110:
111: public function testScheme()
112: {
113: $requestContext = new RequestContext();
114: $requestContext->setScheme('HTTPS');
115:
116: $this->assertSame('https', $requestContext->getScheme());
117: }
118:
119: public function testHost()
120: {
121: $requestContext = new RequestContext();
122: $requestContext->setHost('eXampLe.com');
123:
124: $this->assertSame('example.com', $requestContext->getHost());
125: }
126:
127: public function testQueryString()
128: {
129: $requestContext = new RequestContext();
130: $requestContext->setQueryString(null);
131:
132: $this->assertSame('', $requestContext->getQueryString());
133: }
134:
135: public function testPort()
136: {
137: $requestContext = new RequestContext();
138: $requestContext->setHttpPort('123');
139: $requestContext->setHttpsPort('456');
140:
141: $this->assertSame(123, $requestContext->getHttpPort());
142: $this->assertSame(456, $requestContext->getHttpsPort());
143: }
144:
145: public function testFluentInterface()
146: {
147: $requestContext = new RequestContext();
148:
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'));
159: }
160: }
161: