예제 #1
0
 public function test_gallery_access_permissions()
 {
     $options = array('colltype' => 'contributed', 'course' => $this->course->id);
     $record = $this->getDataGenerator()->create_module('mediagallery', $options);
     $collection = new \mod_mediagallery\collection($record);
     // Contributed mode. Users can see each others galleries.
     self::setUser($this->students[0]);
     $record = array('name' => 'Test gallery', 'instanceid' => $collection->id);
     $gallery = self::getDataGenerator()->get_plugin_generator('mod_mediagallery')->create_gallery($record);
     $mygals = $collection->get_my_galleries();
     $this->assertTrue(isset($mygals[$gallery->id]));
     self::setUser($this->students[1]);
     $mygals = $collection->get_my_galleries();
     $this->assertFalse(isset($mygals[$gallery->id]));
     // Assignment mode. Users cannot see each others galleries.
     // Peer assessment mode. Users can see each others galleries.
     // Instructor mode. Users can see all galleries.
     // Contributable flag on a gallery in contributed mode.
     $generator = self::getDataGenerator()->get_plugin_generator('mod_mediagallery');
     $teaid = $this->teachers[0]->id;
     $stuid1 = $this->students[0]->id;
     $stuid2 = $this->students[1]->id;
     $record = array('name' => 'Test gallery', 'instanceid' => $collection->id, 'contributable' => 1, 'userid' => $this->students[0]->id);
     $gallery = $generator->create_gallery($record);
     $this->assertTrue($gallery->user_can_edit($stuid1));
     $this->assertFalse($gallery->user_can_edit($stuid2));
     $this->assertTrue($gallery->user_can_contribute($stuid1));
     $this->assertTrue($gallery->user_can_contribute($stuid2));
     $record = array('galleryid' => $gallery->id, 'userid' => $stuid1);
     $item1 = $generator->create_item($record);
     $record = array('galleryid' => $gallery->id, 'userid' => $stuid2);
     $item2 = $generator->create_item($record);
     // Stuid1 owns the gallery and the item. So stuid2 can do nothing to
     // it.
     $this->assertTrue($item1->user_can_edit($stuid1));
     $this->assertTrue($item1->user_can_remove($stuid1));
     $this->assertTrue($item1->user_can_remove($teaid));
     $this->assertFalse($item1->user_can_edit($stuid2));
     $this->assertFalse($item1->user_can_edit($teaid));
     $this->assertFalse($item1->user_can_remove($stuid2));
     // Stuid2 owns the item, but not the gallery. So only stuid2 and teacher
     // can remove it.
     $this->assertTrue($item2->user_can_edit($stuid2));
     $this->assertTrue($item2->user_can_remove($stuid2));
     $this->assertTrue($item2->user_can_remove($teaid));
     $this->assertFalse($item2->user_can_edit($stuid1));
     $this->assertFalse($item2->user_can_edit($teaid));
     $this->assertFalse($item2->user_can_remove($stuid1));
     // Flag off.
     $record = array('name' => 'Test gallery', 'instanceid' => $collection->id, 'contributable' => 0, 'userid' => $this->students[0]->id);
     $gallery = $generator->create_gallery($record);
     $this->assertTrue($gallery->user_can_edit($stuid1));
     $this->assertFalse($gallery->user_can_edit($stuid2));
     $this->assertTrue($gallery->user_can_contribute($stuid1));
     $this->assertFalse($gallery->user_can_contribute($stuid2));
 }