summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDries2012-07-26 17:41:15 -0400
committerDries2012-07-26 17:41:15 -0400
commitb4f471e47b78746faf761d103ca019b3476e9662 (patch)
treed402891a7713473490dbcd0f68e2fb514e7050a0
parentd1cb1258d8777de39dcd2aed85dedf3de55fc03f (diff)
- Patch #1204658 by kbasarab, Berdir, tim.plunkett, webchick: remove node access base table fallback.
-rw-r--r--core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php100
-rw-r--r--core/modules/tracker/lib/Drupal/tracker/Tests/TrackerNodeAccessTest.php67
2 files changed, 167 insertions, 0 deletions
diff --git a/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php b/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php
new file mode 100644
index 0000000..5cf7071
--- /dev/null
+++ b/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\forum\Tests\ForumNodeAccessTest.
+ */
+
+namespace Drupal\forum\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests forum block view for private node access.
+ */
+class ForumNodeAccessTest extends WebTestBase {
+ protected $access_user;
+ protected $admin_user;
+ protected $no_access_user;
+
+ public static function getInfo() {
+ return array(
+ 'name' => 'Forum private node access test',
+ 'description' => 'Tests forum block view for private node access',
+ 'group' => 'Forum',
+ );
+ }
+
+ function setUp() {
+ parent::setUp(array('node', 'comment', 'forum', 'taxonomy', 'tracker', 'node_access_test', 'block'));
+ node_access_rebuild();
+ variable_set('node_access_test_private', TRUE);
+ }
+
+ /**
+ * Creates some users and creates a public node and a private node.
+ *
+ * Adds both active forum topics and new forum topics blocks to the sidebar.
+ * Tests to ensure private node/public node access is respected on blocks.
+ */
+ function testForumNodeAccess() {
+ // Create some users.
+ $access_user = $this->drupalCreateUser(array('node test view'));
+ $no_access_user = $this->drupalCreateUser();
+ $admin_user = $this->drupalCreateUser(array('access administration pages', 'administer modules', 'administer blocks', 'create forum content'));
+
+ $this->drupalLogin($admin_user);
+
+ // Create a private node.
+ $langcode = LANGUAGE_NOT_SPECIFIED;
+ $private_node_title = $this->randomName(20);
+ $edit = array(
+ 'title' => $private_node_title,
+ "body[$langcode][0][value]" => $this->randomName(200),
+ 'private' => TRUE,
+ );
+ $this->drupalPost('node/add/forum/1', $edit, t('Save'));
+ $private_node = $this->drupalGetNodeByTitle($private_node_title);
+ $this->assertTrue(!empty($private_node), 'New private forum node found in database.');
+
+ // Create a public node.
+ $public_node_title = $this->randomName(20);
+ $edit = array(
+ 'title' => $public_node_title,
+ "body[$langcode][0][value]" => $this->randomName(200),
+ );
+ $this->drupalPost('node/add/forum/1', $edit, t('Save'));
+ $public_node = $this->drupalGetNodeByTitle($public_node_title);
+ $this->assertTrue(!empty($public_node), 'New public forum node found in database.');
+
+ // Enable the active forum block.
+ $edit = array();
+ $edit['blocks[forum_active][region]'] = 'sidebar_second';
+ $this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
+ $this->assertResponse(200);
+ $this->assertText(t('The block settings have been updated.'), 'Active forum topics forum block was enabled');
+
+ // Enable the new forum block.
+ $edit = array();
+ $edit['blocks[forum_new][region]'] = 'sidebar_second';
+ $this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
+ $this->assertResponse(200);
+ $this->assertText(t('The block settings have been updated.'), '[New forum topics] Forum block was enabled');
+
+ // Test for $access_user.
+ $this->drupalLogin($access_user);
+ $this->drupalGet('/');
+
+ // Ensure private node and public node are found.
+ $this->assertText($private_node->title, 'Private node found in block by $access_user');
+ $this->assertText($public_node->title, 'Public node found in block by $access_user');
+
+ // Test for $no_access_user.
+ $this->drupalLogin($no_access_user);
+ $this->drupalGet('/');
+
+ // Ensure private node is not found but public is found.
+ $this->assertNoText($private_node->title, 'Private node not found in block by $no_access_user');
+ $this->assertText($public_node->title, 'Public node found in block by $no_access_user');
+ }
+}
diff --git a/core/modules/tracker/lib/Drupal/tracker/Tests/TrackerNodeAccessTest.php b/core/modules/tracker/lib/Drupal/tracker/Tests/TrackerNodeAccessTest.php
new file mode 100644
index 0000000..cb74f02
--- /dev/null
+++ b/core/modules/tracker/lib/Drupal/tracker/Tests/TrackerNodeAccessTest.php
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\tracker\Tests\TrackerNodeAccessTest.
+ */
+
+namespace Drupal\tracker\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests for private node access on /tracker.
+ */
+class TrackerNodeAccessTest extends WebTestBase {
+ protected $access_user;
+ protected $no_access_user;
+
+ public static function getInfo() {
+ return array(
+ 'name' => 'Tracker Node Access Tests',
+ 'description' => 'Tests for private node access on /tracker.',
+ 'group' => 'Tracker',
+ );
+ }
+
+ public function setUp() {
+ parent::setUp(array('node', 'comment', 'tracker', 'node_access_test'));
+ node_access_rebuild();
+ variable_set('node_access_test_private', TRUE);
+ }
+
+
+ /**
+ * Ensure private node on /tracker is only visible to users with permission.
+ */
+ function testTrackerNodeAccess() {
+ // Create user with node test view permission.
+ $access_user = $this->drupalCreateUser(array('node test view'));
+
+ // Create user without node test view permission.
+ $no_access_user = $this->drupalCreateuser();
+
+ $this->drupalLogin($access_user);
+
+ // Create some nodes.
+ $private_node = $this->drupalCreateNode(array(
+ 'title' => t('Private node test'),
+ 'private'=> TRUE,
+ ));
+ $public_node = $this->drupalCreateNode(array(
+ 'title' => t('Public node test'),
+ 'private'=>FALSE,
+ ));
+
+ // User with access should see both nodes created.
+ $this->drupalGet('tracker');
+ $this->assertText($private_node->title, 'Private node is visible to user with private access.');
+ $this->assertText($public_node->title, 'Public node is visible to user with private access.');
+
+ // User without access should not see private node.
+ $this->drupalLogin($no_access_user);
+ $this->drupalGet('tracker');
+ $this->assertNoText($private_node->title, 'Private node is not visible to user without private access.');
+ $this->assertText($public_node->title, 'Public node is visible to user without private access.');
+ }
+}