Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
    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))
Ejemplo n.º 3
0
    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')))
Ejemplo n.º 4
0
    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'))
Ejemplo n.º 5
0
    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)),
        )
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
    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,
            ),
        )
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
    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()
Ejemplo n.º 13
0
    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))
Ejemplo n.º 14
0
    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))
Ejemplo n.º 15
0
 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
Ejemplo n.º 16
0
    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'))
Ejemplo n.º 17
0
 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)
Ejemplo n.º 18
0
 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,
     )
Ejemplo n.º 19
0
    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)
Ejemplo n.º 20
0
 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
Ejemplo n.º 21
0
    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)
Ejemplo n.º 22
0
    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'),
            ),
        )
Ejemplo n.º 23
0
    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()
Ejemplo n.º 24
0
    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())
Ejemplo n.º 25
0
    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),
            ),
        )
Ejemplo n.º 26
0
 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)
Ejemplo n.º 27
0
    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')),
        ))
Ejemplo n.º 28
0
    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())
Ejemplo n.º 29
0
    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())
Ejemplo n.º 30
0
    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
Ejemplo n.º 31
0
    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')),
        ))
Ejemplo n.º 32
0
    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,
            ),
        )
Ejemplo n.º 33
0
 def create_dial_actions(self, user):
     for dialaction in Dialaction.new_user_actions(user):
         self.session.add(dialaction)