/** * test set phone rights * * @todo move creation and removal of phone, location, template, ... to seperate tests */ public function testSetPhoneRights() { // add phone rights $this->_backend->setPhoneRights($this->_objects['phone']); $rights = $this->_backend->getPhoneRights($this->_objects['phone']->getId()); $testRight = $rights[0]; $this->assertEquals(1, $testRight->read_right); $this->assertEquals(Zend_Registry::get('currentAccount')->getId(), $testRight->account_id); // delete rights $this->_objects['phone']->rights = new Tinebase_Record_RecordSet('Voipmanager_Model_Snom_PhoneRight'); $this->_backend->setPhoneRights($this->_objects['phone']); $rights = $this->_backend->getPhoneRights($this->_objects['phone']->getId()); $this->assertEquals(0, count($rights)); }
/** * test set phone rights * * @todo move creation and removal of phone, location, template, ... to seperate tests */ public function testSetPhoneRights() { // create phone, location, template $snomLocationBackend = new Voipmanager_Backend_Snom_Location(); $snomTemplateBackend = new Voipmanager_Backend_Snom_Template(); $snomSoftwareBackend = new Voipmanager_Backend_Snom_Software(); $snomSoftwareBackend->create($this->_objects['software']); $snomLocationBackend->create($this->_objects['location']); $snomTemplateBackend->create($this->_objects['template']); $this->_backend->create($this->_objects['phone']); // add phone rights $this->_backend->setPhoneRights($this->_objects['phone']); $rights = $this->_backend->getPhoneRights($this->_objects['phone']->getId()); $testRight = $rights[0]; $this->assertEquals(1, $testRight->read_right); $this->assertEquals(Zend_Registry::get('currentAccount')->getId(), $testRight->account_id); // delete rights $this->_objects['phone']->rights = new Tinebase_Record_RecordSet('Voipmanager_Model_Snom_PhoneRight'); $this->_backend->setPhoneRights($this->_objects['phone']); $rights = $this->_backend->getPhoneRights($this->_objects['phone']->getId()); $this->assertEquals(0, count($rights)); // remove phone, location, template $this->_backend->delete($this->_objects['phone']->getId()); $snomLocationBackend->delete($this->_objects['location']->getId()); $snomTemplateBackend->delete($this->_objects['template']->getId()); $snomSoftwareBackend->delete($this->_objects['software']->getId()); }
/** * update one phone * * @param Voipmanager_Model_Snom_Phone $_phone * @return Voipmanager_Model_Snom_Phone * @throws Voipmanager_Exception_Validation * * @todo do not overwrite update() -> use inspectBefore/After functions */ public function update(Tinebase_Record_Interface $_phone) { // check first if mac address is already used if ($_phone->has('macaddress')) { try { $phoneWithMac = $this->getByMacAddress($_phone->macaddress); if ($phoneWithMac->getId() !== $_phone->getId()) { throw new Voipmanager_Exception_Validation('A phone with this mac address already exists.'); } } catch (Voipmanager_Exception_NotFound $venf) { // everything ok } } try { $db = $this->_backend->getAdapter(); $transactionId = Tinebase_TransactionManager::getInstance()->startTransaction($db); $phone = $this->_backend->update($_phone); $_phoneSettings = $_phone->settings; if ($_phoneSettings instanceof Voipmanager_Model_Snom_PhoneSettings) { // force the right phone_id $_phoneSettings->setId($phone->getId()); // set all settings which are equal to the default settings to NULL $template = Voipmanager_Controller_Snom_Template::getInstance()->get($phone->template_id); $settingDefaults = Voipmanager_Controller_Snom_Setting::getInstance()->get($template->setting_id); foreach ($_phoneSettings->toArray() as $key => $value) { if ($key == 'phone_id') { continue; } if ($settingDefaults->{$key} == $value) { $_phoneSettings->{$key} = NULL; } } if (Voipmanager_Controller_Snom_PhoneSettings::getInstance()->get($phone->getId())) { $phoneSettings = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->update($_phoneSettings); } else { $phoneSettings = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->create($_phoneSettings); } } Voipmanager_Controller_Snom_Line::getInstance()->deletePhoneLines($phone->getId()); $this->_createLines($phone, $_phone->lines); // save phone rights if (isset($_phone->rights)) { $this->_backend->setPhoneRights($_phone); } Tinebase_TransactionManager::getInstance()->commitTransaction($transactionId); } catch (Exception $e) { $this->_handleRecordCreateOrUpdateException($e); } return $this->get($phone->getId()); }
/** * update one phone * * @param Voipmanager_Model_Snom_Phone $_phone * @param Voipmanager_Model_Snom_PhoneSettings|optional $_phoneSettings * @return Voipmanager_Model_Snom_Phone * @throws Voipmanager_Exception_Validation */ public function update(Tinebase_Record_Interface $_phone) { //if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_phone->toArray(), true)); // check first if mac address is already used if ($_phone->has('macaddress')) { try { $phoneWithMac = $this->getByMacAddress($_phone->macaddress); if ($phoneWithMac->getId() !== $_phone->getId()) { throw new Voipmanager_Exception_Validation('A phone with this mac address already exists.'); } } catch (Voipmanager_Exception_NotFound $venf) { // everything ok } } $phone = $this->_backend->update($_phone); $_phoneSettings = $_phone->settings; if ($_phoneSettings instanceof Voipmanager_Model_Snom_PhoneSettings) { // force the right phone_id $_phoneSettings->setId($phone->getId()); // set all settings which are equal to the default settings to NULL $template = Voipmanager_Controller_Snom_Template::getInstance()->get($phone->template_id); $settingDefaults = Voipmanager_Controller_Snom_Setting::getInstance()->get($template->setting_id); foreach ($_phoneSettings->toArray() as $key => $value) { if ($key == 'phone_id') { continue; } if ($settingDefaults->{$key} == $value) { $_phoneSettings->{$key} = NULL; } } if (Voipmanager_Controller_Snom_PhoneSettings::getInstance()->get($phone->getId())) { //if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_phoneSettings->toArray(), true)); $phoneSettings = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->update($_phoneSettings); } else { $phoneSettings = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->create($_phoneSettings); } } Voipmanager_Controller_Snom_Line::getInstance()->deletePhoneLines($phone->getId()); $this->_createLines($phone, $_phone->lines); // save phone rights if (isset($_phone->rights)) { $this->_backend->setPhoneRights($_phone); } return $this->get($phone->getId()); }
/** * Sets up the fixture. * This method is called before a test is executed. * * @access protected */ protected function setUp() { parent::setUp(); $this->_json = new Phone_Frontend_Json(); $this->_adminUser = Tinebase_Core::getUser(); $this->_objects['location'] = new Voipmanager_Model_Snom_Location(array('id' => Tinebase_Record_Abstract::generateUID(), 'name' => 'phpunit test location', 'registrar' => 'registrar')); $this->_objects['software'] = new Voipmanager_Model_Snom_Software(array('id' => Tinebase_Record_Abstract::generateUID())); $this->_objects['setting'] = new Voipmanager_Model_Snom_Setting(array('id' => Tinebase_Record_Abstract::generateUID(), 'name' => 'test setting', 'description' => 'test setting')); $this->_objects['template'] = new Voipmanager_Model_Snom_Template(array('id' => Tinebase_Record_Abstract::generateUID(), 'name' => 'phpunit test location', 'model' => 'snom320', 'software_id' => $this->_objects['software']->getId(), 'setting_id' => $this->_objects['setting']->getId())); $this->_objects['phone'] = new Voipmanager_Model_Snom_Phone(array('id' => Tinebase_Record_Abstract::generateUID(), 'macaddress' => "1234567890cd", 'description' => 'user phone', 'location_id' => $this->_objects['location']->getId(), 'template_id' => $this->_objects['template']->getId(), 'current_model' => 'snom320', 'redirect_event' => 'none')); $this->_objects['phone1'] = new Voipmanager_Model_Snom_Phone(array('id' => Tinebase_Record_Abstract::generateUID(), 'macaddress' => "a234567890cd", 'description' => 'second user phone', 'location_id' => $this->_objects['location']->getId(), 'template_id' => $this->_objects['template']->getId(), 'current_model' => 'snom320', 'redirect_event' => 'none')); $this->_objects['phone2'] = new Voipmanager_Model_Snom_Phone(array('id' => Tinebase_Record_Abstract::generateUID(), 'macaddress' => "1a34567890cd", 'description' => 'jsmith phone', 'location_id' => $this->_objects['location']->getId(), 'template_id' => $this->_objects['template']->getId(), 'current_model' => 'snom320', 'redirect_event' => 'none')); $this->_objects['phonesetting'] = new Voipmanager_Model_Snom_PhoneSettings(array('phone_id' => $this->_objects['phone']->getId(), 'web_language' => 'English')); $this->_objects['phonesetting1'] = new Voipmanager_Model_Snom_PhoneSettings(array('phone_id' => $this->_objects['phone1']->getId(), 'web_language' => 'English')); $this->_objects['phonesetting2'] = new Voipmanager_Model_Snom_PhoneSettings(array('phone_id' => $this->_objects['phone2']->getId(), 'web_language' => 'English')); $this->_objects['phoneOwner'] = array('account_id' => $this->_adminUser->getId(), 'account_type' => 'user'); $this->_objects['phoneOwner2'] = array('account_id' => $this->_personas['jsmith']->getId(), 'account_type' => 'user'); $rights = new Tinebase_Record_RecordSet('Voipmanager_Model_Snom_PhoneRight', array($this->_objects['phoneOwner'])); $rights1 = new Tinebase_Record_RecordSet('Voipmanager_Model_Snom_PhoneRight', array($this->_objects['phoneOwner'])); $rights2 = new Tinebase_Record_RecordSet('Voipmanager_Model_Snom_PhoneRight', array($this->_objects['phoneOwner2'])); $this->_objects['phone']->rights = $rights; $this->_objects['phone1']->rights = $rights1; $this->_objects['phone2']->rights = $rights2; $this->_objects['context'] = new Voipmanager_Model_Asterisk_Context(array('id' => Tinebase_Record_Abstract::generateUID(), 'name' => 'test context', 'description' => 'test context')); $this->_objects['sippeer'] = new Voipmanager_Model_Asterisk_SipPeer(array('id' => Tinebase_Record_Abstract::generateUID(), 'context_id' => $this->_objects['context']->getId())); $this->_objects['sippeer1'] = new Voipmanager_Model_Asterisk_SipPeer(array('id' => Tinebase_Record_Abstract::generateUID(), 'context_id' => $this->_objects['context']->getId())); $this->_objects['sippeer2'] = new Voipmanager_Model_Asterisk_SipPeer(array('id' => Tinebase_Record_Abstract::generateUID(), 'context_id' => $this->_objects['context']->getId())); $this->_objects['line'] = new Voipmanager_Model_Snom_Line(array('id' => Tinebase_Record_Abstract::generateUID(), 'snomphone_id' => $this->_objects['phone']->getId(), 'asteriskline_id' => $this->_objects['sippeer']->getId(), 'linenumber' => 1, 'lineactive' => 1)); $this->_objects['line1'] = new Voipmanager_Model_Snom_Line(array('id' => Tinebase_Record_Abstract::generateUID(), 'snomphone_id' => $this->_objects['phone1']->getId(), 'asteriskline_id' => $this->_objects['sippeer1']->getId(), 'linenumber' => 1, 'lineactive' => 1)); $this->_objects['line2'] = new Voipmanager_Model_Snom_Line(array('id' => Tinebase_Record_Abstract::generateUID(), 'snomphone_id' => $this->_objects['phone2']->getId(), 'asteriskline_id' => $this->_objects['sippeer2']->getId(), 'linenumber' => 1, 'lineactive' => 1)); // create phone, location, template, rights $phoneBackend = new Voipmanager_Backend_Snom_Phone(array('modelName' => 'Phone_Model_MyPhone')); $snomLocationBackend = new Voipmanager_Backend_Snom_Location(); $snomSettingBackend = new Voipmanager_Backend_Snom_Setting(); $snomPhoneSettingBackend = new Voipmanager_Backend_Snom_PhoneSettings(); $snomTemplateBackend = new Voipmanager_Backend_Snom_Template(); $snomSoftwareBackend = new Voipmanager_Backend_Snom_Software(); $snomLineBackend = new Voipmanager_Backend_Snom_Line(); $asteriskSipPeerBackend = new Voipmanager_Backend_Asterisk_SipPeer(); $asteriskContextBackend = new Voipmanager_Backend_Asterisk_Context(); $snomSoftwareBackend->create($this->_objects['software']); $snomLocationBackend->create($this->_objects['location']); $snomSettingBackend->create($this->_objects['setting']); $snomTemplateBackend->create($this->_objects['template']); $phoneBackend->create($this->_objects['phone']); $phoneBackend->create($this->_objects['phone1']); $phoneBackend->create($this->_objects['phone2']); $phoneBackend->setPhoneRights($this->_objects['phone']); $phoneBackend->setPhoneRights($this->_objects['phone1']); $phoneBackend->setPhoneRights($this->_objects['phone2']); $asteriskContextBackend->create($this->_objects['context']); $asteriskSipPeerBackend->create($this->_objects['sippeer']); $asteriskSipPeerBackend->create($this->_objects['sippeer1']); $asteriskSipPeerBackend->create($this->_objects['sippeer2']); $snomLineBackend->create($this->_objects['line']); $snomLineBackend->create($this->_objects['line1']); $snomLineBackend->create($this->_objects['line2']); $snomPhoneSettingBackend->create($this->_objects['phonesetting']); $snomPhoneSettingBackend->create($this->_objects['phonesetting1']); $snomPhoneSettingBackend->create($this->_objects['phonesetting2']); /******************** call history *************************/ $phoneController = Phone_Controller::getInstance(); $this->_objects['call1'] = new Phone_Model_Call(array('id' => 'phpunitcallhistoryid1', 'line_id' => $this->_objects['line']->getId(), 'phone_id' => $this->_objects['phone']->getId(), 'direction' => Phone_Model_Call::TYPE_INCOMING, 'source' => '26', 'destination' => '0406437435')); $this->_objects['call2'] = new Phone_Model_Call(array('id' => 'phpunitcallhistoryid2', 'line_id' => $this->_objects['line']->getId(), 'phone_id' => $this->_objects['phone']->getId(), 'direction' => Phone_Model_Call::TYPE_INCOMING, 'source' => '26', 'destination' => '050364354')); $this->_objects['call2a'] = new Phone_Model_Call(array('id' => 'phpunitcallhistoryid2a', 'line_id' => $this->_objects['line1']->getId(), 'phone_id' => $this->_objects['phone1']->getId(), 'direction' => Phone_Model_Call::TYPE_INCOMING, 'source' => '27', 'destination' => '050364354')); $this->_objects['call3'] = new Phone_Model_Call(array('id' => 'phpunitcallhistoryid3', 'line_id' => $this->_objects['line2']->getId(), 'phone_id' => $this->_objects['phone2']->getId(), 'direction' => Phone_Model_Call::TYPE_INCOMING, 'source' => '78', 'destination' => '050998877')); $this->_objects['call4'] = new Phone_Model_Call(array('id' => 'phpunitcallhistoryid4', 'line_id' => $this->_objects['line2']->getId(), 'phone_id' => $this->_objects['phone2']->getId(), 'direction' => Phone_Model_Call::TYPE_INCOMING, 'source' => '78', 'destination' => '05036998877')); $this->_objects['paging'] = array('start' => 0, 'limit' => 50, 'sort' => 'start', 'dir' => 'ASC'); $this->_objects['filter1'] = array(array('field' => 'query', 'operator' => 'contains', 'value' => '')); $this->_objects['filter2'] = array(array('field' => 'query', 'operator' => 'contains', 'value' => '05036'), array('field' => 'phone_id', 'operator' => 'AND', 'value' => array(array('field' => ':id', 'operator' => 'equals', 'value' => $this->_objects['phone1']->getId())))); $this->_objects['filter2a'] = array(array('field' => 'query', 'operator' => 'contains', 'value' => '05036'), array('field' => 'phone_id', 'operator' => 'AND', 'value' => array(array('field' => ':id', 'operator' => 'equals', 'value' => $this->_objects['phone1']->getId())))); $this->_objects['filter2b'] = array(array('field' => 'destination', 'operator' => 'contains', 'value' => '05036')); $this->_objects['filter3'] = array(array('field' => 'phone_id', 'operator' => 'AND', 'value' => array(array('field' => ':id', 'operator' => 'equals', 'value' => $this->_objects['phone']->getId())))); $this->_objects['filter4'] = array(array('field' => 'phone_id', 'operator' => 'AND', 'value' => array(array('field' => ':id', 'operator' => 'equals', 'value' => $this->_objects['phone2']->getId())))); $this->_objects['filter5'] = array(array('field' => 'query', 'operator' => 'contains', 'value' => '998877')); // create calls $phoneController->callStarted($this->_objects['call1']); $phoneController->callStarted($this->_objects['call2']); $phoneController->callStarted($this->_objects['call2a']); $phoneController->callStarted($this->_objects['call3']); $phoneController->callStarted($this->_objects['call4']); }
/** * Sets up the fixture. * This method is called before a test is executed. * * @access protected */ protected function setUp() { $this->_json = new Phone_Frontend_Json(); $this->_objects['location'] = new Voipmanager_Model_Snom_Location(array('id' => 20001, 'name' => 'phpunit test location', 'registrar' => 'registrar')); $this->_objects['software'] = new Voipmanager_Model_Snom_Software(array('id' => 20003)); $this->_objects['setting'] = new Voipmanager_Model_Snom_Setting(array('id' => 20004, 'name' => 'test setting', 'description' => 'test setting')); $this->_objects['phonesetting'] = new Voipmanager_Model_Snom_PhoneSettings(array('phone_id' => 1001, 'web_language' => 'English')); $this->_objects['template'] = new Voipmanager_Model_Snom_Template(array('id' => 20002, 'name' => 'phpunit test location', 'model' => 'snom320', 'software_id' => $this->_objects['software']->getId(), 'setting_id' => $this->_objects['setting']->getId())); $this->_objects['phone'] = new Voipmanager_Model_Snom_Phone(array('id' => 1001, 'macaddress' => "1234567890cd", 'description' => 'user phone', 'location_id' => $this->_objects['location']->getId(), 'template_id' => $this->_objects['template']->getId(), 'current_model' => 'snom320', 'redirect_event' => 'none')); $this->_objects['phoneOwner'] = array('account_id' => Zend_Registry::get('currentAccount')->getId(), 'account_type' => 'user'); $rights = new Tinebase_Record_RecordSet('Voipmanager_Model_Snom_PhoneRight', array($this->_objects['phoneOwner'])); $this->_objects['phone']->rights = $rights; $this->_objects['line'] = new Voipmanager_Model_Snom_Line(array('id' => 1001, 'snomphone_id' => $this->_objects['phone']->getId(), 'asteriskline_id' => 1001, 'linenumber' => 1, 'lineactive' => 1)); $this->_objects['context'] = new Voipmanager_Model_Asterisk_Context(array('id' => 1001, 'name' => 'test context', 'description' => 'test context')); $this->_objects['sippeer'] = new Voipmanager_Model_Asterisk_SipPeer(array('id' => 1001, 'context_id' => 1001)); // create phone, location, template, rights $phoneBackend = new Voipmanager_Backend_Snom_Phone(array('modelName' => 'Phone_Model_MyPhone')); $snomLocationBackend = new Voipmanager_Backend_Snom_Location(); $snomSettingBackend = new Voipmanager_Backend_Snom_Setting(); $snomPhoneSettingBackend = new Voipmanager_Backend_Snom_PhoneSettings(); $snomTemplateBackend = new Voipmanager_Backend_Snom_Template(); $snomSoftwareBackend = new Voipmanager_Backend_Snom_Software(); $snomLineBackend = new Voipmanager_Backend_Snom_Line(); $asteriskSipPeerBackend = new Voipmanager_Backend_Asterisk_SipPeer(); $asteriskContextBackend = new Voipmanager_Backend_Asterisk_Context(); try { $snomSoftwareBackend->create($this->_objects['software']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } try { $snomLocationBackend->create($this->_objects['location']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } try { $snomSettingBackend->create($this->_objects['setting']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } try { $snomTemplateBackend->create($this->_objects['template']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } try { $phoneBackend->create($this->_objects['phone']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } try { $phoneBackend->setPhoneRights($this->_objects['phone']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } try { $asteriskContextBackend->create($this->_objects['context']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } try { $asteriskSipPeerBackend->create($this->_objects['sippeer']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } try { $snomLineBackend->create($this->_objects['line']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } try { $snomPhoneSettingBackend->create($this->_objects['phonesetting']); } catch (Zend_Db_Statement_Exception $e) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getMessage()); } /******************** call history *************************/ $phoneController = Phone_Controller::getInstance(); $this->_objects['call1'] = new Phone_Model_Call(array('id' => 'phpunitcallhistoryid1', 'line_id' => $this->_objects['line']->getId(), 'phone_id' => $this->_objects['phone']->getId(), 'direction' => Phone_Model_Call::TYPE_INCOMING, 'source' => '26', 'destination' => '0406437435')); $this->_objects['call2'] = new Phone_Model_Call(array('id' => 'phpunitcallhistoryid2', 'line_id' => $this->_objects['line']->getId(), 'phone_id' => $this->_objects['phone']->getId(), 'direction' => Phone_Model_Call::TYPE_INCOMING, 'source' => '26', 'destination' => '050364354')); $this->_objects['paging'] = array('start' => 0, 'limit' => 50, 'sort' => 'start', 'dir' => 'ASC'); $this->_objects['filter1'] = array(array('field' => 'query', 'operator' => 'contains', 'value' => '')); $this->_objects['filter2'] = array(array('field' => 'query', 'operator' => 'contains', 'value' => '050')); $this->_objects['filter3'] = array(array('field' => 'phone_id', 'operator' => 'equals', 'value' => $this->_objects['phone']->getId())); // create calls try { $call = $phoneController->callStarted($this->_objects['call1']); $call = $phoneController->callStarted($this->_objects['call2']); } catch (Zend_Db_Statement_Exception $e) { // exists //echo $e->getMessage(); } }