assertPattern(), be sure to use the 's' modifier for * the PCRE pattern, since admin menu's output spans over multiple lines. */ /** * Test menu links depending on user permissions. */ class AdminMenuPermissionsTestCase extends DrupalWebTestCase { public static function getInfo() { return array( 'name' => t('Menu link permissions'), 'description' => t('Verify that menu is displayed according to user permissions.'), 'group' => t('Administration menu'), ); } function setUp() { parent::setUp('admin_menu'); admin_menu_exit(); } /** * Test that the links are added to the page (no JS testing). */ function testPermissions() { // Anonymous users should not see the menu. $this->assertNoRaw('
drupalCreateUser(array('administer site configuration', 'access administration pages', 'administer nodes', 'access administration menu')); $this->drupalLogin($admin_user); // Check that the user can see the admin links, but not the drupal links. $this->assertRaw('
drupalGet('node'); $this->assertPattern('@
assertNoPattern('@
assertNoPattern('@
drupalCreateUser(array('administer site configuration', 'access administration pages', 'administer nodes', 'access administration menu', 'display drupal links')); $this->drupalLogin($admin_user2); $this->drupalGet('node'); $this->assertPattern('@
assertNoPattern('@
t('Module menu links'), 'description' => t('Verify that menu contains links according to enabled modules.'), 'group' => t('Administration menu'), ); } function setUp() { parent::setUp('admin_menu', 'contact'); admin_menu_exit(); } /** * Test that the links are added to the page (no JS testing). */ function testContactModuleLinks() { // Create a new user without 'administer site-wide contact form' permission. $admin_user = $this->drupalCreateUser(array('access administration pages', 'access administration menu')); $this->drupalLogin($admin_user); // Verify that proper links are displayed. $this->assertRaw('
drupalGet('node'); $this->assertNoPattern('@
drupalCreateUser(array('access administration pages', 'access administration menu', 'administer site-wide contact form')); $this->drupalLogin($admin_user); // Verify that proper links are displayed. $this->drupalGet('node'); $this->assertPattern('@
t('Menu links'), 'description' => t('Verify that menu contains proper links.'), 'group' => t('Administration menu'), ); } function setUp() { parent::setUp('admin_menu'); admin_menu_exit(); // Create and log in a full-blown administrative user. $permissions = module_invoke_all('perm'); $admin_user = $this->drupalCreateUser($permissions); $this->admin_user = $this->drupalLogin($admin_user); } /** * Test link contents. */ function testLinkContents() { // Create a content-type with special characters. $info = array( 'type' => 'special', 'name' => 'Cool & Special', 'module' => 'node', 'description' => '', ); $info = (object)_node_type_set_defaults($info); node_type_save($info); $this->drupalPost('admin/settings/performance', array(), t('Clear cached data')); // Fetch a page. $this->drupalGet('node'); $this->assertRaw('
strtr('Edit !content-type', array('!content-type' => t('Page'))), url('admin/content/node-type/special') => strtr('Edit !content-type', array('!content-type' => t('Cool & Special'))), ); foreach ($links as $url => $title) { $this->assertFieldByXPath('//div[@id="admin-menu"]//a[@href="' . $url . '"]', $title, t('!link-title content-type link found.', array('!link-title' => $title))); } $links = array( url('node/add/page') => t('Page'), url('node/add/special') => t('Cool & Special'), ); foreach ($links as $url => $title) { $this->assertFieldByXPath('//div[@id="admin-menu"]//a[@href="' . $url . '"]', $title, t('Create content » !link-title link found.', array('!link-title' => $title))); } } }