Example #1
0
 public function importTemplateInProject(Project $project, PFUser $user, $template_path)
 {
     \UserManager::instance()->forceLogin($user->getUserName());
     var_dump('Import Template');
     $this->xml_importer->import($project->getID(), $template_path);
     var_dump('Template imported');
 }
    public function itDoesNotImportsExistingUgroups() {
        stub($this->project_manager)->getProject()->returns($this->project);
        stub($this->ugroup_manager)->getUGroupByName($this->project, 'ug01')->returns(false);
        stub($this->ugroup_manager)->getUGroupByName($this->project, 'ug02')->returns(true);
        stub($this->ugroup_manager)->getUGroupByName($this->project, 'ug03')->returns(false);

        $user_01 = aUser()->withLdapId('ldap_01')->withUserName('user_01')->withId(101)->build();
        $user_02 = aUser()->withLdapId('ldap_02')->withUserName('user_02')->withId(102)->build();
        $user_04 = aUser()->withUserName('user_04')->withId(104)->build();

        stub($this->user_manager)->getUserByIdentifier('ldapId:ldap_01')->returns($user_01);
        stub($this->user_manager)->getUserByIdentifier('ldapId:ldap_02')->returns($user_02);
        stub($this->user_manager)->getUserByIdentifier('user_04')->returns($user_04);

        $this->ugroup_manager->expectCallCount('createEmptyUgroup', 2);
        expect($this->ugroup_manager)->createEmptyUgroup(122,'ug01','descr01')->at(0);
        expect($this->ugroup_manager)->createEmptyUgroup(122,'ug03','descr03')->at(1);

        $this->ugroup_manager->expectCallCount('addUserToUgroup', 3);
        expect($this->ugroup_manager)->addUserToUgroup(122, '*', 101)->at(0);
        expect($this->ugroup_manager)->addUserToUgroup(122, '*', 102)->at(1);
        expect($this->ugroup_manager)->addUserToUgroup(122, '*', 104)->at(2);

        $this->xml_importer->import(122, $this->xml_file_path_with_ugroups);
    }
Example #3
0
 public function createFirstScrum()
 {
     if ($this->areThereConfiguredPlannings()) {
         return;
     }
     $already_existing_tracker = $this->getAlreadyExistingTracker();
     if ($already_existing_tracker) {
         $GLOBALS['Response']->addFeedback(Feedback::WARN, $GLOBALS['Language']->getText('plugin_agiledashboard_first_scrum', 'error_existing_tracker', $already_existing_tracker));
         return;
     }
     try {
         $this->xml_importer->import($this->project->getId(), $this->template_path);
         $GLOBALS['Response']->addFeedback(Feedback::INFO, $GLOBALS['Language']->getText('plugin_agiledashboard_first_scrum', 'created'));
     } catch (Exception $e) {
         $GLOBALS['Response']->addFeedback(Feedback::WARN, $GLOBALS['Language']->getText('plugin_agiledashboard_first_scrum', 'internal_error'));
     }
 }
Example #4
0
 public function testImportProjectCreatesAProject()
 {
     $project_manager = ProjectManager::instance();
     $user_manager = UserManager::instance();
     $importer = new ProjectXMLImporter(EventManager::instance(), $project_manager, new XML_RNGValidator(), new UGroupManager(), new XMLImportHelper($user_manager), new Log_ConsoleLogger());
     $xml_project = dirname(__FILE__) . '/_fixtures/fake_project.xml';
     $importer->import(null, $xml_project);
     // Reset Project Manager (and its cache)
     ProjectManager::clearInstance();
     $project_manager = ProjectManager::instance();
     // Check the project was created
     $project = $project_manager->getProjectByUnixName('toto123');
     $this->assertEqual($project->getPublicName(), 'Toto 123');
     $this->assertEqual($project->getDescription(), '123 Soleil');
     $this->assertEqual($project->usesSVN(), true);
     $this->assertEqual($project->usesCVS(), false);
 }
Example #5
0
 public function testImportProjectCreatesAProject()
 {
     $project_manager = ProjectManager::instance();
     $user_manager = UserManager::instance();
     $importer = new ProjectXMLImporter(EventManager::instance(), $project_manager, new XML_RNGValidator(), new UGroupManager(), new XMLImportHelper($user_manager), new Log_ConsoleLogger());
     $system_event_runner = mock('ProjectImportTest_SystemEventRunner');
     $archive = new Tuleap\Project\XML\Import\DirectoryArchive(__DIR__ . '/_fixtures/fake_project');
     $importer->importNewFromArchive($archive, $system_event_runner);
     // Reset Project Manager (and its cache)
     ProjectManager::clearInstance();
     $project_manager = ProjectManager::instance();
     // Check the project was created
     $project = $project_manager->getProjectByUnixName('toto123');
     $this->assertEqual($project->getPublicName(), 'Toto 123');
     $this->assertEqual($project->getDescription(), '123 Soleil');
     $this->assertEqual($project->usesSVN(), true);
     $this->assertEqual($project->usesCVS(), false);
     $system_event_runner->expectCallCount('runSystemEvents', 1);
     $system_event_runner->expectCallCount('checkPermissions', 1);
 }
Example #6
0
 protected function importTemplateInProject($project_id, $template)
 {
     $xml_importer = new ProjectXMLImporter(EventManager::instance(), $this->project_manager, new XML_RNGValidator(), new UGroupManager(), UserManager::instance(), new XMLImportHelper(), new ProjectXMLImporterLogger());
     $this->user_manager->forceLogin(self::ADMIN_USER_NAME);
     $xml_importer->import($project_id, $this->template_path . $template);
 }
