예제 #1
0
    def test_personal_contacts(self):
        dao.user.get_context = Mock(return_value=s.profile)

        with synchronize(self.async_runner):
            self.cti_adapter.personal_contacts(s.token, s.user_id)

        self.client.directories.personal.assert_called_once_with(profile=s.profile, token=s.token)
예제 #2
0
    def test_lookup(self):
        dao.user.get_context = Mock(return_value=s.profile)

        with synchronize(self.async_runner):
            self.cti_adapter.search(s.token, s.user_id, s.term)

        self.client.directories.lookup.assert_called_once_with(profile=s.profile, term=s.term, token=s.token)
    def test_disable_unconditional_fwd(self, client):
        with synchronize(self._runner):
            self.user_service_manager.disable_unconditional_fwd(SOME_UUID, SOME_TOKEN, s.destination)

        client.users(SOME_UUID).update_forward.assert_called_once_with(forward_name='unconditional',
                                                                       forward={'enabled': False,
                                                                                'destination': s.destination})
    def test_enable_rna_fwd(self, client):
        with synchronize(self._runner):
            self.user_service_manager.enable_rna_fwd(SOME_UUID, SOME_TOKEN, s.destination)

        client.users(SOME_UUID).update_forward.assert_called_once_with(forward_name='noanswer',
                                                                       forward={'enabled': True,
                                                                                'destination': s.destination})
예제 #5
0
    def test_hangup_calls_async_hangup(self):
        with synchronize(self._runner):
            with patch.object(self.manager, '_async_hangup') as async_hangup:
                self.manager.hangup(s.connection, s.auth_token, s.user_uuid)

        async_hangup.assert_called_once_with(s.connection, self.ctid_ng_client,
                                             s.user_uuid)
예제 #6
0
    def test_personal_contact_raw(self):
        source = 'personal'
        source_entry_id = '123456789'

        with synchronize(self.async_runner):
            self.cti_adapter.personal_contact_raw(s.token, s.user_id, source, source_entry_id)

        self.client.personal.get.assert_called_once_with(contact_id=source_entry_id, token=s.token)
예제 #7
0
    def test_that_on_result_is_called_with_none_if_no_client(self):
        with patch.object(self._fetcher, '_client') as _client_fn:
            _client_fn.return_value = None
            with patch.object(self._fetcher, '_on_result') as on_result:
                with synchronize(self.async_runner):
                    self._fetcher.fetch(self.key)

                on_result.assert_called_once_with(None)
예제 #8
0
    def test_that_fetch_get_from_a_client(self):
        with patch.object(self._fetcher, '_client') as _client_fn:
            get_status = _client_fn.return_value.endpoints.get
            with patch.object(self._fetcher, '_on_result') as on_result:
                with synchronize(self.async_runner):
                    self._fetcher.fetch(self.key)

                get_status.assert_called_once_with(self.id_)
                on_result.assert_called_once_with(get_status.return_value)
예제 #9
0
    def test_create_personal_contact(self):
        contact_infos = {'firstname': 'Bob',
                         'lastname': 'Le Bricoleur',
                         'random_key': 'random_value'}

        with synchronize(self.async_runner):
            self.cti_adapter.create_personal_contact(s.token, s.user_id, contact_infos)

        self.client.personal.create.assert_called_once_with(contact_infos=contact_infos, token=s.token)
예제 #10
0
    def test_transfer_complete(self):
        transfers = {'items': [{'id': s.transfer_id, 'flow': 'attended'}]}
        self.ctid_ng_client.transfers.list_transfers_from_user.return_value = transfers

        with synchronize(self._runner):
            self.manager.transfer_complete(s.connection, s.auth_token,
                                           s.user_uuid)

        self.ctid_ng_client.transfers.complete_transfer_from_user.assert_called_once_with(
            s.transfer_id, )
