class ApacheMatcherDumperTest

Hierarchy

  • class \Symfony\Component\Routing\Tests\Matcher\Dumper\ApacheMatcherDumperTest extends \Symfony\Component\Routing\Tests\Matcher\Dumper\PHPUnit_Framework_TestCase

Expanded class hierarchy of ApacheMatcherDumperTest

File

drupal/core/vendor/symfony/routing/Symfony/Component/Routing/Tests/Matcher/Dumper/ApacheMatcherDumperTest.php, line 18

Namespace

Symfony\Component\Routing\Tests\Matcher\Dumper
View source
class ApacheMatcherDumperTest extends \PHPUnit_Framework_TestCase {
  protected static $fixturesPath;
  public static function setUpBeforeClass() {
    self::$fixturesPath = realpath(__DIR__ . '/../../Fixtures/');
  }
  public function testDump() {
    $dumper = new ApacheMatcherDumper($this
      ->getRouteCollection());
    $this
      ->assertStringEqualsFile(self::$fixturesPath . '/dumper/url_matcher1.apache', $dumper
      ->dump(), '->dump() dumps basic routes to the correct apache format.');
  }

  /**
   * @dataProvider provideEscapeFixtures
   */
  public function testEscapePattern($src, $dest, $char, $with, $message) {
    $r = new \ReflectionMethod(new ApacheMatcherDumper($this
      ->getRouteCollection()), 'escape');
    $r
      ->setAccessible(true);
    $this
      ->assertEquals($dest, $r
      ->invoke(null, $src, $char, $with), $message);
  }
  public function provideEscapeFixtures() {
    return array(
      array(
        'foo',
        'foo',
        ' ',
        '-',
        'Preserve string that should not be escaped',
      ),
      array(
        'fo-o',
        'fo-o',
        ' ',
        '-',
        'Preserve string that should not be escaped',
      ),
      array(
        'fo o',
        'fo- o',
        ' ',
        '-',
        'Escape special characters',
      ),
      array(
        'fo-- o',
        'fo--- o',
        ' ',
        '-',
        'Escape special characters',
      ),
      array(
        'fo- o',
        'fo- o',
        ' ',
        '-',
        'Do not escape already escaped string',
      ),
    );
  }
  public function testEscapeScriptName() {
    $collection = new RouteCollection();
    $collection
      ->add('foo', new Route('/foo'));
    $dumper = new ApacheMatcherDumper($collection);
    $this
      ->assertStringEqualsFile(self::$fixturesPath . '/dumper/url_matcher2.apache', $dumper
      ->dump(array(
      'script_name' => 'ap p_d\\ ev.php',
    )));
  }
  private function getRouteCollection() {
    $collection = new RouteCollection();

    // defaults and requirements
    $collection
      ->add('foo', new Route('/foo/{bar}', array(
      'def' => 'test',
    ), array(
      'bar' => 'baz|symfony',
    )));

    // defaults parameters in pattern
    $collection
      ->add('foobar', new Route('/foo/{bar}', array(
      'bar' => 'toto',
    )));

    // method requirement
    $collection
      ->add('bar', new Route('/bar/{foo}', array(), array(
      '_method' => 'GET|head',
    )));

    // method requirement (again)
    $collection
      ->add('baragain', new Route('/baragain/{foo}', array(), array(
      '_method' => 'get|post',
    )));

    // simple
    $collection
      ->add('baz', new Route('/test/baz'));

    // simple with extension
    $collection
      ->add('baz2', new Route('/test/baz.html'));

    // trailing slash
    $collection
      ->add('baz3', new Route('/test/baz3/'));

    // trailing slash with variable
    $collection
      ->add('baz4', new Route('/test/{foo}/'));

    // trailing slash and safe method
    $collection
      ->add('baz5', new Route('/test/{foo}/', array(), array(
      '_method' => 'get',
    )));

    // trailing slash and unsafe method
    $collection
      ->add('baz5unsafe', new Route('/testunsafe/{foo}/', array(), array(
      '_method' => 'post',
    )));

    // complex
    $collection
      ->add('baz6', new Route('/test/baz', array(
      'foo' => 'bar baz',
    )));

    // space in path
    $collection
      ->add('baz7', new Route('/te st/baz'));
    return $collection;
  }

}

Members