$xml_validator = new XML_RNGValidator();
$transformer = new User\XML\Import\MappingFileOptimusPrimeTransformer($user_manager);
$logger = new ProjectXMLImporterLogger();
$builder = new User\XML\Import\UsersToBeImportedCollectionBuilder($user_manager, $logger, $security, $xml_validator);
$console = new Log_ConsoleLogger();
try {
    $user = $user_manager->forceLogin($username);
    if (!$user->isSuperUser() && !$user->isAdmin($project_id) || !$user->isActive()) {
        throw new RuntimeException($GLOBALS['Language']->getText('project_import', 'invalid_user', array($username)));
    }
    $archive = new ZipArchive();
    if ($archive->open($archive_path) !== true) {
        $console->error("Unable to open archive {$archive_path}");
        exit(1);
    }
    $collection_from_archive = $builder->buildFromArchive($archive);
    $users_collection = $transformer->transform($collection_from_archive, $mapping_path);
    $users_collection->process($user_manager, $console);
    $user_finder = new User\XML\Import\Mapping($user_manager, $users_collection, $logger);
    $xml_importer = new ProjectXMLImporter(EventManager::instance(), ProjectManager::instance(), $xml_validator, new UGroupManager(), $user_finder, new ProjectXMLImporterLogger());
    $xml_importer->importFromArchive($project_id, $archive);
    $archive->close();
    exit(0);
} catch (XML_ParseException $exception) {
    foreach ($exception->getErrors() as $parse_error) {
        $console->error('XML: ' . $parse_error . ' line:' . $exception->getSourceXMLForError($parse_error));
    }
} catch (Exception $exception) {
    $console->error($exception->getMessage());
}
exit(1);
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Tuleap. If not, see <http://www.gnu.org/licenses/>.
 */
require_once 'pre.php';
if ($argc < 4) {
    echo <<<EOT
Usage: {$argv['0']} project_id admin_user_name xml_file_path

EOT;
    exit(1);
}
$user_manager = UserManager::instance();
$xml_importer = new ProjectXMLImporter(EventManager::instance(), ProjectManager::instance(), new XML_RNGValidator(), new UGroupManager(), UserManager::instance(), new XMLImportHelper(), new ProjectXMLImporterLogger());
try {
    $project_id = $argv[1];
    $user = $user_manager->forceLogin($argv[2]);
    if (!$user->isSuperUser() && !$user->isAdmin($project_id) || !$user->isActive()) {
        throw new RuntimeException($GLOBALS['Language']->getText('project_import', 'invalid_user', array($user_name)));
    }
    $xml_importer->import($project_id, $argv[3]);
} catch (XML_ParseException $exception) {
    foreach ($exception->getErrors() as $parse_error) {
        fwrite(STDERR, "*** ERROR: " . $parse_error . PHP_EOL);
    }
    exit(1);
} catch (Exception $exception) {
    fwrite(STDERR, "*** ERROR: " . $exception->getMessage() . PHP_EOL);
    exit(1);
 private function importConfiguration()
 {
     $xml_importer = new ProjectXMLImporter(EventManager::instance(), ProjectManager::instance(), new XML_RNGValidator(), new UGroupManager(), UserManager::instance(), new XMLImportHelper(), new ProjectXMLImporterLogger());
     try {
         $xml_importer->import($this->group_id, $_FILES["template_file"]["tmp_name"]);
         $GLOBALS['Response']->addFeedback(Feedback::INFO, $GLOBALS['Language']->getText('plugin_agiledashboard', 'import_template_success'));
     } catch (Exception $e) {
         $GLOBALS['Response']->addFeedback(Feedback::ERROR, $GLOBALS['Language']->getText('plugin_agiledashboard', 'cannot_import'));
     }
 }
Example #10
0
try {
    $user = $user_manager->forceLogin($username);
    if (!$user->isSuperUser() && !$user->isAdmin($project_id) || !$user->isActive()) {
        throw new RuntimeException($GLOBALS['Language']->getText('project_import', 'invalid_user', array($username)));
    }
    if (is_dir($archive_path)) {
        $archive = new Import\DirectoryArchive($archive_path);
    } else {
        $archive = new Import\ZipArchive($archive_path, ForgeConfig::get('tmp_dir'));
    }
    $archive->extractFiles();
    $collection_from_archive = $builder->buildFromArchive($archive);
    $users_collection = $transformer->transform($collection_from_archive, $mapping_path);
    $users_collection->process($user_manager, $broker_log);
    $user_finder = new User\XML\Import\Mapping($user_manager, $users_collection, $broker_log);
    $xml_importer = new ProjectXMLImporter(EventManager::instance(), ProjectManager::instance(), $xml_validator, new UGroupManager(), $user_finder, $broker_log);
    if (empty($project_id)) {
        $factory = new SystemEventProcessor_Factory($logger, SystemEventManager::instance(), EventManager::instance());
        $system_event_runner = new Tuleap\Project\SystemEventRunner($factory);
        $xml_importer->importNewFromArchive($archive, $system_event_runner, $project_name_override);
    } else {
        $xml_importer->importFromArchive($project_id, $archive);
    }
    $archive->cleanUp();
    exit(0);
} catch (XML_ParseException $exception) {
    foreach ($exception->getErrors() as $parse_error) {
        $broker_log->error('XML: ' . $parse_error . ' line:' . $exception->getSourceXMLForError($parse_error));
    }
} catch (Exception $exception) {
    $broker_log->error(get_class($exception) . ': ' . $exception->getMessage() . ' in ' . $exception->getFile() . ' L' . $exception->getLine());