function CourseObjectBookTestCase::testBookCourseObjectContentAccess in Course 7
Same name and namespace in other branches
- 7.2 modules/course_book/course_book.test \CourseObjectBookTestCase::testBookCourseObjectContentAccess()
Books have special behavior when it comes to content access. All the sub pages should be protected.
@todo this test is broken. Node access not working the same way from within simpletest.
File
- modules/
course_book/ course_book.test, line 81
Class
- CourseObjectBookTestCase
- Tests for Book support in Course
Code
function testBookCourseObjectContentAccess() {
$this
->pass('Please fix me.');
return;
$this
->drupalLogin($this->admin_user);
// We just turned on node_access_book which requires us to rebuild node
// access.
node_access_rebuild();
// Create a course with 1 book.
$courseNode = $this
->createCourseNode();
$co1 = course_get_course_object('course_book', 'book');
$co1
->setCourse($courseNode->nid);
$co1
->setUser($this->admin_user);
// Set to private.
$co1
->setOption('private', 1);
$co1
->save();
// Add some more book pages.
$bp1 = $this
->drupalCreateNode(array(
'type' => 'book',
'book' => array(
'bid' => $co1
->getInstanceId(),
),
));
$bp2 = $this
->drupalCreateNode(array(
'type' => 'book',
'book' => array(
'bid' => $co1
->getInstanceId(),
),
));
// Simulate course_book_node_insert().
$co1
->save();
// Hack to simluate what happens on the UI. This test does not work
// correctly from simpletest for some reason.
db_query("delete from {node_access} where realm = 'all'");
// Try to visit the protected pages.
$this
->drupalLogin($this->student_user);
$this
->drupalGet("node/" . $co1
->getInstanceId());
$this
->assertResponse(403);
$this
->drupalGet("node/{$bp1->nid}");
$this
->assertResponse(403);
$this
->drupalGet("node/{$bp2->nid}");
$this
->assertResponse(403);
// Add a new page to the book, after it is already saved.
$this
->drupalLogin($this->admin_user);
$bp3 = $this
->drupalCreateNode(array(
'type' => 'book',
'book' => array(
'bid' => $co1
->getInstanceId(),
),
));
// Simulate course_book_node_insert().
$co1
->save();
// Hack to simluate what happens on the UI. This test does not work
// correctly from simpletest for some reason.
db_query("delete from {node_access} where realm = 'all'");
// Check that the new book page also had it's ACL set up.
$this
->drupalLogin($this->student_user);
$this
->drupalGet("node/{$bp3->nid}");
$this
->assertResponse(403);
// Enroll the user in the course and go to the first object.
course_enroll($courseNode, $this->student_user);
$this
->drupalGet("node/{$courseNode->nid}/course-object/" . $co1
->getId());
// Make sure user can access all the sub-pages now.
$this
->drupalGet("node/{$bp1->nid}");
$this
->assertResponse(200);
$this
->drupalGet("node/{$bp2->nid}");
$this
->assertResponse(200);
$this
->drupalGet("node/{$bp3->nid}");
$this
->assertResponse(200);
}