Index: modules/simpletest/drupal_web_test_case.php =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/drupal_web_test_case.php,v retrieving revision 1.14 diff -u -r1.14 drupal_web_test_case.php --- modules/simpletest/drupal_web_test_case.php 5 Jun 2008 21:55:45 -0000 1.14 +++ modules/simpletest/drupal_web_test_case.php 6 Jun 2008 00:42:31 -0000 @@ -191,8 +191,7 @@ */ function drupalCreateUser($permissions = NULL) { // Create a role with the given permission set. - $rid = $this->_drupalCreateRole($permissions); - if (!$rid) { + if (!($rid = $this->_drupalCreateRole($permissions))) { return FALSE; } @@ -228,6 +227,10 @@ $permissions = array('access comments', 'access content', 'post comments', 'post comments without approval'); } + if (!$this->checkPermissions($permissions)) { + return FALSE; + } + // Create new role. $role_name = $this->randomName(); db_query("INSERT INTO {role} (name) VALUES ('%s')", $role_name); @@ -248,6 +251,30 @@ } /** + * Check to make sure that the array of permissions are valid. + * + * @param array $permissions Permissions to check. + * @param boolean $reset Reset cached available permissions. + * @return boolean Valid. + */ + private function checkPermissions(array $permissions, $reset = FALSE) { + static $available; + + if (!isset($available) || $reset) { + $available = array_keys(module_invoke_all('perm')); + } + + $valid = TRUE; + foreach ($permissions as $permission) { + if (!in_array($permission, $available)) { + $this->fail(t('Invalid permission %permission.', array('%permission' => $permission)), t('Role')); + $valid = FALSE; + } + } + return $valid; + } + + /** * Logs in a user with the internal browser. If already logged in then logs the current * user out before logging in the specified user. If no user is specified then a new * user will be created and logged in. @@ -331,6 +358,7 @@ actions_synchronize(); _drupal_flush_css_js(); $this->refreshVariables(); + $this->checkPermissions(array(), TRUE); // Restore necessary variables. variable_set('install_profile', 'default'); Index: modules/simpletest/simpletest.test =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.test,v retrieving revision 1.1 diff -u -r1.1 simpletest.test --- modules/simpletest/simpletest.test 28 May 2008 14:07:46 -0000 1.1 +++ modules/simpletest/simpletest.test 6 Jun 2008 00:42:31 -0000 @@ -22,11 +22,16 @@ * Implementation of setUp(). */ function setUp() { - parent::setUp('simpletest'); + if (!$this->inCURL()) { + parent::setUp('simpletest'); - // Create and login user - $admin_user = $this->drupalCreateUser(array('administer unit tests')); - $this->drupalLogin($admin_user); + // Create and login user + $admin_user = $this->drupalCreateUser(array('administer unit tests')); + $this->drupalLogin($admin_user); + } + else { + parent::setUp(); + } } /** @@ -47,6 +52,8 @@ function testWebTestRunner() { $this->pass = t('SimpleTest pass.'); $this->fail = t('SimpleTest fail.'); + $this->valid_permission = 'access content'; + $this->invalid_permission = 'invalid permission'; if ($this->inCURL()) { // Only run following code if this test is running itself through a CURL request. @@ -73,6 +80,9 @@ function stubTest() { $this->pass($this->pass); $this->fail($this->fail); + + $this->drupalCreateUser(array($this->valid_permission)); + $this->drupalCreateUser(array($this->invalid_permission)); } /** @@ -81,6 +91,9 @@ function confirmStubTestResults() { $this->assertAssertion($this->pass, '[Other]', 'Pass'); $this->assertAssertion($this->fail, '[Other]', 'Fail'); + + $this->assertAssertion(t('Created permissions: @perms', array('@perms' => $this->valid_permission)), '[Role]', 'Pass'); + $this->assertAssertion(t('Invalid permission %permission.', array('%permission' => $this->invalid_permission)), '[Role]', 'Fail'); } /** @@ -93,6 +106,7 @@ * @return Assertion result. */ function assertAssertion($message, $type, $status) { + $message = trim(strip_tags($message)); $found = FALSE; foreach ($this->results['assertions'] as $assertion) { if ($assertion['message'] == $message && @@ -154,7 +168,7 @@ * @return string Extracted text. */ function asText(SimpleXMLElement $element) { - return strip_tags($element->asXML()); + return trim(strip_tags($element->asXML())); } /**