You are here

class RequestMatcherTest in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-foundation/Tests/RequestMatcherTest.php \Symfony\Component\HttpFoundation\Tests\RequestMatcherTest

Hierarchy

  • class \Symfony\Component\HttpFoundation\Tests\RequestMatcherTest extends \Symfony\Component\HttpFoundation\Tests\PHPUnit_Framework_TestCase

Expanded class hierarchy of RequestMatcherTest

File

vendor/symfony/http-foundation/Tests/RequestMatcherTest.php, line 17

Namespace

Symfony\Component\HttpFoundation\Tests
View source
class RequestMatcherTest extends \PHPUnit_Framework_TestCase {

  /**
   * @dataProvider testMethodFixtures
   */
  public function testMethod($requestMethod, $matcherMethod, $isMatch) {
    $matcher = new RequestMatcher();
    $matcher
      ->matchMethod($matcherMethod);
    $request = Request::create('', $requestMethod);
    $this
      ->assertSame($isMatch, $matcher
      ->matches($request));
    $matcher = new RequestMatcher(null, null, $matcherMethod);
    $request = Request::create('', $requestMethod);
    $this
      ->assertSame($isMatch, $matcher
      ->matches($request));
  }
  public function testMethodFixtures() {
    return array(
      array(
        'get',
        'get',
        true,
      ),
      array(
        'get',
        array(
          'get',
          'post',
        ),
        true,
      ),
      array(
        'get',
        'post',
        false,
      ),
      array(
        'get',
        'GET',
        true,
      ),
      array(
        'get',
        array(
          'GET',
          'POST',
        ),
        true,
      ),
      array(
        'get',
        'POST',
        false,
      ),
    );
  }
  public function testScheme() {
    $httpRequest = $request = $request = Request::create('');
    $httpsRequest = $request = $request = Request::create('', 'get', array(), array(), array(), array(
      'HTTPS' => 'on',
    ));
    $matcher = new RequestMatcher();
    $matcher
      ->matchScheme('https');
    $this
      ->assertFalse($matcher
      ->matches($httpRequest));
    $this
      ->assertTrue($matcher
      ->matches($httpsRequest));
    $matcher
      ->matchScheme('http');
    $this
      ->assertFalse($matcher
      ->matches($httpsRequest));
    $this
      ->assertTrue($matcher
      ->matches($httpRequest));
    $matcher = new RequestMatcher();
    $this
      ->assertTrue($matcher
      ->matches($httpsRequest));
    $this
      ->assertTrue($matcher
      ->matches($httpRequest));
  }

  /**
   * @dataProvider testHostFixture
   */
  public function testHost($pattern, $isMatch) {
    $matcher = new RequestMatcher();
    $request = Request::create('', 'get', array(), array(), array(), array(
      'HTTP_HOST' => 'foo.example.com',
    ));
    $matcher
      ->matchHost($pattern);
    $this
      ->assertSame($isMatch, $matcher
      ->matches($request));
    $matcher = new RequestMatcher(null, $pattern);
    $this
      ->assertSame($isMatch, $matcher
      ->matches($request));
  }
  public function testHostFixture() {
    return array(
      array(
        '.*\\.example\\.com',
        true,
      ),
      array(
        '\\.example\\.com$',
        true,
      ),
      array(
        '^.*\\.example\\.com$',
        true,
      ),
      array(
        '.*\\.sensio\\.com',
        false,
      ),
      array(
        '.*\\.example\\.COM',
        true,
      ),
      array(
        '\\.example\\.COM$',
        true,
      ),
      array(
        '^.*\\.example\\.COM$',
        true,
      ),
      array(
        '.*\\.sensio\\.COM',
        false,
      ),
    );
  }
  public function testPath() {
    $matcher = new RequestMatcher();
    $request = Request::create('/admin/foo');
    $matcher
      ->matchPath('/admin/.*');
    $this
      ->assertTrue($matcher
      ->matches($request));
    $matcher
      ->matchPath('/admin');
    $this
      ->assertTrue($matcher
      ->matches($request));
    $matcher
      ->matchPath('^/admin/.*$');
    $this
      ->assertTrue($matcher
      ->matches($request));
    $matcher
      ->matchMethod('/blog/.*');
    $this
      ->assertFalse($matcher
      ->matches($request));
  }
  public function testPathWithLocaleIsNotSupported() {
    $matcher = new RequestMatcher();
    $request = Request::create('/en/login');
    $request
      ->setLocale('en');
    $matcher
      ->matchPath('^/{_locale}/login$');
    $this
      ->assertFalse($matcher
      ->matches($request));
  }
  public function testPathWithEncodedCharacters() {
    $matcher = new RequestMatcher();
    $request = Request::create('/admin/fo%20o');
    $matcher
      ->matchPath('^/admin/fo o*$');
    $this
      ->assertTrue($matcher
      ->matches($request));
  }
  public function testAttributes() {
    $matcher = new RequestMatcher();
    $request = Request::create('/admin/foo');
    $request->attributes
      ->set('foo', 'foo_bar');
    $matcher
      ->matchAttribute('foo', 'foo_.*');
    $this
      ->assertTrue($matcher
      ->matches($request));
    $matcher
      ->matchAttribute('foo', 'foo');
    $this
      ->assertTrue($matcher
      ->matches($request));
    $matcher
      ->matchAttribute('foo', '^foo_bar$');
    $this
      ->assertTrue($matcher
      ->matches($request));
    $matcher
      ->matchAttribute('foo', 'babar');
    $this
      ->assertFalse($matcher
      ->matches($request));
  }

}

Members