예제 #11
0
    def test_cancel_transfer_no_transfer(self):
        transfers = {'items': []}
        self.ctid_ng_client.transfers.list_transfers_from_user.return_value = transfers

        with synchronize(self._runner):
            self.manager.transfer_cancel(s.connection, s.auth_token,
                                         s.user_uuid)

        assert_that(
            self.ctid_ng_client.transfers.cancel_transfer_from_user.call_count,
            equal_to(0))
예제 #12
0
    def test_call_exten_success(self):
        call_function = self.ctid_ng_client.calls.make_call_from_user

        with patch.object(self.manager, '_on_call_success') as cb:
            with synchronize(self._runner):
                self.manager.call_exten(s.connection, s.auth_token, s.user_id,
                                        s.exten)

        call_function.assert_called_once_with(extension=s.exten)
        cb.assert_called_once_with(s.connection, s.user_id,
                                   call_function.return_value)
예제 #13
0
    def test_set_favorite_with_remove_favorite(self):
        source = 'internal'
        source_entry_id = '123456789'
        enabled = False
        dao.user.get_context = Mock(return_value=s.profile)

        with synchronize(self.async_runner):
            self.cti_adapter.set_favorite(s.token, s.user_id, source, source_entry_id, enabled)

        self.client.directories.remove_favorite.assert_called_once_with(directory=source,
                                                                        contact=source_entry_id,
                                                                        token=s.token)
예제 #14
0
    def test_transfer_blind(self):
        with synchronize(self._runner):
            with patch.object(self.manager, '_transfer') as transfer:
                self.manager.transfer_blind(
                    s.connection,
                    s.auth_token,
                    s.user_id,
                    s.user_uuid,
                    s.number,
                )

        transfer.assert_called_once_with(s.auth_token, s.user_id, s.user_uuid,
                                         s.number, 'blind')
예제 #15
0
    def test_call_exten_exception(self):
        call_function = self.ctid_ng_client.calls.make_call_from_user
        exception = call_function.side_effect = Exception()
        error_handler = Mock(_CallExceptionHandler)

        with patch('xivo_cti.services.call.manager._CallExceptionHandler',
                   Mock(return_value=error_handler)) as ExceptionHandler:
            with synchronize(self._runner):
                self.manager.call_exten(s.connection, s.auth_token, s.user_id,
                                        s.exten)

        ExceptionHandler.assert_called_once_with(s.connection, s.user_id,
                                                 s.exten)
        call_function.assert_called_once_with(extension=s.exten)
        error_handler.handle.assert_called_once_with(exception)
예제 #16
0
    def test_edit_personal_contact(self):
        source = 'personal'
        source_entry_id = '123456789'
        contact_infos = {'firstname': 'Bob',
                         'lastname': 'Le Bricoleur',
                         'random_key': 'random_value'}

        with synchronize(self.async_runner):
            self.cti_adapter.edit_personal_contact(s.token,
                                                   s.user_id,
                                                   source,
                                                   source_entry_id,
                                                   contact_infos)

        self.client.personal.edit.assert_called_once_with(contact_id=source_entry_id,
                                                          contact_infos=contact_infos,
                                                          token=s.token)
예제 #17
0
    def test_transfer_blind_to_voicemail(self, mock_dao):
        mock_dao.user.get_context.return_value = s.context
        with patch.object(self.manager,
                          '_transfer_to_voicemail') as transfer_to_vm:
            with synchronize(self._runner):
                self.manager.transfer_blind_to_voicemail(
                    s.connection,
                    s.auth_token,
                    s.user_uuid,
                    s.voicemail_number,
                )

        transfer_to_vm.assert_called_once_with(
            s.auth_token,
            s.user_uuid,
            s.voicemail_number,
            s.context,
            'blind',
        )
예제 #18
0
    def test_transfer_attended(self):
        with patch.object(self.manager, '_transfer') as transfer:
            with synchronize(self._runner):
                self.manager.transfer_attended(
                    s.connection,
                    s.auth_token,
                    s.user_id,
                    s.user_uuid,
                    s.number,
                )

        transfer.assert_called_once_with(
            s.auth_token,
            s.user_id,
            s.user_uuid,
            s.number,
            'attended',
            SOME_TRANSFER_TIMEOUT,
        )
