function test_checkPackageContents() { $oPackageManager = new OX_PluginManager(); /* define('OX_PLUGIN_ERROR_PACKAGE_DEFINITION_NOT_FOUND' , -1); define('OX_PLUGIN_ERROR_PACKAGE_EXTRACT_FAILED' , -2); define('OX_PLUGIN_ERROR_PACKAGE_PARSE_FAILED' , -3); define('OX_PLUGIN_ERROR_PACKAGE_VERSION_NOT_FOUND' , -4); define('OX_PLUGIN_ERROR_PLUGIN_DEFINITION_MISSING' , -5); define('OX_PLUGIN_ERROR_PACKAGE_CONTENTS_MISMATCH' , -6); define('OX_PLUGIN_ERROR_PLUGIN_EXTRACT_FAILED' , -7); define('OX_PLUGIN_ERROR_PLUGIN_PARSE_FAILED' , -8); define('OX_PLUGIN_ERROR_FILE_COUNT_MISMATCH' , -9); define('OX_PLUGIN_ERROR_ILLEGAL_FILE' , -10); define('OX_PLUGIN_ERROR_PLUGIN_DECLARATION_MISMATCH' , -11); */ $result = $oPackageManager->_checkPackageContents('testPluginPackage.xml', MAX_PATH . $this->testpathData . 'zipBad_FileIllegal/testPluginPackage.zip'); $this->assertFalse($result); $this->assertEqual($oPackageManager->errcode, OX_PLUGIN_ERROR_ILLEGAL_FILE); $result = $oPackageManager->_checkPackageContents('testPluginPackage.xml', MAX_PATH . $this->testpathData . 'zipBad_FileExtra/testPluginPackage.zip'); $this->assertFalse($result); $this->assertEqual($oPackageManager->errcode, OX_PLUGIN_ERROR_FILE_COUNT_MISMATCH); $result = $oPackageManager->_checkPackageContents('testPluginPackage.xml', MAX_PATH . $this->testpathData . 'zipBad_FileMisnamed/testPluginPackage.zip'); $this->assertFalse($result); $this->assertEqual($oPackageManager->errcode, OX_PLUGIN_ERROR_PLUGIN_DECLARATION_MISMATCH); $GLOBALS['_MAX']['CONF']['plugins']['testPluginPackage'] = 1; $result = $oPackageManager->_checkPackageContents('testPluginPackage.xml', MAX_PATH . $this->testpathData . 'zipGood/testPluginPackage.zip'); $this->assertFalse($result); $this->assertEqual($oPackageManager->errcode, OX_PLUGIN_ERROR_PACKAGE_NAME_EXISTS); unset($GLOBALS['_MAX']['CONF']['plugins']['testPluginPackage']); $GLOBALS['_MAX']['CONF']['pluginGroupComponents']['testPlugin'] = 1; $result = $oPackageManager->_checkPackageContents('testPluginPackage.xml', MAX_PATH . $this->testpathData . 'zipGood/testPluginPackage.zip'); $this->assertFalse($result); $this->assertEqual($oPackageManager->errcode, OX_PLUGIN_ERROR_PLUGIN_NAME_EXISTS); unset($GLOBALS['_MAX']['CONF']['pluginGroupComponents']['testPlugin']); $result = $oPackageManager->_checkPackageContents('testPluginPackage.xml', MAX_PATH . $this->testpathData . 'zipGood/testPluginPackage.zip'); $this->assertTrue($result); $this->assertEqual(count($oPackageManager->aParse), 2); $this->assertTrue(isset($oPackageManager->aParse['package'])); $this->assertTrue(isset($oPackageManager->aParse['plugins'])); $this->assertEqual(count($oPackageManager->aParse['plugins']), 1); $this->assertEqual($oPackageManager->errcode, OX_PLUGIN_ERROR_PACKAGE_OK); $result = $oPackageManager->_checkPackageContents('testPluginPackage.xml', MAX_PATH . $this->testpathData . 'zipGoodTrans/testPluginPackage.zip'); $this->assertTrue($result); $this->assertEqual(count($oPackageManager->aParse), 2); $this->assertTrue(isset($oPackageManager->aParse['package'])); $this->assertTrue(isset($oPackageManager->aParse['plugins'])); $this->assertEqual(count($oPackageManager->aParse['plugins']), 1); $this->assertEqual($oPackageManager->errcode, OX_PLUGIN_ERROR_PACKAGE_OK); }
function test_upgradeConfig() { $oPkgMgr = new OX_PluginManager(); $zipFile = $this->aUpload['tmp_name']; // version 2 package should be installed // put the version 3 package in place $this->_switchFiles(3); $this->assertTrue($oPkgMgr->_checkPackageContents($this->packageName . '.xml', $zipFile, true)); $aPlugin = $oPkgMgr->aParse['plugins'][1]; $this->assertEqual($aPlugin['version'], '0.0.3'); // Test 2 : upgrade to version 0.0.3 ; this involves 0 upgrade or schema packages, just a version stamp $oUpgrader = new OX_Plugin_UpgradeComponentGroup($aPlugin, $oPkgMgr); $this->assertTrue($oUpgrader->canUpgrade()); $this->assertEqual($oUpgrader->existing_installation_status, OA_STATUS_CAN_UPGRADE); // decompress the zip file, 2nd param indicates overwrite previous files $oPkgMgr->_unpack($this->aUpload, true); // now that the files are in place, the upgrader can do a schema integrity check $this->assertTrue($oUpgrader->canUpgrade()); $this->assertEqual($oUpgrader->existing_installation_status, OA_STATUS_CAN_UPGRADE); $this->assertEqual(count($oUpgrader->aPackageList), 0); $aConf =& $GLOBALS['_MAX']['CONF'][$aPlugin['name']]; // _upgradeConfig calls _upgradeSettings() and _upgradePreferences // Test 1 Settings // set non-default settings $aConf['setting1'] = 'testval1'; $aConf['setting2'] = 'testval2'; $aConf['setting3'] = 'testval3'; $this->assertTrue($oUpgrader->_upgradeSettings()); // old settings should have original values // new setting should have default value // deprecated setting should no longer exist $aConf =& $GLOBALS['_MAX']['CONF'][$aPlugin['name']]; $this->assertEqual(count($aConf), 3); $this->assertEqual($aConf['setting1'], 'testval1'); $this->assertEqual($aConf['setting2'], 'testval2'); $this->assertFalse(isset($aConf['setting3'])); $this->assertEqual($aConf['setting4'], 'setval4'); // Test 2 Preferences $oDbh = OA_DB::singleton(); $qryPrefs = 'preference_name LIKE ' . $oDbh->quote('%' . $prefix . '%'); $prefix = $aPlugin['name'] . '_'; $doPreferences = OA_Dal::factoryDO('preferences'); $doPreferences->whereAdd($qryPrefs); $doPreferences->find(); while ($doPreferences->fetch()) { $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc'); $doAccount_Preference_Assoc->whereAdd('preference_id = ' . $doPreferences->preference_id); $aPrefsOld[$doPreferences->preference_name] = array('permission' => $doPreferences->account_type, 'id' => $doPreferences->preference_id, 'acct_assoc' => $doAccount_Preference_Assoc->getAll()); } $this->assertEqual(count($aPrefsOld), 2); $this->assertFalse(isset($aPrefsOld[$prefix . 'preference3'])); $this->assertTrue(isset($aPrefsOld[$prefix . 'preference1'])); $this->assertTrue(isset($aPrefsOld[$prefix . 'preference2'])); $this->assertEqual($aPrefsOld[$prefix . 'preference1']['permission'], 'MANAGER'); $this->assertEqual($aPrefsOld[$prefix . 'preference2']['permission'], 'ADMIN'); $this->assertTrue(isset($aPrefsOld[$prefix . 'preference1']['acct_assoc'])); $this->assertTrue(isset($aPrefsOld[$prefix . 'preference2']['acct_assoc'])); $this->assertEqual($aPrefsOld[$prefix . 'preference1']['acct_assoc'][0]['account_id'], '0'); $this->assertEqual($aPrefsOld[$prefix . 'preference2']['acct_assoc'][0]['account_id'], '0'); $this->assertTrue($oUpgrader->_upgradePreferences()); $doPreferences = OA_Dal::factoryDO('preferences'); $doPreferences->whereAdd($qryPrefs); $doPreferences->find(); while ($doPreferences->fetch()) { $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc'); $doAccount_Preference_Assoc->whereAdd('preference_id = ' . $doPreferences->preference_id); $aPrefsNew[$doPreferences->preference_name] = array('permission' => $doPreferences->account_type, 'id' => $doPreferences->preference_id, 'acct_assoc' => $doAccount_Preference_Assoc->getAll()); } $this->assertEqual(count($aPrefsNew), 2); $this->assertFalse(isset($aPrefsNew[$prefix . 'preference2'])); $this->assertTrue(isset($aPrefsNew[$prefix . 'preference1'])); $this->assertTrue(isset($aPrefsNew[$prefix . 'preference3'])); $this->assertEqual($aPrefsNew[$prefix . 'preference1']['permission'], 'MANAGER'); $this->assertEqual($aPrefsNew[$prefix . 'preference3']['permission'], 'ADMIN'); $this->assertTrue(isset($aPrefsNew[$prefix . 'preference1']['acct_assoc'])); $this->assertTrue(isset($aPrefsNew[$prefix . 'preference3']['acct_assoc'])); $this->assertEqual($aPrefsNew[$prefix . 'preference1']['acct_assoc'][0]['account_id'], '0'); $this->assertEqual($aPrefsNew[$prefix . 'preference3']['acct_assoc'][0]['account_id'], '0'); $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc'); $doAccount_Preference_Assoc->preference_id = $aPrefsOld['testPlugin_preference2']['id']; $this->assertFalse($doAccount_Preference_Assoc->find()); $oPkgMgr->uninstallPackage($this->packageName); }