/**
  * @dataProvider provider
  * @runInSeparateProcess
  * @preserveGlobalState disabled
  * @test
  */
 function update($version = '', $verify = FALSE, $nbrules = 0)
 {
     self::restore_database();
     global $DB;
     $DB->connect();
     if ($version == '') {
         return;
     }
     $query = "SHOW TABLES";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         if (strstr($data[0], "tracker") or strstr($data[0], "fusi")) {
             $DB->query("DROP TABLE " . $data[0]);
         }
     }
     $query = "DELETE FROM `glpi_displaypreferences`\n         WHERE `itemtype` LIKE 'PluginFus%'";
     $DB->query($query);
     $sqlfile = GLPI_ROOT . "/plugins/fusioninventory/phpunit/0_Install/mysql/i-" . $version . ".sql";
     // Load specific FusionInventory version in database
     $result = load_mysql_file($DB->dbuser, $DB->dbhost, $DB->dbdefault, $DB->dbpassword, $sqlfile);
     $this->assertEquals(0, $result['returncode'], "Failed to install Fusioninventory " . $sqlfile . ":\n" . implode("\n", $result['output']));
     $output = array();
     $returncode = 0;
     exec("php -f " . FUSINV_ROOT . "/scripts/cli_install.php -- --as-user 'glpi'", $output, $returncode);
     $this->assertEquals(0, $returncode, implode("\n", $output));
     $GLPIlog = new GLPIlogs();
     $GLPIlog->testSQLlogs();
     $GLPIlog->testPHPlogs();
     $FusinvDB = new FusinvDB();
     $FusinvDB->checkInstall("fusioninventory", "upgrade from " . $version);
     $this->verifyEntityRules($nbrules);
     if ($verify) {
         $this->verifyConfig();
     }
 }
 /**
  * @test
  */
 public function installDatabase()
 {
     $DBvars = get_class_vars('DB');
     drop_database($DBvars['dbuser'], $DBvars['dbhost'], $DBvars['dbdefault'], $DBvars['dbpassword']);
     $result = load_mysql_file($DBvars['dbuser'], $DBvars['dbhost'], $DBvars['dbdefault'], $DBvars['dbpassword'], GLPI_ROOT . "/install/mysql/glpi-0.90-empty.sql");
     $this->assertEquals(0, $result['returncode'], "Failed to install GLPI database:\n" . implode("\n", $result['output']));
 }
 public static function load_mysql_file($filename)
 {
     self::assertFileExists($filename, 'File ' . $filename . ' does not exist!');
     $DBvars = get_class_vars('DB');
     $result = load_mysql_file($DBvars['dbuser'], $DBvars['dbhost'], $DBvars['dbdefault'], $DBvars['dbpassword'], $filename);
     self::assertEquals(0, $result['returncode'], "Failed to restore database:\n" . implode("\n", $result['output']));
 }
 /**
  * @test
  */
 public function installDatabase()
 {
     $DBvars = get_class_vars('DB');
     drop_database($DBvars['dbuser'], $DBvars['dbhost'], $DBvars['dbdefault'], $DBvars['dbpassword']);
     $result = load_mysql_file($DBvars['dbuser'], $DBvars['dbhost'], $DBvars['dbdefault'], $DBvars['dbpassword'], GLPI_ROOT . "/install/mysql/glpi-0.91-empty.sql");
     $output = array();
     $returncode = 0;
     exec("php -f " . GLPI_ROOT . "/tools/cliupdate.php -- --upgrade", $output, $returncode);
     $this->assertEquals(0, $returncode, "Error when update GLPI in CLI mode\n" . implode("\n", $output));
     $this->assertEquals(0, $result['returncode'], "Failed to install GLPI database:\n" . implode("\n", $result['output']));
 }