def test_forward_busy_to_a_user_from_exten_with_the_exten_disabled(self): user_features = UserFeatures(self._agi, self._cursor, self._args) user_features._feature_list = Mock(objects.ExtenFeatures, fwdbusy=False) enabled = user_features._set_rbusy_from_exten(Mock()) assert_that(enabled, equal_to(False))
def test_set_callfilter_ringseconds(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) name = 'XIVO_CALLFILTER_TIMEOUT' value = 1 userfeatures._set_callfilter_ringseconds('TIMEOUT', value) self._agi.set_variable.assert_called_once_with(name, value)
def test_forward_no_answer_to_a_user_from_exten_fwdrna_disabled_on_user(self): user_features = UserFeatures(self._agi, self._cursor, self._args) user_features._feature_list = Mock(objects.ExtenFeatures, fwdrna=True) user_features._user = Mock(objects.User, enablerna=False) enabled = user_features._set_rna_from_exten(Mock()) assert_that(enabled, equal_to(False))
def test_set_feature_list(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) with patch.object(objects.ExtenFeatures, '__init__') as extenfeatures_init: extenfeatures_init.return_value = None userfeatures._set_feature_list() extenfeatures_init.assert_called_with(self._agi, self._cursor) self.assertNotEqual(userfeatures._feature_list, None) self.assertTrue(isinstance(userfeatures._feature_list, objects.ExtenFeatures))
def test_build_interface_from_sip_line(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) line = Mock() line.protocol = 'SIP' line.name = 'abcd' interface = userfeatures._build_interface_from_line(line) self.assertEqual(interface, 'SIP/abcd')
def test_set_rbusy_exten_disabled_noanswer_enabled(self): user_features = UserFeatures(self._agi, self._cursor, self._args) user_features._set_rbusy_from_exten = Mock(return_value=False) user_features._set_rbusy_from_dialaction = Mock(return_value=True) user_features._setbusy(sentinel.called_line) user_features._set_rbusy_from_exten.assert_called_once_with(sentinel.called_line) assert_that(self._agi.set_variable.called_once_with('XIVO_ENABLEBUSY', True))
def test_is_main_line(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) self.assertFalse(userfeatures._is_main_line()) lineid = '97' userfeatures._lineid = lineid userfeatures._master_line = {'id': lineid} self.assertTrue(userfeatures._is_main_line())
def test_set_call_recordfile_doesnt_raise_when_caller_is_none(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) userfeatures._feature_list = Mock() userfeatures._feature_list.callrecord = True userfeatures._user = Mock() userfeatures._user.callrecord = True userfeatures._set_call_recordfile() self._agi.set_variable.assert_called_once_with('XIVO_CALLRECORDFILE', NotEmptyStringMatcher())
def test_set_busy_exten_disabled_noanswer_disabled(self): user_features = UserFeatures(self._agi, self._cursor, self._args) user_features._set_rbusy_from_exten = Mock(return_value=False) user_features._set_rbusy_from_dialaction = Mock(return_value=False) user_features._setbusy(sentinel.called_line) user_features._set_rbusy_from_exten.assert_called_once_with(sentinel.called_line) user_features._set_rbusy_from_dialaction.assert_called_once_with() assert_that(self._agi.set_variable.call_count, equal_to(0))
def test_set_xivo_redirecting_info_full_callerid(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) userfeatures._user = Mock() userfeatures._user.callerid = '"Foobar" <123>' userfeatures._dstnum = '42' userfeatures._set_xivo_redirecting_info() expected_calls = [ call('XIVO_DST_REDIRECTING_NAME', 'Foobar'), call('XIVO_DST_REDIRECTING_NUM', '123'), ] self.assertEqual(self._agi.set_variable.call_args_list, expected_calls)
def test_set_pickup_info(self): context = 'foo' number = '101' userfeatures = UserFeatures(self._agi, self._cursor, self._args) self.assertEqual(None, userfeatures._pickup_context) userfeatures._master_line = {'id': '2', 'number': number, 'context': context} userfeatures._dstnum = number userfeatures._set_pickup_info() self.assertEqual(context, userfeatures._pickup_context) self.assertEqual(number, userfeatures._pickup_exten)
def test_forward_busy_to_a_user_from_exten(self): user_features = UserFeatures(self._agi, self._cursor, self._args) user_features._feature_list = Mock(objects.ExtenFeatures, fwdbusy=True) user_features._user = Mock(objects.User, destbusy='666', enablebusy=True) called_line = Mock(objects.Line, context=sentinel.context) enabled = user_features._set_rbusy_from_exten(called_line) assert_that(enabled, equal_to(True)) assert_that(self._agi.set_variable.call_args_list, contains( call('XIVO_FWD_USER_BUSY_ACTION', 'extension'), call('XIVO_FWD_USER_BUSY_ACTIONARG1', '666'), call('XIVO_FWD_USER_BUSY_ACTIONARG2', sentinel.context), ))
def test_set_xivo_redirecting_info_no_callerid(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) userfeatures._user = Mock() userfeatures._user.firstname = 'First' userfeatures._user.lastname = 'Last' userfeatures._user.callerid = '' userfeatures._dstnum = '42' userfeatures._set_xivo_redirecting_info() expected_calls = [ call('XIVO_DST_REDIRECTING_NAME', 'First Last'), call('XIVO_DST_REDIRECTING_NUM', '42'), ] self.assertEqual(self._agi.set_variable.call_args_list, expected_calls)
def test_set_members(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) userfeatures._set_feature_list = Mock() userfeatures._set_caller = Mock() userfeatures._set_lines = Mock() userfeatures._set_user = Mock() userfeatures._set_members() objects.ExtenFeatures = Mock() old_user, objects.User = objects.User, Mock() self.assertEqual(userfeatures._userid, self._variables['XIVO_USERID']) self.assertEqual(userfeatures._dstid, self._variables['XIVO_DSTID']) self.assertEqual(userfeatures._lineid, self._variables['XIVO_LINEID']) self.assertEqual(userfeatures._zone, self._variables['XIVO_CALLORIGIN']) self.assertEqual(userfeatures._bypass_filter, self._variables['XIVO_CALLFILTER_BYPASS']) self.assertEqual(userfeatures._srcnum, self._variables['XIVO_SRCNUM']) self.assertEqual(userfeatures._dstnum, self._variables['XIVO_DSTNUM']) self.assertTrue(userfeatures._set_feature_list.called) self.assertTrue(userfeatures._set_caller.called) self.assertTrue(userfeatures._set_lines.called) self.assertTrue(userfeatures._set_user.called) objects.User, old_user = old_user, None
def test_forward_busy_to_a_user_dialaction(self): user_features = UserFeatures(self._agi, self._cursor, self._args) user_features._user = Mock(objects.User, id=sentinel.userid) self._cursor.fetchone = Mock(return_value={ 'action': 'user', 'actionarg1': '5', 'actionarg2': '', }) enabled = user_features._set_rbusy_from_dialaction() assert_that(enabled, equal_to(True)) assert_that(self._agi.set_variable.call_args_list, contains( call('XIVO_FWD_USER_BUSY_ACTION', 'user'), call('XIVO_FWD_USER_BUSY_ISDA', '1'), call('XIVO_FWD_USER_BUSY_ACTIONARG1', '5'), call('XIVO_FWD_USER_BUSY_ACTIONARG2', ''), ))
def test_execute(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) userfeatures._set_members = Mock() userfeatures._set_xivo_ifaces = Mock() userfeatures._set_user_filter = Mock() userfeatures._boss_secretary_filter = Mock() userfeatures.execute() self.assertEqual(userfeatures._set_members.call_count, 1) self.assertEqual(userfeatures._set_xivo_ifaces.call_count, 1)
def test_set_user(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) userfeatures._set_xivo_user_name = Mock() userfeatures._set_xivo_redirecting_info = Mock() userfeatures._set_user() self.assertTrue(userfeatures._user is None) self.assertEqual(userfeatures._set_xivo_user_name.call_count, 0) userfeatures._dstid = self._variables['XIVO_DSTID'] with patch.object(objects.User, '__init__') as user_init: user_init.return_value = None userfeatures._set_user() self.assertEqual(userfeatures._set_xivo_user_name.call_count, 1) self.assertEqual(userfeatures._set_xivo_redirecting_info.call_count, 1) self.assertTrue(userfeatures._user is not None) self.assertTrue(isinstance(userfeatures._user, objects.User))
def test_set_xivo_user_name(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) userfeatures._set_xivo_user_name() self.assertEqual(self._agi.call_count, 0) self._agi.set_variable.reset_mock() userfeatures._user = Mock() userfeatures._user.firstname = 'firstname' userfeatures._user.lastname = 'lastname' userfeatures._set_xivo_user_name() self.assertEqual(self._agi.set_variable.call_count, 2)
def test_set_line(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) mocked_line = Mock() mocked_line.number = '1001' userfeatures._set_line() self.assertEqual(userfeatures._line, None) userfeatures._dstid = self._variables['XIVO_DSTID'] with patch('xivo_agid.objects.Line') as lines_cls: lines_cls.return_value = mocked_line userfeatures._set_line() lines_cls.assert_called_with(int(self._variables['XIVO_DSTID'])) self.assertEqual(mocked_line, userfeatures._line)
def test_set_caller(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) userfeatures._set_caller() self.assertTrue(userfeatures._caller is None) userfeatures._userid = self._variables['XIVO_USERID'] with patch.object(objects.User, '__init__') as user_init: user_init.return_value = None userfeatures._set_caller() user_init.assert_called_with(self._agi, self._cursor, self._variables['XIVO_USERID']) self.assertTrue(userfeatures._caller is not None) self.assertTrue(isinstance(userfeatures._caller, objects.User))
def incoming_user_set_features(agi, cursor, args): userfeatures_handler = UserFeatures(agi, cursor, args) userfeatures_handler.execute()
def test_xivo_set_iface_nb(self): userfeatures = UserFeatures(self._agi, self._cursor, self._args) userfeatures._set_xivo_iface_nb(0) self._agi.set_variable.assert_called_once_with('XIVO_INTERFACE_NB', 0)