You are here

function CommonURLUnitTest::testDrupalParseUrl in SimpleTest 7

Test drupal_parse_url().

File

tests/common.test, line 139
Tests for common.inc functionality.

Class

CommonURLUnitTest
Tests for URL generation functions.

Code

function testDrupalParseUrl() {

  // Relative URL.
  $url = 'foo/bar?foo=bar&bar=baz&baz#foo';
  $result = array(
    'path' => 'foo/bar',
    'query' => array(
      'foo' => 'bar',
      'bar' => 'baz',
      'baz' => '',
    ),
    'fragment' => 'foo',
  );
  $this
    ->assertEqual(drupal_parse_url($url), $result, t('Relative URL parsed correctly.'));

  // Relative URL that is known to confuse parse_url().
  $url = 'foo/bar:1';
  $result = array(
    'path' => 'foo/bar:1',
    'query' => array(),
    'fragment' => '',
  );
  $this
    ->assertEqual(drupal_parse_url($url), $result, t('Relative URL parsed correctly.'));

  // Absolute URL.
  $url = '/foo/bar?foo=bar&bar=baz&baz#foo';
  $result = array(
    'path' => '/foo/bar',
    'query' => array(
      'foo' => 'bar',
      'bar' => 'baz',
      'baz' => '',
    ),
    'fragment' => 'foo',
  );
  $this
    ->assertEqual(drupal_parse_url($url), $result, t('Absolute URL parsed correctly.'));

  // External URL.
  $url = 'http://drupal.org/foo/bar?foo=bar&bar=baz&baz#foo';
  $result = array(
    'path' => 'http://drupal.org/foo/bar',
    'query' => array(
      'foo' => 'bar',
      'bar' => 'baz',
      'baz' => '',
    ),
    'fragment' => 'foo',
  );
  $this
    ->assertEqual(drupal_parse_url($url), $result, t('External URL parsed correctly.'));

  // Verify proper parsing of URLs when clean URLs are disabled.
  $result = array(
    'path' => 'foo/bar',
    'query' => array(
      'bar' => 'baz',
    ),
    'fragment' => 'foo',
  );

  // Non-clean URLs #1: Absolute URL generated by url().
  $url = $GLOBALS['base_url'] . '/?q=foo/bar&bar=baz#foo';
  $this
    ->assertEqual(drupal_parse_url($url), $result, t('Absolute URL with clean URLs disabled parsed correctly.'));

  // Non-clean URLs #2: Relative URL generated by url().
  $url = '?q=foo/bar&bar=baz#foo';
  $this
    ->assertEqual(drupal_parse_url($url), $result, t('Relative URL with clean URLs disabled parsed correctly.'));

  // Non-clean URLs #3: URL generated by url() on non-Apache webserver.
  $url = 'index.php?q=foo/bar&bar=baz#foo';
  $this
    ->assertEqual(drupal_parse_url($url), $result, t('Relative URL on non-Apache webserver with clean URLs disabled parsed correctly.'));
}