def test_incalls_relationship(self): ivr = self.add_ivr() incall1 = self.add_incall(destination=Dialaction(action='ivr', actionarg1=str(ivr.id))) incall2 = self.add_incall(destination=Dialaction(action='ivr', actionarg1=str(ivr.id))) self.session.expire_all() assert_that(ivr.incalls, contains_inanyorder(incall1, incall2))
def test_getter(self): group = self.add_group() incall1 = self.add_incall(destination=Dialaction(action='group', actionarg1=str(group.id))) incall2 = self.add_incall(destination=Dialaction(action='group', actionarg1=str(group.id))) assert_that(group.incalls, contains_inanyorder(incall1, incall2))
def test_update_delete_undefined_key(self): call_filter = self.add_call_filter() dialaction1 = Dialaction(action='none') call_filter_dao.update_fallbacks(call_filter, {'old_key': dialaction1}) self.session.expire_all() dialaction2 = Dialaction(action='user', actionarg1='1') call_filter_dao.update_fallbacks(call_filter, {'key': dialaction2}) self.session.expire_all() self.session.expire_all() assert_that(call_filter.fallbacks, is_not(has_key('old_key')))
def test_update_existing_key(self): call_filter = self.add_call_filter() dialaction1 = Dialaction(action='none') call_filter_dao.update_fallbacks(call_filter, {'key': dialaction1}) self.session.expire_all() dialaction2 = Dialaction(action='user', actionarg1='1') call_filter_dao.update_fallbacks(call_filter, {'key': dialaction2}) self.session.expire_all() self.session.expire_all() assert_that(call_filter.fallbacks['key'], has_properties(action='user', actionarg1='1'))
def test_find_all_by_custom_column(self): incall1 = self.add_incall( destination=Dialaction(action='user', actionarg1='2')) incall2 = self.add_incall( destination=Dialaction(action='user', actionarg1='2')) self.add_incall(destination=Dialaction(action='user', actionarg1='3')) incalls = incall_dao.find_all_by(user_id=2) assert_that( incalls, has_items(has_property('id', incall1.id), has_property('id', incall2.id)), )
def create_objects(self, data): for key in [ 'invalid_destination', 'timeout_destination', 'abort_destination' ]: if data.get(key): data[key] = Dialaction(**data[key]) if 'choices' in data: data['choices'] = [ IVRChoice( exten=choice['exten'], destination=Dialaction(**choice['destination']), ) for choice in data['choices'] ] return data
def test_user_relationship(self): user_row = self.add_user() incall_row = self.add_incall( destination=Dialaction(action='user', actionarg1=str(user_row.id))) incall = incall_dao.get(incall_row.id) assert_that(incall, equal_to(incall_row)) assert_that(incall.destination.user, user_row)
def test_ivr_relationship(self): ivr_row = self.add_ivr() incall_row = self.add_incall( destination=Dialaction(action='ivr', actionarg1=str(ivr_row.id))) incall = incall_dao.get(incall_row.id) assert_that(incall, equal_to(incall_row)) assert_that(incall.destination.ivr, ivr_row)
def test_voicemail_relationship(self): voicemail_row = self.add_voicemail() incall_row = self.add_incall(destination=Dialaction( action='voicemail', actionarg1=str(voicemail_row.id))) incall = incall_dao.get(incall_row.id) assert_that(incall, equal_to(incall_row)) assert_that(incall.destination.voicemail, voicemail_row)
def test_create_with_all_fields(self): incall = Incall( preprocess_subroutine='MySubroutine', greeting_sound='GreetingSound', description='incall description', caller_id_mode='prepend', caller_id_name='incall_', destination=Dialaction(action='user', actionarg1='2', actionarg2='10'), tenant_uuid=self.default_tenant.uuid, ) created_incall = incall_dao.create(incall) row = self.session.query(Incall).first() assert_that(created_incall, equal_to(row)) assert_that( created_incall, has_properties( id=is_not(none()), preprocess_subroutine='MySubroutine', greeting_sound='GreetingSound', description='incall description', caller_id_mode='prepend', caller_id_name='incall_', destination=has_properties(action='user', actionarg1='2', actionarg2='10'), tenant_uuid=self.default_tenant.uuid, ), )
def test_group_relationship(self): group_row = self.add_group() incall_row = self.add_incall(destination=Dialaction( action='group', actionarg1=str(group_row.id))) incall = incall_dao.get(incall_row.id) assert_that(incall, equal_to(incall_row)) assert_that(incall.destination.group, group_row)
def _insert_dialaction(self, incall_id, action, actionarg1): dialaction = Dialaction() dialaction.event = 'answer' dialaction.category = 'incall' dialaction.categoryval = str(incall_id) dialaction.action = action dialaction.actionarg1 = actionarg1 dialaction.actionarg2 = '' dialaction.linked = 1 self.session.begin() self.session.add(dialaction) self.session.commit()
def test_find_by_incall_id(self): user_line = self.add_user_line_with_exten(context='default') incall = self.add_incall(destination=Dialaction( action='user', actionarg1=user_line.user_id)) result = profile_dao.find_by_incall_id(incall_id=incall.id) assert_that(result.profile, equal_to(user_line.line.context)) assert_that(result.xivo_user_uuid, equal_to(user_line.user.uuid))
def test_get_by_user_id(self): incall_row = self.add_incall( destination=Dialaction(action='user', actionarg1='2')) incall = incall_dao.get_by(user_id=2) assert_that(incall, equal_to(incall_row)) assert_that(incall.user_id, equal_to(2))
def add_dialaction(self, **kwargs): kwargs.setdefault('event', 'never mind') kwargs.setdefault('category', 'incall') kwargs.setdefault('categoryval', '1') kwargs.setdefault('action', 'none') dialaction = Dialaction(**kwargs) self.add_me(dialaction) return dialaction
def test_update(self): call_filter = self.add_call_filter() dialaction = Dialaction(action='none') call_filter_dao.update_fallbacks(call_filter, {'key': dialaction}) self.session.expire_all() assert_that(call_filter.fallbacks['key'], has_properties(action='none'))
def post(self): schema = self.schema() form = schema.load(request.get_json()) form['destination'] = Dialaction(**form['destination']) form = self.add_tenant_to_form(form) model = self.model(**form) model = self.service.create(model) return schema.dump(model), 201, self.build_headers(model)
def update_destination(self, entry): ring_seconds = entry.extract_field('incall', 'ring_seconds') user = entry.get_resource('user') incall = entry.get_resource('incall') incall.destination = Dialaction( action='user', actionarg1=str(user.id), actionarg2=str(ring_seconds) if ring_seconds else None, )
def parse_and_update(self, model): form = self.schema().load(request.get_json(), partial=True) updated_fields = self.find_updated_fields(model, form) if 'destination' in form: form['destination'] = Dialaction(**form['destination']) for name, value in form.items(): setattr(model, name, value) self.service.edit(model, updated_fields)
def add_switchboard(self, **kwargs): kwargs.setdefault('uuid', str(uuid.uuid4())) kwargs.setdefault('tenant_uuid', self.default_tenant.uuid) kwargs.setdefault('name', self._random_name()) for fallback, destination in six.iteritems(kwargs.get('fallbacks', {})): kwargs['fallbacks'][fallback] = Dialaction(**destination) switchboard = Switchboard(**kwargs) self.add_me(switchboard) return switchboard
def _insert_dialaction(self, incall_id, action, actionarg1): dialaction = Dialaction() dialaction.event = 'answer' dialaction.category = 'incall' dialaction.categoryval = str(incall_id) dialaction.action = action dialaction.actionarg1 = actionarg1 dialaction.actionarg2 = '' dialaction.linked = 1 self.add_me(dialaction)
def test_edit_all_fields(self): incall = incall_dao.create( Incall( preprocess_subroutine='MySubroutine', greeting_sound='GreetingSound', description='incall description', caller_id_mode='prepend', caller_id_name='incall_', destination=Dialaction(action='user', actionarg1='2', actionarg2='10'), tenant_uuid=self.default_tenant.uuid, )) incall = incall_dao.get(incall.id) incall.preprocess_subroutine = 'other_subroutine' incall.greeting_sound = 'other_greeting_sound' incall.description = 'other description' incall.caller_id_mode = 'append' incall.caller_id_name = '_incall' incall.destination = Dialaction(action='queue', actionarg1='1', actionarg2='2') incall_dao.edit(incall) row = self.session.query(Incall).first() assert_that(incall, equal_to(row)) assert_that( incall, has_properties( id=is_not(none()), preprocess_subroutine='other_subroutine', greeting_sound='other_greeting_sound', description='other description', caller_id_mode='append', caller_id_name='_incall', destination=has_properties(action='queue', actionarg1='1', actionarg2='2'), ), )
def _insert_dialaction(self, incall_id, action, actionarg1): dialaction = Dialaction() dialaction.event = "answer" dialaction.category = "incall" dialaction.categoryval = str(incall_id) dialaction.action = action dialaction.actionarg1 = actionarg1 dialaction.actionarg2 = "" dialaction.linked = 1 self.session.begin() self.session.add(dialaction) self.session.commit()
def test_edit_set_fields_to_null(self): ivr = self.add_ivr( name='myivr', greeting_sound='greeting', menu_sound='menu', invalid_sound='invalid', abort_sound='abort', timeout=10, max_tries=2, description='description', invalid_destination=Dialaction(action='user', actionarg1='1'), timeout_destination=Dialaction(action='user', actionarg1='2'), choices=[ IVRChoice(exten='1', destination=Dialaction(action='user', actionarg1='3')) ], ) self.session.expire_all() ivr.greeting_sound = None ivr.invalid_sound = None ivr.abort_sound = None ivr.description = None ivr.invalid_destination = None ivr.timeout_destination = None ivr.choices = [] ivr_dao.edit(ivr) self.session.expire_all() assert_that(ivr, has_properties( id=is_not(none()), name='myivr', greeting_sound=none(), menu_sound='menu', invalid_sound=none(), abort_sound=none(), description=none(), invalid_destination=none(), timeout_destination=none(), )) assert_that(ivr.choices, empty())
def test_edit_set_fields_to_null(self): incall = incall_dao.create( Incall( preprocess_subroutine='MySubroutine', greeting_sound='GreetingSound', description='incall description', caller_id_mode='prepend', caller_id_name='incall_', destination=Dialaction(action='user', actionarg1='2', actionarg2='10'), tenant_uuid=self.default_tenant.uuid, )) incall = incall_dao.get(incall.id) incall.preprocess_subroutine = None incall.greeting_sound = None incall.description = None incall.caller_id_mode = None incall.caller_id_name = None incall.destination = Dialaction(action='none', actionarg1=None, actionarg2=None) incall_dao.edit(incall) row = self.session.query(Incall).first() assert_that(incall, equal_to(row)) assert_that( row, has_properties( preprocess_subroutine=none(), greeting_sound=none(), description=none(), caller_id_mode=none(), caller_id_name=none(), destination=has_properties(action='none', actionarg1=None, actionarg2=None), ), )
def _insert_dialaction(self, categoryval, category='user', action='none', event='answer'): dialaction = Dialaction() dialaction.action = action dialaction.category = category dialaction.categoryval = str(categoryval) dialaction.event = event self.add_me(dialaction)
def test_create_with_all_fields(self): ivr_model = IVR( name='myivr', tenant_uuid=self.default_tenant.uuid, greeting_sound='greeting', menu_sound='menu', invalid_sound='invalid', abort_sound='abort', timeout=10, max_tries=2, description='description', invalid_destination=Dialaction(action='user', actionarg1='1'), timeout_destination=Dialaction(action='user', actionarg1='2'), abort_destination=Dialaction(action='user', actionarg1='3'), choices=[IVRChoice(exten='1', destination=Dialaction(action='user', actionarg1='4'))], ) ivr = ivr_dao.create(ivr_model) self.session.expire_all() assert_that(inspect(ivr).persistent) assert_that(ivr, has_properties( id=is_not(none()), tenant_uuid=self.default_tenant.uuid, name='myivr', greeting_sound='greeting', menu_sound='menu', invalid_sound='invalid', abort_sound='abort', timeout=10, max_tries=2, description='description', invalid_destination=has_properties(action='user', actionarg1='1'), timeout_destination=has_properties(action='user', actionarg1='2'), abort_destination=has_properties(action='user', actionarg1='3'), )) assert_that(ivr.choices, contains( has_properties(exten='1', destination=has_properties(action='user', actionarg1='4')), ))
def test_when_removing_choices_then_choices_are_deleted(self): ivr = self.add_ivr( name='myivr', menu_sound='menu', choices=[IVRChoice(exten='1', destination=Dialaction(action='none'))], ) self.session.expire_all() ivr.choices = [] ivr_dao.edit(ivr) assert_that(self.session.query(IVRChoice).all(), empty()) assert_that(self.session.query(Dialaction).all(), empty())
def test_add(self): dialaction = Dialaction() dialaction.action = 'none' dialaction.category = 'user' dialaction.categoryval = '1' dialaction.event = 'answer' dialaction_dao.add(dialaction) self.assertEquals(dialaction, self.session.query(Dialaction).first())
def create_incall_row_for_user(self, user_id, extension_id): extension_row = self.session.query(Extension).get(extension_id) incall_row = self.add_incall(exten=extension_row.exten, context=extension_row.context) dialaction_row = Dialaction(event='answer', category='incall', categoryval=str(incall_row.id), action='user', actionarg1=str(user_id), linked=1) self.add_me(dialaction_row) extension_row.type = 'incall' extension_row.typeval = str(incall_row.id) self.add_me(extension_row) return incall_row
def test_edit_all_fields(self): ivr = self.add_ivr( name='myivr', greeting_sound='greeting', menu_sound='menu', invalid_sound='invalid', abort_sound='abort', timeout=10, max_tries=2, description='description', invalid_destination=Dialaction(action='user', actionarg1='1'), timeout_destination=Dialaction(action='user', actionarg1='2'), choices=[ IVRChoice(exten='1', destination=Dialaction(action='user', actionarg1='4')) ], ) self.session.expire_all() ivr.name = 'zmyivr' ivr.greeting_sound = 'zgreeting' ivr.menu_sound = 'zmenu' ivr.invalid_sound = 'zinvalid' ivr.abort_sound = 'zabort' ivr.timeout = 42 ivr.max_tries = 1337 ivr.description = 'lol' ivr.invalid_destination = Dialaction(action='user', actionarg1='3') ivr.timeout_destination = Dialaction(action='user', actionarg1='4') ivr.choices = [IVRChoice(exten='2', destination=Dialaction(action='none'))] ivr_dao.edit(ivr) self.session.expire_all() assert_that(ivr, has_properties( name='zmyivr', greeting_sound='zgreeting', menu_sound='zmenu', invalid_sound='zinvalid', abort_sound='zabort', timeout=42, max_tries=1337, description='lol', invalid_destination=has_properties(action='user', actionarg1='3'), timeout_destination=has_properties(action='user', actionarg1='4'), )) assert_that(ivr.choices, contains( has_properties(exten='2', destination=has_properties(action='none')), ))
def test_create_minimal_fields(self): incall = Incall(destination=Dialaction(action='none'), tenant_uuid=self.default_tenant.uuid) created_incall = incall_dao.create(incall) row = self.session.query(Incall).first() assert_that(created_incall, equal_to(row)) assert_that( created_incall, has_properties( id=is_not(none()), preprocess_subroutine=none(), greeting_sound=none(), description=none(), caller_id_mode=none(), caller_id_name=none(), destination=has_properties(action='none', actionarg1=None, actionarg2=None), tenant_uuid=self.default_tenant.uuid, ), )
def create_dial_actions(self, user): for dialaction in Dialaction.new_user_actions(user): self.session.add(dialaction)