? menu-296292-11.patch
? menu-296292-13.patch
? menu-296292-14.patch
? menu-296292-9.patch
? menu-331720-1.patch
? menu-331720-11.patch
? sites/all/.DS_Store
? sites/all/modules/.DS_Store
? sites/all/modules/devel
? sites/default/files
? sites/default/settings.php
Index: modules/simpletest/tests/menu.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu.test,v
retrieving revision 1.9
diff -u -p -r1.9 menu.test
--- modules/simpletest/tests/menu.test	13 Apr 2009 12:18:52 -0000	1.9
+++ modules/simpletest/tests/menu.test	23 Apr 2009 15:45:28 -0000
@@ -144,3 +144,48 @@ class MenuRebuildTestCase extends Drupal
   }
 
 }
+
+/**
+ * Tests the various "types" that a menu item may assume
+ */
+class MenuTypesTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => t('Menu item type test'),
+      'description' => t('Test various menu item types.'),
+      'group' => t('Menu'),
+    );
+  }
+  
+  function setUp() {
+    // Enable dummy module that implements hook_menu.
+    parent::setUp('menu_test');
+  }
+  
+  /**
+   * Tests MENU_NORMAL_ITEM type
+   */
+  function testMenuNormalItemType() {
+    $this->drupalGet('node');
+    $this->assertText('Menu Normal Type Test', t('The MENU_NORMAL_ITEM has been displayed on the page.'));
+  }
+  
+  /**
+   * Tests MENU_CALLBACK type
+   */
+  function testMenuCallbackType() {
+    $this->drupalGet('menu-tests/types/menu_callback');
+    $this->assertResponse(200, t('MENU_CALLBACK loaded correctly.'));
+  }
+  
+  /**
+   * Test MENU_DEFAULT_LOCAL_TASK and MENU_LOCAL_TASK
+   */
+  function testMenuLocalTaskTypes() {
+    $this->drupalGet('menu-tests/task_types');
+    $default_content = $this->content;
+    
+    $this->drupalGet('menu-tests/task_types/default_local');
+    $this->assertEqual($default_content, $this->content, t('MENU_DEFAULT_LOCAL_TASK cascaded correctly.'));
+  }
+}
Index: modules/simpletest/tests/menu_callback.test
===================================================================
RCS file: modules/simpletest/tests/menu_callback.test
diff -N modules/simpletest/tests/menu_callback.test
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/menu_callback.test	23 Apr 2009 15:45:28 -0000
@@ -0,0 +1,82 @@
+<?php
+// $Id: menu.test,v 1.9 2009/04/13 12:18:52 dries Exp $
+
+/**
+ * @file
+ * Provides SimpleTests for menu.inc.
+ */
+
+class MenuIncCallbackTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => t('Menu callback tests'),
+      'description' => t('Test menu callback functionality.'),
+      'group' => t('Menu'),
+    );
+  }
+
+  function setUp() {
+    // Enable dummy module that implements hook_menu and callbacks.
+    parent::setUp('menu_callback_test');
+  }
+  
+  /**
+   * Test local access & page callbacks with included title callback
+   */
+  function testLocalAccessPageIncludeTitleCallback() {
+    $this->drupalGet('menu_callback_test/local_access_page_include_title');
+    $this->assertTitle('include title | Drupal', t('Included title found on page.'));
+    $this->assertText('local content', t('Local text found on page.'));
+  }
+  
+  /**
+   * Test local access & page callbacks with included title callback
+   */
+  function testLocalPageTitleIncludeAccessCallback() {
+    $this->drupalGet('menu_callback_test/local_page_title_include_access');
+    $this->assertTitle('local title | Drupal', t('Local title found on page.'));
+    $this->assertText('local content', t('Local text found on page.'));
+  }
+  
+  /**
+   * Test local access & page callbacks with included title callback
+   */
+  function testLocalAccessTitleIncludePageCallback() {
+    $this->drupalGet('menu_callback_test/local_access_title_include_page');
+    $this->assertTitle('local title | Drupal', t('Local title found on page.'));
+    $this->assertText('include content', t('Included text found on page.'));
+  }
+  
+  /**
+   * Test access callback which should be accessible
+   */
+  function testAccessAllowed() {
+    $this->drupalGet('menu_callback_test/access_granted');
+    $this->assertResponse(200, t('Access granted.'));
+  }
+  
+  /**
+   * Test access callback which should not be accessible
+   */
+  function testAccessDenied() {
+    $this->drupalGet('menu_callback_test/access_denied');
+    $this->assertResponse(403, t('Access denied.'));
+  }
+  
+  /**
+   * Test that the default access callback for menu items is working correctly.
+   */
+  function testMenuDefaultAccessCallback() {
+    // Test with authorized user.
+    $web_user = $this->drupalCreateUser(array('menu callback test access callback'));
+    $this->drupalLogin($web_user);
+    $this->drupalGet('menu_callback_test/default_access_callback');
+    $this->assertResponse(200, t('User with permissions can access menu item using default access callback.'));
+
+    // Test with an unauthorized user.
+    $web_user = $this->drupalCreateUser();
+    $this->drupalLogin($web_user);
+    $this->drupalGet('menu_callback_test/default_access_callback');
+    $this->assertResponse(403, t('User without permissions is denied access using default access callback.'));
+  }
+}
Index: modules/simpletest/tests/menu_callback_test.inc
===================================================================
RCS file: modules/simpletest/tests/menu_callback_test.inc
diff -N modules/simpletest/tests/menu_callback_test.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/menu_callback_test.inc	23 Apr 2009 15:45:28 -0000
@@ -0,0 +1,23 @@
+<?php
+// $Id$
+
+/**
+ * Included callback function for title content
+ */
+function menu_callback_test_include_title() {
+  return 'include title';
+}
+
+/**
+ * Included callback function for access permissions
+ */
+function menu_callback_test_include_access() {
+  return TRUE;
+}
+
+/**
+ * Included callback function for page content
+ */
+function menu_callback_test_include_page() {
+  return 'include content';
+}
\ No newline at end of file
Index: modules/simpletest/tests/menu_callback_test.info
===================================================================
RCS file: modules/simpletest/tests/menu_callback_test.info
diff -N modules/simpletest/tests/menu_callback_test.info
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/menu_callback_test.info	23 Apr 2009 15:45:28 -0000
@@ -0,0 +1,9 @@
+; $Id$
+name = "Menu callback tests"
+description = "Support module for menu callback testing."
+package = Testing
+version = VERSION
+core = 7.x
+files[] = menu_callback_test.module
+files[] = menu_callback_test.inc
+hidden = TRUE
Index: modules/simpletest/tests/menu_callback_test.module
===================================================================
RCS file: modules/simpletest/tests/menu_callback_test.module
diff -N modules/simpletest/tests/menu_callback_test.module
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/menu_callback_test.module	23 Apr 2009 15:45:28 -0000
@@ -0,0 +1,99 @@
+<?php
+// $Id$
+
+/**
+ * Implementation of hook_menu()
+ */
+function menu_callback_test_menu() {
+  $items['menu_callback_test/local_access_page_include_title'] = array(
+    'title' => 'Local Access & Page, Include Title',
+    'title callback' => 'menu_callback_test_include_title',
+    'title arguments' => array(),
+    'page callback' => 'menu_callback_test_local_page',
+    'access callback' => 'menu_callback_test_local_access',
+    'access arguments' => array(),
+  );
+  
+  $items['menu_callback_test/local_page_title_include_access'] = array(
+    'title' => 'Local Title & Page, Include Access',
+    'title callback' => 'menu_callback_test_local_title',
+    'page callback' => 'menu_callback_test_local_page',
+    'access callback' => 'menu_callback_test_include_access',
+    'access arguments' => array(),
+  );
+  
+  $items['menu_callback_test/local_access_title_include_page'] = array(
+    'title' => 'Local Access & Title, Include Page',
+    'title callback' => 'menu_callback_test_local_title',
+    'title arguments' => array(),
+    'page callback' => 'menu_callback_test_include_page',
+    'access callback' => 'menu_callback_test_local_access',
+    'access arguments' => array(),
+  );
+  
+  $items['menu_callback_test/access_granted'] = array(
+    'title' => 'Access Granted',
+    'access callback' => 'menu_callback_test_access_granted',
+    'access arguments' => array(),
+    'page callback' => 'menu_callback_test_local_page',
+  );
+  
+  $items['menu_callback_test/access_denied'] = array(
+    'title' => 'Access Denied',
+    'access callback' => 'menu_callback_test_access_denied',
+    'access arguments' => array(),
+    'page callback' => 'menu_callback_test_local_page',
+  );
+  
+  $items['menu_callback_test/default_access_callback'] = array(
+    'title' => 'Access Default',
+    'access arguments' => array('menu callback test access callback'),
+    'page callback' => 'menu_callback_test_local_page',
+  );
+  
+  return $items;
+}
+
+/**
+ * Implementation of hook_perm()
+ */
+function menu_callback_test_perm() {
+  return array(
+    'menu callback test access callback' => 'A permission for testing default menu callbacks.',
+  );
+}
+
+/**
+ * Local callback function for title content
+ */
+function menu_callback_test_local_title() {
+  return 'local title';
+}
+
+/**
+ * Local callback function for access permission
+ */
+function menu_callback_test_local_access() {
+  return TRUE;
+}
+
+/**
+ * Local callback function for page content
+ */
+function menu_callback_test_local_page() {
+  return 'local content';
+}
+
+/**
+ * Access permitted callback
+ */
+function menu_callback_test_access_granted() {
+  return TRUE;
+}
+
+/**
+ * Access denied callback
+ */
+function menu_callback_test_access_denied() {
+  return FALSE;
+}
\ No newline at end of file
Index: modules/simpletest/tests/menu_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu_test.module,v
retrieving revision 1.4
diff -u -p -r1.4 menu_test.module
--- modules/simpletest/tests/menu_test.module	13 Apr 2009 12:18:52 -0000	1.4
+++ modules/simpletest/tests/menu_test.module	23 Apr 2009 15:45:28 -0000
@@ -44,6 +44,39 @@ function menu_test_menu() {
     'title' => 'Unattached subchild router',
     'page callback' => 'node_page_default',
   );
+  
+  // MENU_TYPE Tests
+  $items['menu-tests/task_types'] = array(
+    'title' => 'Default Local Task Test',
+    'page callback' => 'menu_test_callback',
+    'access arguments' => array('access content'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  $items['menu-tests/task_types/default_local'] = array(
+    'title' => 'Default Local Task Test',
+    'page callback' => 'menu_test_callback',
+    'access arguments' => array('access content'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['menu-tests/task_types/local'] = array(
+    'title' => 'Local Task Test',
+    'page callback' => 'menu_test_callback',
+    'access arguments' => array('access content'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['menu-tests/types/menu_callback'] = array(
+    'title' => 'Menu Callback Type Test',
+    'page callback' => 'menu_test_callback',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['menu-tests/types/menu_normal'] = array(
+    'title' => 'Menu Normal Type Test',
+    'page callback' => 'menu_test_callback',
+    'access arguments' => array('access content'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  
   return $items;
 }
 
