/**
  * test install application
  *
  */
 public function testInstallApplications()
 {
     try {
         $result = $this->_uit->installApplications(array('ActiveSync'));
     } catch (Exception $e) {
         $this->_uit->uninstallApplications(array('ActiveSync'));
         $result = $this->_uit->installApplications(array('ActiveSync'));
     }
     $apps = $this->_uit->searchApplications();
     // get active sync
     foreach ($apps['results'] as $app) {
         if ($app['name'] == 'ActiveSync') {
             $activeSyncApp = $app;
             break;
         }
     }
     $applicationId = $activeSyncApp['id'];
     // checks
     $this->assertTrue(isset($activeSyncApp));
     $this->assertTrue(isset($applicationId));
     $this->assertEquals('enabled', $activeSyncApp['status']);
     $this->assertEquals('uptodate', $activeSyncApp['install_status']);
     //check if user role has the right to run the recently installed app
     $roles = Tinebase_Acl_Roles::getInstance();
     $userRole = $roles->getRoleByName('user role');
     $rights = $roles->getRoleRights($userRole->getId());
     $hasRight = false;
     foreach ($rights as $right) {
         if ($right['application_id'] === $applicationId && $right['right'] === 'run') {
             $hasRight = true;
         }
     }
     $this->assertTrue($hasRight, 'User role has run right for recently installed app?');
 }
 /**
  * testSaveAuthenticationSql
  */
 public function testSaveAuthenticationSql()
 {
     $testAuthenticationData = $this->_json->loadAuthenticationData();
     $testAuthenticationData['authentication']['backend'] = Tinebase_Auth::SQL;
     $testAuthenticationData['authentication'][Tinebase_Auth::SQL]['adminLoginName'] = 'phpunit-admin';
     $testAuthenticationData['authentication'][Tinebase_Auth::SQL]['adminPassword'] = '******';
     $testAuthenticationData['authentication'][Tinebase_Auth::SQL]['adminPasswordConfirmation'] = 'phpunit-password';
     $this->_uninstallAllApps();
     $result = $this->_json->saveAuthentication($testAuthenticationData);
     $savedAuthenticationData = $this->_json->loadAuthenticationData();
     $adminUser = Tinebase_User::getInstance()->getFullUserByLoginName('phpunit-admin');
     $this->assertTrue($adminUser instanceof Tinebase_Model_User);
     //test if Tinebase stack was installed
     $apps = $this->_json->searchApplications();
     $baseApplicationStack = array('Tinebase', 'Admin', 'Addressbook');
     foreach ($apps['results'] as $app) {
         if ($app['install_status'] === 'uptodate' && false !== ($index = array_search($app['name'], $baseApplicationStack))) {
             unset($baseApplicationStack[$index]);
         }
     }
     $this->assertTrue(empty($baseApplicationStack), 'Assure that base application stack was installed after saving authentication');
     $this->_uninstallAllApps();
     //Ensure that all aps get re-installed with default username/password because some tests rely on these values
 }