You are here

class RouterListenerTest in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-kernel/Tests/EventListener/RouterListenerTest.php \Symfony\Component\HttpKernel\Tests\EventListener\RouterListenerTest

Hierarchy

  • class \Symfony\Component\HttpKernel\Tests\EventListener\RouterListenerTest extends \Symfony\Component\HttpKernel\Tests\EventListener\PHPUnit_Framework_TestCase

Expanded class hierarchy of RouterListenerTest

File

vendor/symfony/http-kernel/Tests/EventListener/RouterListenerTest.php, line 21

Namespace

Symfony\Component\HttpKernel\Tests\EventListener
View source
class RouterListenerTest extends \PHPUnit_Framework_TestCase {
  private $requestStack;
  protected function setUp() {
    $this->requestStack = $this
      ->getMock('Symfony\\Component\\HttpFoundation\\RequestStack', array(), array(), '', false);
  }

  /**
   * @dataProvider getPortData
   */
  public function testPort($defaultHttpPort, $defaultHttpsPort, $uri, $expectedHttpPort, $expectedHttpsPort) {
    $urlMatcher = $this
      ->getMockBuilder('Symfony\\Component\\Routing\\Matcher\\UrlMatcherInterface')
      ->disableOriginalConstructor()
      ->getMock();
    $context = new RequestContext();
    $context
      ->setHttpPort($defaultHttpPort);
    $context
      ->setHttpsPort($defaultHttpsPort);
    $urlMatcher
      ->expects($this
      ->any())
      ->method('getContext')
      ->will($this
      ->returnValue($context));
    $listener = new RouterListener($urlMatcher, null, null, $this->requestStack);
    $event = $this
      ->createGetResponseEventForUri($uri);
    $listener
      ->onKernelRequest($event);
    $this
      ->assertEquals($expectedHttpPort, $context
      ->getHttpPort());
    $this
      ->assertEquals($expectedHttpsPort, $context
      ->getHttpsPort());
    $this
      ->assertEquals(0 === strpos($uri, 'https') ? 'https' : 'http', $context
      ->getScheme());
  }
  public function getPortData() {
    return array(
      array(
        80,
        443,
        'http://localhost/',
        80,
        443,
      ),
      array(
        80,
        443,
        'http://localhost:90/',
        90,
        443,
      ),
      array(
        80,
        443,
        'https://localhost/',
        80,
        443,
      ),
      array(
        80,
        443,
        'https://localhost:90/',
        80,
        90,
      ),
    );
  }

  /**
   * @param string $uri
   *
   * @return GetResponseEvent
   */
  private function createGetResponseEventForUri($uri) {
    $kernel = $this
      ->getMock('Symfony\\Component\\HttpKernel\\HttpKernelInterface');
    $request = Request::create($uri);
    $request->attributes
      ->set('_controller', null);

    // Prevents going in to routing process
    return new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
  }

  /**
   * @expectedException \InvalidArgumentException
   */
  public function testInvalidMatcher() {
    new RouterListener(new \stdClass(), null, null, $this->requestStack);
  }
  public function testRequestMatcher() {
    $kernel = $this
      ->getMock('Symfony\\Component\\HttpKernel\\HttpKernelInterface');
    $request = Request::create('http://localhost/');
    $event = new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
    $requestMatcher = $this
      ->getMock('Symfony\\Component\\Routing\\Matcher\\RequestMatcherInterface');
    $requestMatcher
      ->expects($this
      ->once())
      ->method('matchRequest')
      ->with($this
      ->isInstanceOf('Symfony\\Component\\HttpFoundation\\Request'))
      ->will($this
      ->returnValue(array()));
    $listener = new RouterListener($requestMatcher, new RequestContext(), null, $this->requestStack);
    $listener
      ->onKernelRequest($event);
  }
  public function testSubRequestWithDifferentMethod() {
    $kernel = $this
      ->getMock('Symfony\\Component\\HttpKernel\\HttpKernelInterface');
    $request = Request::create('http://localhost/', 'post');
    $event = new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
    $requestMatcher = $this
      ->getMock('Symfony\\Component\\Routing\\Matcher\\RequestMatcherInterface');
    $requestMatcher
      ->expects($this
      ->any())
      ->method('matchRequest')
      ->with($this
      ->isInstanceOf('Symfony\\Component\\HttpFoundation\\Request'))
      ->will($this
      ->returnValue(array()));
    $context = new RequestContext();
    $requestMatcher
      ->expects($this
      ->any())
      ->method('getContext')
      ->will($this
      ->returnValue($context));
    $listener = new RouterListener($requestMatcher, new RequestContext(), null, $this->requestStack);
    $listener
      ->onKernelRequest($event);

    // sub-request with another HTTP method
    $kernel = $this
      ->getMock('Symfony\\Component\\HttpKernel\\HttpKernelInterface');
    $request = Request::create('http://localhost/', 'get');
    $event = new GetResponseEvent($kernel, $request, HttpKernelInterface::SUB_REQUEST);
    $listener
      ->onKernelRequest($event);
    $this
      ->assertEquals('GET', $context
      ->getMethod());
  }

  /**
   * @dataProvider getLoggingParameterData
   */
  public function testLoggingParameter($parameter, $log) {
    $requestMatcher = $this
      ->getMock('Symfony\\Component\\Routing\\Matcher\\RequestMatcherInterface');
    $requestMatcher
      ->expects($this
      ->once())
      ->method('matchRequest')
      ->will($this
      ->returnValue($parameter));
    $logger = $this
      ->getMock('Psr\\Log\\LoggerInterface');
    $logger
      ->expects($this
      ->once())
      ->method('info')
      ->with($this
      ->equalTo($log));
    $kernel = $this
      ->getMock('Symfony\\Component\\HttpKernel\\HttpKernelInterface');
    $request = Request::create('http://localhost/');
    $listener = new RouterListener($requestMatcher, new RequestContext(), $logger, $this->requestStack);
    $listener
      ->onKernelRequest(new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
  }
  public function getLoggingParameterData() {
    return array(
      array(
        array(
          '_route' => 'foo',
        ),
        'Matched route "foo".',
      ),
      array(
        array(),
        'Matched route "n/a".',
      ),
    );
  }

}

Members

Namesort descending Modifiers Type Description Overrides
RouterListenerTest::$requestStack private property
RouterListenerTest::createGetResponseEventForUri private function
RouterListenerTest::getLoggingParameterData public function
RouterListenerTest::getPortData public function
RouterListenerTest::setUp protected function
RouterListenerTest::testInvalidMatcher public function @expectedException \InvalidArgumentException
RouterListenerTest::testLoggingParameter public function @dataProvider getLoggingParameterData
RouterListenerTest::testPort public function @dataProvider getPortData
RouterListenerTest::testRequestMatcher public function
RouterListenerTest::testSubRequestWithDifferentMethod public function