public function testInsertPermission()
 {
     $this->testDb->createPlainTables(array('perm_upload'));
     $accessibleBefore = $this->uploadPermissionDao->isAccessible($uploadId = 1, $groupId = 2);
     assertThat($accessibleBefore, equalTo(false));
     $this->uploadPermissionDao->insertPermission($uploadId, $groupId, Auth::PERM_READ);
     $accessibleAfter = $this->uploadPermissionDao->isAccessible($uploadId, $groupId);
     assertThat($accessibleAfter, equalTo(true));
     $this->uploadPermissionDao->insertPermission($uploadId, $groupId, Auth::PERM_NONE);
     $accessibleNomore = $this->uploadPermissionDao->isAccessible($uploadId, $groupId);
     assertThat($accessibleNomore, equalTo(false));
 }
 private function insertPermission($groupId, $uploadId, $permission, $uploadList)
 {
     $fileName = false;
     foreach ($uploadList as $uploadEntry) {
         if ($uploadEntry['upload_pk']) {
             $fileName = $uploadEntry['name'];
         }
     }
     if (empty($fileName)) {
         throw new \Exception('This upload is missing or inaccessible');
     }
     $reuseBit = $permission & self::MOD_REUSE;
     if ($reuseBit) {
         $jobId = \JobAddJob(Auth::getUserId(), $groupId, $fileName, $uploadId);
         $reuserAgent = \plugin_find('agent_reuser');
         $request = new Request(array('uploadToReuse' => "{$uploadId}," . Auth::getGroupId(), 'groupId' => $groupId));
         $reuserAgent->scheduleAgent($jobId, $uploadId, $errorMsg, $request);
         if (!empty($errorMsg)) {
             throw new Exception($errorMsg);
         }
         $permission ^= $reuseBit;
     }
     $this->uploadPermDao->insertPermission($uploadId, $groupId, $permission);
 }