summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/path.test
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2009-09-11 02:19:02 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2009-09-11 02:19:02 +0000
commitf24f709e0f7d59643ca076fb00066e93fc81da01 (patch)
treee5f845e9483cd756d26bf95a1d6771aacb2a6613 /modules/simpletest/tests/path.test
parentf018eb16bfed09aee89c938e704e516c5822be25 (diff)
downloadbrdo-f24f709e0f7d59643ca076fb00066e93fc81da01.tar.gz
brdo-f24f709e0f7d59643ca076fb00066e93fc81da01.tar.bz2
#293496 by kathyh and cwgordon7: Added tests for drupal_match_path().
Diffstat (limited to 'modules/simpletest/tests/path.test')
-rw-r--r--modules/simpletest/tests/path.test128
1 files changed, 128 insertions, 0 deletions
diff --git a/modules/simpletest/tests/path.test b/modules/simpletest/tests/path.test
new file mode 100644
index 000000000..f76ea4089
--- /dev/null
+++ b/modules/simpletest/tests/path.test
@@ -0,0 +1,128 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Tests for path.inc.
+ */
+
+/**
+ * Unit tests for the drupal_match_path() function in path.inc.
+ *
+ * @see drupal_match_path().
+ */
+class DrupalMatchPathTestCase extends DrupalWebTestCase {
+ protected $front;
+
+ public static function getInfo() {
+ return array(
+ 'name' => 'Drupal match path',
+ 'description' => 'Tests the drupal_match_path() function to make sure it works properly.',
+ 'group' => 'Path API',
+ );
+ }
+
+ function setUp() {
+ // Set up the database and testing environment.
+ parent::setUp();
+
+ // Set up a random site front page to test the '<front>' placeholder.
+ $this->front = $this->randomName();
+ variable_set('site_frontpage', $this->front);
+ // Refresh our static variables from the database.
+ $this->refreshVariables();
+ }
+
+ /**
+ * Run through our test cases, making sure each one works as expected.
+ */
+ function testDrupalMatchPath() {
+ // Set up our test cases.
+ $tests = $this->drupalMatchPathTests();
+ foreach ($tests as $patterns => $cases) {
+ foreach ($cases as $path => $expected_result) {
+ $actual_result = drupal_match_path($path, $patterns);
+ $this->assertIdentical($actual_result, $expected_result, t('Tried matching the path <code>@path</code> to the pattern <pre>@patterns</pre> - expected @expected, got @actual.', array('@path' => $path, '@patterns' => $patterns, '@expected' => var_export($expected_result, TRUE), '@actual' => var_export($actual_result, TRUE))));
+ }
+ }
+ }
+
+ /**
+ * Helper function for testDrupalMatchPath(): set up an array of test cases.
+ *
+ * @return
+ * An array of test cases to cycle through.
+ */
+ private function drupalMatchPathTests() {
+ return array(
+ // Single absolute paths.
+ 'blog/1' => array(
+ 'blog/1' => TRUE,
+ 'blog/2' => FALSE,
+ 'test' => FALSE,
+ ),
+ // Single paths with wildcards.
+ 'blog/*' => array(
+ 'blog/1' => TRUE,
+ 'blog/2' => TRUE,
+ 'blog/3/edit' => TRUE,
+ 'blog/' => TRUE,
+ 'blog' => FALSE,
+ 'test' => FALSE,
+ ),
+ // Single paths with multiple wildcards.
+ 'node/*/revisions/*' => array(
+ 'node/1/revisions/3' => TRUE,
+ 'node/345/revisions/test' => TRUE,
+ 'node/23/edit' => FALSE,
+ 'test' => FALSE,
+ ),
+ // Single paths with '<front>'.
+ '<front>' => array(
+ $this->front => TRUE,
+ "$this->front/" => FALSE,
+ "$this->front/edit" => FALSE,
+ 'node' => FALSE,
+ '' => FALSE,
+ ),
+ // Paths with both '<front>' and wildcards (should not work).
+ '<front>/*' => array(
+ $this->front => FALSE,
+ "$this->front/" => FALSE,
+ "$this->front/edit" => FALSE,
+ 'node/12' => FALSE,
+ '' => FALSE,
+ ),
+ // Multiple paths with the \n delimiter.
+ "node/*\nnode/*/edit" => array(
+ 'node/1' => TRUE,
+ 'node/view' => TRUE,
+ 'node/32/edit' => TRUE,
+ 'node/delete/edit' => TRUE,
+ 'node/50/delete' => TRUE,
+ 'test/example' => FALSE,
+ ),
+ // Multiple paths with the \r delimiter.
+ "user/*\rblog/*" => array(
+ 'user/1' => TRUE,
+ 'blog/1' => TRUE,
+ 'user/1/blog/1' => TRUE,
+ 'user/blog' => TRUE,
+ 'test/example' => FALSE,
+ 'user' => FALSE,
+ 'blog' => FALSE,
+ ),
+ // Multiple paths with the \r\n delimiter.
+ "test\r\n<front>" => array(
+ 'test' => TRUE,
+ $this->front => TRUE,
+ 'example' => FALSE,
+ ),
+ // Test existing regular expressions (should be escaped).
+ '[^/]+?/[0-9]' => array(
+ 'test/1' => FALSE,
+ '[^/]+?/[0-9]' => TRUE,
+ ),
+ );
+ }
+}