'0. Forum functionality (with FA and ACL)',
'description' => 'Run the Forum (!) module tests with Forum Access (and ACL) installed.',
'group' => 'Forum Access',
);
}
/**
* Implements setUp().
*/
function setUp($modules = array()) {
parent::setUp();
module_enable(array('acl', 'forum_access', 'devel') + $modules);
parent::resetAll();
}
/**
* This test assumes that the node/add/forum page is accessible if there
* are no forums defined. FA checks whether $user has Post access in any
* forum, and if none is found, it returns a 403. This fulfills the
* intention of the test.
*
* @see modules/forum/ForumTestCase#testAddOrphanTopic()
*/
function testAddOrphanTopic() {
$this->assertTrue(TRUE, 'Skip the testAddOrphanTopic() test.');
}
}
require_once(drupal_get_path('module', 'forum_access') .'/tests/forum_access_test_base.php');
/**
* Initial configuration tests for the Forum Access module.
*/
class ForumAccess11InitialConfigurationTestCase extends ForumAccessBaseTestCase {
public static function getInfo() {
return array(
'name' => '1. Forum Access Initial Configuration',
'description' => 'Display and verify the initial configuration for all ensuing tests (roles, permissions, users, Forum Access default settings in a new forum).',
'group' => 'Forum Access',
);
}
function testInitialConfiguration() {
$this->setUp2();
$this->pass('#########################
#1 - START test initial configuration @' . (time() - $this->time), '######');
// Show permissions grid.
$this->drupalGet('admin/people/permissions/list');
$this->assertResponse(200, '^^^ Permissions');
// Show list of users.
$this->drupalGet('admin/people');
$this->assertResponse(200);
// Show list of users.
$this->drupalGet('admin/people', array('query' => array('sort' => 'asc', 'order' => drupal_encode_path(t('Username')))));
$this->assertResponse(200, '^^^ Users');
// Show list of forums aka Forum Overview (only 'General discussion' at this point).
$this->drupalGet('forum');
$this->assertResponse(200, '^^^ Forums');
// Show administrative list of forums.
$this->drupalGet('admin/structure/forum');
$this->assertResponse(200, '^^^ Forum Administration Overview');
// Show default forum settings after installation of FA.
$this->drupalGet('admin/structure/forum/edit/forum/1');
$this->assertResponse(200, '^^^ Forum 1 Administration');
// Verify the checked state of the checkboxes.
foreach (array($this->webmaster_rid, $this->forum_admin_rid, $this->edit_any_content_rid, $this->edit_own_content_rid, $this->create_content_rid) as $rid) {
foreach ($this->accesses as $access) {
$this->assertNoFieldChecked("edit-forum-access-grants-checkboxes-$access-$rid", "Role $rid does NOT have '$access'.");
}
}
$this->assertNoFieldChecked("edit-forum-access-grants-checkboxes-view-3", "administrator does NOT have 'view'.");
$this->assertNoFieldChecked("edit-forum-access-grants-checkboxes-create-3", "administrator does NOT have 'create'.");
$this->assertFieldChecked( "edit-forum-access-grants-checkboxes-update-3", "administrator has 'update'.");
$this->assertFieldChecked( "edit-forum-access-grants-checkboxes-delete-3", "administrator has 'delete'.");
$this->assertFieldChecked( "edit-forum-access-grants-checkboxes-view-1", "anonymous has 'view'.");
$this->assertNoFieldChecked("edit-forum-access-grants-checkboxes-create-1", "anonymous does NOT have 'create'.");
$this->assertNoFieldChecked("edit-forum-access-grants-checkboxes-update-1", "anonymous does NOT have 'update'.");
$this->assertNoFieldChecked("edit-forum-access-grants-checkboxes-delete-1", "anonymous does NOT have 'delete'.");
$this->assertFieldChecked( "edit-forum-access-grants-checkboxes-view-2", "authenticated has 'view'.");
$this->assertFieldChecked( "edit-forum-access-grants-checkboxes-create-2", "authenticated has 'create'.");
$this->assertNoFieldChecked("edit-forum-access-grants-checkboxes-update-2", "authenticated does NOT have 'update'.");
$this->assertNoFieldChecked("edit-forum-access-grants-checkboxes-delete-2", "authenticated does NOT have 'delete'.");
// Verify the enabled/disabled state of the checkboxes.
foreach ($this->rids as $rid) {
foreach ($this->accesses as $access) {
$key = "$access-$rid";
if (array_search($key, array('update-3', 'delete-3')) !== FALSE) {
$this->assertFieldDisabled("edit-forum-access-grants-checkboxes-$key"/*, "Role $rid's '$access' checkbox is disabled."*/);
}
else {
$this->assertFieldEnabled("edit-forum-access-grants-checkboxes-$key"/*, "Role $rid's '$access' checkbox is enabled."*/);
}
}
}
// Remove the Drupal default forum.
$this->drupalGet('forum/1');
$this->assertResponse(200);
taxonomy_term_delete(1);
$this->drupalGet('forum/1');
$this->assertResponse(404);
$this->drupalGet('forum');
$this->assertResponse(200);
$this->assertText(t('No forums defined'), 'Drupal default forum removed.');
$this->pass('#########################
#1 - END test initial configuration @' . (time() - $this->time), '######');
}
}
/**
* Default configuration test for the Forum Access module.
*/
class ForumAccess12DefaultConfigurationTestCase extends ForumAccessBaseTestCase {
public static function getInfo() {
return array(
'name' => '2. Forum Access Default Configuration',
'description' => 'Test access for the default forum configuration.',
'group' => 'Forum Access',
);
}
function testAccess2() {
$this->setUp2();
taxonomy_term_delete(1);
$this->pass('#########################
#2 - START Default Configuration test @' . (time() - $this->time), '/\
######
\/');
// Create a forum with default settings.
//$this->drupalGet('admin/structure/forum/add/forum');
//$this->assertResponse(200);
$edit = array(
'name' => 'Forum 2 (Default)',
'description' => 'Default settings',
'parent[0]' => 0,
'weight' => '0',
);
$forum = (object) ($edit + array('tid' => 2));
// Create forum.
$this->drupalPost('admin/structure/forum/add/forum', $edit, t('Save'));
$this->assertResponse(200, "$forum->name added.");
$this->drupalGet("admin/structure/forum/edit/forum/$forum->tid");
$this->assertResponse(200, "^^^ $forum->name exists, with these settings.");
$this->drupalGet('forum');
$this->assertResponse(200, 'Forum Overview');
$this->checkForum($forum, TRUE);
$this->pass('#########################
#2 - END Default Configuration test @' . (time() - $this->time), '/\
######
\/');
}
}
/**
* Read-Only configuration test for the Forum Access module.
*/
class ForumAccess13ReadOnlyConfigurationTestCase extends ForumAccessBaseTestCase {
public static function getInfo() {
return array(
'name' => '3. Forum Access Read-Only',
'description' => 'Test access for the configuration with only View access given.',
'group' => 'Forum Access',
);
}
function testAccess3() {
$this->createAndCheckForum(3, 'Read-Only', 'All View checkboxes checked', array('view'));
}
}
/**
* All-OFF configuration test for the Forum Access module.
*/
class ForumAccess14AllOffConfigurationTestCase extends ForumAccessBaseTestCase {
public static function getInfo() {
return array(
'name' => '4. Forum Access All-OFF Configuration',
'description' => 'Test access for the configuration with all access withheld.',
'group' => 'Forum Access',
);
}
function testAccess4() {
$this->createAndCheckForum(4, 'All-OFF', 'All checkboxes cleared', array());
}
}
/**
* All-ON configuration test for the Forum Access module.
*/
class ForumAccess15AllOnConfigurationTestCase extends ForumAccessBaseTestCase {
public static function getInfo() {
return array(
'name' => '5. Forum Access All-ON Configuration',
'description' => 'Test access for the configuration with all access given.',
'group' => 'Forum Access',
);
}
function testAccess5() {
$this->createAndCheckForum(5, 'All-ON', 'All checkboxes checked', $this->accesses);
}
}
/**
* No-View configuration test for the Forum Access module.
*/
class ForumAccess16NoViewConfigurationTestCase extends ForumAccessBaseTestCase {
public static function getInfo() {
return array(
'name' => '6. Forum Access No-View',
'description' => 'Test access for the configuration without View access (blocks all other access!).',
'group' => 'Forum Access',
);
}
function testAccess6() {
$accesses = $this->accesses;
array_shift($accesses);
$this->createAndCheckForum(6, 'No-View', 'All checkboxes checked except View column', $accesses);
}
}