summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/simpletest/drupal_web_test_case.php32
-rw-r--r--modules/simpletest/simpletest.test24
2 files changed, 49 insertions, 7 deletions
diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index 88d5a6b3c..58af4efea 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -191,8 +191,7 @@ class DrupalWebTestCase extends UnitTestCase {
*/
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 @@ class DrupalWebTestCase extends UnitTestCase {
$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 @@ class DrupalWebTestCase extends UnitTestCase {
}
/**
+ * 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 @@ class DrupalWebTestCase extends UnitTestCase {
actions_synchronize();
_drupal_flush_css_js();
$this->refreshVariables();
+ $this->checkPermissions(array(), TRUE);
// Restore necessary variables.
variable_set('install_profile', 'default');
diff --git a/modules/simpletest/simpletest.test b/modules/simpletest/simpletest.test
index b4ae10661..b3425dd93 100644
--- a/modules/simpletest/simpletest.test
+++ b/modules/simpletest/simpletest.test
@@ -22,11 +22,16 @@ class SimpleTestTestCase extends DrupalWebTestCase {
* 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 @@ class SimpleTestTestCase extends DrupalWebTestCase {
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 @@ class SimpleTestTestCase extends DrupalWebTestCase {
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 @@ class SimpleTestTestCase extends DrupalWebTestCase {
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 @@ class SimpleTestTestCase extends DrupalWebTestCase {
* @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 @@ class SimpleTestTestCase extends DrupalWebTestCase {
* @return string Extracted text.
*/
function asText(SimpleXMLElement $element) {
- return strip_tags($element->asXML());
+ return trim(strip_tags($element->asXML()));
}
/**