예제 #19
0
    def test_transfer_blind_to_voicemail_exceptions(self, mock_dao):
        mock_dao.user.get_context.return_value = s.context
        exception = Exception()
        error_handler = Mock(_TransferExceptionHandler)

        with patch(
                'xivo_cti.services.call.manager._TransferToVoicemailExceptionHandler',
                Mock(return_value=error_handler)) as ExceptionHandler:
            with patch.object(self.manager, '_transfer_to_voicemail',
                              Mock(side_effect=exception)):
                with synchronize(self._runner):
                    self.manager.transfer_blind_to_voicemail(
                        s.connection,
                        s.auth_token,
                        s.user_uuid,
                        s.vm_number,
                    )

        error_handler.handle.assert_called_once_with(exception)
        ExceptionHandler.assert_called_once_with(s.connection, s.user_uuid)
예제 #20
0
    def test_transfer_attended_exceptions(self):
        exception = Exception()
        error_handler = Mock(_TransferExceptionHandler)

        with patch('xivo_cti.services.call.manager._TransferExceptionHandler',
                   Mock(return_value=error_handler)) as ExceptionHandler:
            with patch.object(self.manager, '_transfer',
                              Mock(side_effect=exception)):
                with synchronize(self._runner):
                    self.manager.transfer_attended(
                        s.connection,
                        s.auth_token,
                        s.user_id,
                        s.user_uuid,
                        s.number,
                    )

        error_handler.handle.assert_called_once_with(exception)
        ExceptionHandler.assert_called_once_with(s.connection, s.user_uuid,
                                                 s.number)
예제 #21
0
    def test_directory_search(self, mocked_user_dao):
        with synchronize(self.async_runner):
            self.cti_adapter.directory_search(s.token, s.user_id, s.term, s.commandid)

        self.client.directories.lookup.assert_called_once_with(
            profile=mocked_user_dao.get_context.return_value, term=s.term, token=s.token)
예제 #22
0
    def test_lookup(self):
        with synchronize(self.async_runner):
            self.cti_adapter.lookup(s.token, s.user_id, s.term)

        self.client.directories.lookup.assert_called_once_with(profile=self.profile,
                                                               term=s.term, token=s.token)
예제 #23
0
    def test_import_personal_contacts_csv(self):
        csv_contacts = 'firstname,lastname\r\nBob, the Builder\r\nAlice, Wonderland\r\n'
        with synchronize(self.async_runner):
            self.cti_adapter.import_personal_contacts_csv(s.token, s.user_id, csv_contacts)

        self.client.personal.import_csv.assert_called_once_with(csv_text=csv_contacts, token=s.token)
예제 #24
0
    def test_export_personal_contacts_csv(self):
        with synchronize(self.async_runner):
            self.cti_adapter.export_personal_contacts_csv(s.token, s.user_id)

        self.client.personal.export_csv.assert_called_once_with(token=s.token)
    def test_enable_incallfilter(self, client):
        with synchronize(self._runner):
            self.user_service_manager.enable_filter(SOME_UUID, SOME_TOKEN)

        client.users(SOME_UUID).update_service.assert_called_once_with(service_name='incallfilter',
                                                                       service={'enabled': True})
예제 #26
0
    def test_get_headers(self):
        with synchronize(self.async_runner):
            self.cti_adapter.get_headers(s.token, s.user_id)

        self.client.directories.headers.assert_called_once_with(profile=self.profile, token=s.token)
    def test_disable_dnd(self, client):
        with synchronize(self._runner):
            self.user_service_manager.disable_dnd(SOME_UUID, SOME_TOKEN)

        client.users(SOME_UUID).update_service.assert_called_once_with(service_name='dnd',
                                                                       service={'enabled': False})