RequestContextTest.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\Routing\Tests;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\Routing\RequestContext;
  13. class RequestContextTest extends \PHPUnit_Framework_TestCase
  14. {
  15. public function testConstruct()
  16. {
  17. $requestContext = new RequestContext(
  18. 'foo',
  19. 'post',
  20. 'foo.bar',
  21. 'HTTPS',
  22. 8080,
  23. 444,
  24. '/baz',
  25. 'bar=foobar'
  26. );
  27. $this->assertEquals('foo', $requestContext->getBaseUrl());
  28. $this->assertEquals('POST', $requestContext->getMethod());
  29. $this->assertEquals('foo.bar', $requestContext->getHost());
  30. $this->assertEquals('https', $requestContext->getScheme());
  31. $this->assertSame(8080, $requestContext->getHttpPort());
  32. $this->assertSame(444, $requestContext->getHttpsPort());
  33. $this->assertEquals('/baz', $requestContext->getPathInfo());
  34. $this->assertEquals('bar=foobar', $requestContext->getQueryString());
  35. }
  36. public function testFromRequest()
  37. {
  38. $request = Request::create('https://test.com:444/foo?bar=baz');
  39. $requestContext = new RequestContext();
  40. $requestContext->setHttpPort(123);
  41. $requestContext->fromRequest($request);
  42. $this->assertEquals('', $requestContext->getBaseUrl());
  43. $this->assertEquals('GET', $requestContext->getMethod());
  44. $this->assertEquals('test.com', $requestContext->getHost());
  45. $this->assertEquals('https', $requestContext->getScheme());
  46. $this->assertEquals('/foo', $requestContext->getPathInfo());
  47. $this->assertEquals('bar=baz', $requestContext->getQueryString());
  48. $this->assertSame(123, $requestContext->getHttpPort());
  49. $this->assertSame(444, $requestContext->getHttpsPort());
  50. $request = Request::create('http://test.com:8080/foo?bar=baz');
  51. $requestContext = new RequestContext();
  52. $requestContext->setHttpsPort(567);
  53. $requestContext->fromRequest($request);
  54. $this->assertSame(8080, $requestContext->getHttpPort());
  55. $this->assertSame(567, $requestContext->getHttpsPort());
  56. }
  57. public function testGetParameters()
  58. {
  59. $requestContext = new RequestContext();
  60. $this->assertEquals(array(), $requestContext->getParameters());
  61. $requestContext->setParameters(array('foo' => 'bar'));
  62. $this->assertEquals(array('foo' => 'bar'), $requestContext->getParameters());
  63. }
  64. public function testHasParameter()
  65. {
  66. $requestContext = new RequestContext();
  67. $requestContext->setParameters(array('foo' => 'bar'));
  68. $this->assertTrue($requestContext->hasParameter('foo'));
  69. $this->assertFalse($requestContext->hasParameter('baz'));
  70. }
  71. public function testGetParameter()
  72. {
  73. $requestContext = new RequestContext();
  74. $requestContext->setParameters(array('foo' => 'bar'));
  75. $this->assertEquals('bar', $requestContext->getParameter('foo'));
  76. $this->assertNull($requestContext->getParameter('baz'));
  77. }
  78. public function testSetParameter()
  79. {
  80. $requestContext = new RequestContext();
  81. $requestContext->setParameter('foo', 'bar');
  82. $this->assertEquals('bar', $requestContext->getParameter('foo'));
  83. }
  84. public function testMethod()
  85. {
  86. $requestContext = new RequestContext();
  87. $requestContext->setMethod('post');
  88. $this->assertSame('POST', $requestContext->getMethod());
  89. }
  90. public function testScheme()
  91. {
  92. $requestContext = new RequestContext();
  93. $requestContext->setScheme('HTTPS');
  94. $this->assertSame('https', $requestContext->getScheme());
  95. }
  96. public function testHost()
  97. {
  98. $requestContext = new RequestContext();
  99. $requestContext->setHost('eXampLe.com');
  100. $this->assertSame('example.com', $requestContext->getHost());
  101. }
  102. public function testQueryString()
  103. {
  104. $requestContext = new RequestContext();
  105. $requestContext->setQueryString(null);
  106. $this->assertSame('', $requestContext->getQueryString());
  107. }
  108. public function testPort()
  109. {
  110. $requestContext = new RequestContext();
  111. $requestContext->setHttpPort('123');
  112. $requestContext->setHttpsPort('456');
  113. $this->assertSame(123, $requestContext->getHttpPort());
  114. $this->assertSame(456, $requestContext->getHttpsPort());
  115. }
  116. public function testFluentInterface()
  117. {
  118. $requestContext = new RequestContext();
  119. $this->assertSame($requestContext, $requestContext->setBaseUrl('/app.php'));
  120. $this->assertSame($requestContext, $requestContext->setPathInfo('/index'));
  121. $this->assertSame($requestContext, $requestContext->setMethod('POST'));
  122. $this->assertSame($requestContext, $requestContext->setScheme('https'));
  123. $this->assertSame($requestContext, $requestContext->setHost('example.com'));
  124. $this->assertSame($requestContext, $requestContext->setQueryString('foo=bar'));
  125. $this->assertSame($requestContext, $requestContext->setHttpPort(80));
  126. $this->assertSame($requestContext, $requestContext->setHttpsPort(443));
  127. $this->assertSame($requestContext, $requestContext->setParameters(array()));
  128. $this->assertSame($requestContext, $requestContext->setParameter('foo', 'bar'));
  129. }
  130. }