class RequestMatcherTest

Hierarchy

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

Expanded class hierarchy of RequestMatcherTest

File

drupal/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/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,
      ),
    );
  }

  /**
   * @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