Example #1
0
 def test_setup_sync(self):
     """
     TransportHelper.setup() should return ``None``, not a Deferred.
     """
     msg_helper = TransportHelper(None)
     self.add_cleanup(msg_helper.cleanup)
     self.assertEqual(msg_helper.setup(), None)
Example #2
0
 def test_cleanup(self):
     """
     TransportHelper.cleanup() should call .cleanup() on its
     PersistenceHelper and WorkerHelper.
     """
     tx_helper = TransportHelper(None)
     tx_helper.persistence_helper = FakeCleanupCheckHelper()
     tx_helper.worker_helper = FakeCleanupCheckHelper()
     self.assertEqual(tx_helper.persistence_helper.cleaned_up, False)
     self.assertEqual(tx_helper.worker_helper.cleaned_up, False)
     success_result_of(tx_helper.cleanup())
     self.assertEqual(tx_helper.persistence_helper.cleaned_up, True)
     self.assertEqual(tx_helper.worker_helper.cleaned_up, True)
Example #3
0
    def __init__(self,
                 transport_class,
                 use_riak=False,
                 request_defaults=None,
                 **msg_helper_args):
        self._transport_helper = TransportHelper(transport_class,
                                                 use_riak=use_riak,
                                                 **msg_helper_args)

        if request_defaults is None:
            request_defaults = {}
        self.request_defaults = request_defaults
        self.transport_url = None

        generate_proxies(self, self._transport_helper)
Example #4
0
 def test_get_dispatched_failures_no_connector(self):
     """
     .get_dispatched_failures() should use the default connector if none is
     passed in.
     """
     tx_helper = TransportHelper(Transport, transport_name='fooconn')
     dispatched = tx_helper.get_dispatched_failures()
     self.assertEqual(dispatched, [])
     msg = FailureMessage(
         message=tx_helper.msg_helper.make_outbound('foo').payload,
         failure_code=FailureMessage.FC_UNSPECIFIED, reason='sadness')
     self._add_to_dispatched(
         tx_helper.worker_helper.broker, 'fooconn.failures', msg)
     dispatched = tx_helper.get_dispatched_failures()
     self.assertEqual(dispatched, [msg])
Example #5
0
 def test_get_dispatched_failures(self):
     """
     .get_dispatched_failures() should get failures dispatched by the
     transport.
     """
     tx_helper = TransportHelper(Transport)
     dispatched = tx_helper.get_dispatched_failures('fooconn')
     self.assertEqual(dispatched, [])
     msg = FailureMessage(
         message=tx_helper.msg_helper.make_outbound('foo').payload,
         failure_code=FailureMessage.FC_UNSPECIFIED, reason='sadness')
     self._add_to_dispatched(
         tx_helper.worker_helper.broker, 'fooconn.failures', msg)
     dispatched = tx_helper.get_dispatched_failures('fooconn')
     self.assertEqual(dispatched, [msg])
Example #6
0
 def setUp(self):
     self.tx_helper = self.add_helper(TransportHelper(self.transport_class))
     self.fake_http = FakeHttpServer(self.handle_inbound_request)
     self.clock = Clock()
     self._request_queue = DeferredQueue()
     self._pending_reqs = []
     self.add_cleanup(self.finish_requests)
Example #7
0
    def setUp(self):
        self.mock_server = MockHttpServer(self.handle_inbound_request)
        self.outbound_requests = DeferredQueue()
        self.mock_server_response = ''
        self.mock_server_response_code = http.OK
        yield self.mock_server.start()
        self.add_cleanup(self.mock_server.stop)

        config = {
            'web_path': 'api/v1/apposit/sms',
            'web_port': 0,
            'credentials': {
                '8123': {
                    'username': '******',
                    'password': '******',
                    'service_id': 'service-id-1',
                },
                '8124': {
                    'username': '******',
                    'password': '******',
                    'service_id': 'service-id-2',
                }
            },
            'outbound_url': self.mock_server.url,
        }
        self.tx_helper = self.add_helper(
            TransportHelper(
                AppositTransport, transport_addr='8123',
                mobile_addr='251911223344'))
        self.transport = yield self.tx_helper.get_transport(config)
        self.transport_url = self.transport.get_transport_url()
        self.web_path = config['web_path']
Example #8
0
    def setUp(self):
        self.mediaedgegsm_calls = DeferredQueue()
        self.fake_http = FakeHttpServer(self.handle_request)
        self.base_url = "http://mediaedgegsm.example.com/"

        self.config = {
            'web_path': "foo",
            'web_port': 0,
            'username': '******',
            'password': '******',
            'outbound_url': self.base_url,
            'outbound_username': '******',
            'outbound_password': '******',
            'operator_mappings': {
                '417': {
                    '417912': 'VODA',
                    '417913': 'TIGO',
                    '417914': 'UNKNOWN',
                }
            }
        }
        self.tx_helper = self.add_helper(
            TransportHelper(MediaEdgeGSMTransport))
        self.transport = yield self.tx_helper.get_transport(self.config)
        self.transport.agent_factory = self.fake_http.get_agent
        self.transport_url = self.transport.get_transport_url()
        self.mediaedgegsm_response = ''
        self.mediaedgegsm_response_code = http.OK
Example #9
0
    def setUp(self):
        self.mediaedgegsm_calls = DeferredQueue()
        self.mock_mediaedgegsm = MockHttpServer(self.handle_request)
        self.add_cleanup(self.mock_mediaedgegsm.stop)
        yield self.mock_mediaedgegsm.start()

        self.config = {
            'web_path': "foo",
            'web_port': 0,
            'username': '******',
            'password': '******',
            'outbound_url': self.mock_mediaedgegsm.url,
            'outbound_username': '******',
            'outbound_password': '******',
            'operator_mappings': {
                '417': {
                    '417912': 'VODA',
                    '417913': 'TIGO',
                    '417914': 'UNKNOWN',
                }
            }
        }
        self.tx_helper = self.add_helper(
            TransportHelper(MediaEdgeGSMTransport))
        self.transport = yield self.tx_helper.get_transport(self.config)
        self.transport_url = self.transport.get_transport_url()
        self.mediaedgegsm_response = ''
        self.mediaedgegsm_response_code = http.OK
Example #10
0
    def setUp(self):

        self.clock = Clock()
        self.patch(self.transport_class, 'service_class', DummyService)
        self.patch(self.transport_class, 'clock', self.clock)

        self.string_transport = proto_helpers.StringTransport()

        self.tx_helper = self.add_helper(TransportHelper(self.transport_class))
        self.default_config = {
            'transport_name':
            self.tx_helper.transport_name,
            'twisted_endpoint':
            'tcp:host=127.0.0.1:port=0',
            'delivery_report_processor':
            'vumi.transports.smpp.processors.'
            'DeliveryReportProcessor',
            'deliver_short_message_processor':
            ('vumi.transports.smpp.processors.'
             'DeliverShortMessageProcessor'),
            'system_id':
            'foo',
            'password':
            '******',
            'deliver_short_message_processor_config': {
                'data_coding_overrides': {
                    0: 'utf-8',
                }
            }
        }
Example #11
0
    def setUp(self):
        self.fake_cellulant = FakeCellulant()
        self.base_url = "http://cellulant.example.com/"

        self.config = {
            'web_path': "foo",
            'web_port': 0,
            'credentials': {
                '2371234567': {
                    'username': '******',
                    'password': '******',
                },
                '9292': {
                    'username': '******',
                    'password': '******',
                }
            },
            'outbound_url': self.base_url,
            'validation_mode': 'permissive',
        }
        self.tx_helper = self.add_helper(
            TransportHelper(CellulantSmsTransport))
        self.transport = yield self.tx_helper.get_transport(self.config)
        self.transport.agent_factory = self.fake_cellulant.get_agent
        self.transport_url = self.transport.get_transport_url()
Example #12
0
 def setUp(self):
     self.default_config = {
         'web_port': 0,
         'web_path': '/api/v1/airtel/ussd/',
         'validation_mode': 'permissive',
     }
     self.tx_helper = self.add_helper(TransportHelper(AirtelUSSDTransport))
Example #13
0
    def setUp(self):
        self.cellulant_sms_calls = DeferredQueue()
        self.mock_cellulant_sms = MockHttpServer(self.handle_request)
        yield self.mock_cellulant_sms.start()
        self.add_cleanup(self.mock_cellulant_sms.stop)

        self.config = {
            'web_path': "foo",
            'web_port': 0,
            'credentials': {
                '2371234567': {
                    'username': '******',
                    'password': '******',
                },
                '9292': {
                    'username': '******',
                    'password': '******',
                }
            },
            'outbound_url': self.mock_cellulant_sms.url,
            'validation_mode': 'permissive',
        }
        self.tx_helper = self.add_helper(
            TransportHelper(CellulantSmsTransport))
        self.transport = yield self.tx_helper.get_transport(self.config)
        self.transport_url = self.transport.get_transport_url()
Example #14
0
 def setUp(self):
     self.clock = Clock()
     self.fake_smsc = FakeSMSC()
     self.tx_helper = self.add_helper(
         TransportHelper(SmppTransceiverTransport))
     self.default_config = {
         'transport_name':
         self.tx_helper.transport_name,
         'twisted_endpoint':
         self.fake_smsc.endpoint,
         'deliver_short_message_processor':
         ('vumi.transports.smpp.processors.sixdee.'
          'DeliverShortMessageProcessor'),
         'submit_short_message_processor':
         ('vumi.transports.smpp.processors.sixdee.'
          'SubmitShortMessageProcessor'),
         'system_id':
         'foo',
         'password':
         '******',
         'deliver_short_message_processor_config': {
             'data_coding_overrides': {
                 0: 'utf-8',
             }
         },
         'submit_short_message_processor_config': {
             'submit_sm_encoding': 'utf-16be',
             'submit_sm_data_coding': 8,
             'send_multipart_udh': True,
         }
     }
Example #15
0
    def setUp(self):
        self.tx_helper = self.add_helper(
            TransportHelper(MtnNigeriaUssdTransport))
        deferred_login = self.fake_login(
            mtn_nigeria_ussd.MtnNigeriaUssdClientFactory.protocol)
        deferred_server = self.start_server()
        self.add_cleanup(self.stop_server)

        self.transport = yield self.tx_helper.get_transport({
            'server_hostname':
            '127.0.0.1',
            'server_port':
            self.get_server_port(),
            'username':
            '******',
            'password':
            '******',
            'application_id':
            '1029384756',
            'enquire_link_interval':
            240,
            'timeout_period':
            120,
            'user_termination_response':
            'Bye',
        })
        # We need to tear the transport down before stopping the server.
        self.add_cleanup(self.transport.stopWorker)
        yield deferred_server

        self.session_manager = self.transport.session_manager
        yield self.session_manager.redis._purge_all()

        yield deferred_login
        self.client = self.transport.factory.client
Example #16
0
    def setUp(self):
        self.fake_http = FakeHttpServer(self.handle_inbound_request)
        self.outbound_requests = DeferredQueue()
        self.fake_http_response = ''
        self.fake_http_response_code = http.OK
        self.base_url = "http://apposit.example.com/"

        config = {
            'web_path': 'api/v1/apposit/sms',
            'web_port': 0,
            'credentials': {
                '8123': {
                    'username': '******',
                    'password': '******',
                    'service_id': 'service-id-1',
                },
                '8124': {
                    'username': '******',
                    'password': '******',
                    'service_id': 'service-id-2',
                }
            },
            'outbound_url': self.base_url,
        }
        self.tx_helper = self.add_helper(
            TransportHelper(AppositTransport,
                            transport_addr='8123',
                            mobile_addr='251911223344'))
        self.transport = yield self.tx_helper.get_transport(config)
        self.transport.agent_factory = self.fake_http.get_agent
        self.transport_url = self.transport.get_transport_url()
        self.web_path = config['web_path']
Example #17
0
 def test_get_transport_defaults(self):
     """
     .get_transport() should return a started transport worker.
     """
     tx_helper = self.add_helper(TransportHelper(RunningCheckTransport))
     app = yield tx_helper.get_transport({})
     self.assertIsInstance(app, RunningCheckTransport)
     self.assertEqual(app.tx_worker_running, True)
Example #18
0
 def setUp(self):
     config = {
         'web_path': "foo",
         'web_port': 0,
     }
     self.tx_helper = self.add_helper(TransportHelper(JSONTransport))
     self.transport = yield self.tx_helper.get_transport(config)
     self.transport_url = self.transport.get_transport_url()
Example #19
0
 def test_get_application_different_class(self):
     """
     .get_transport() should return an instance of the specified worker
     class if one is provided.
     """
     tx_helper = self.add_helper(TransportHelper(Transport))
     app = yield tx_helper.get_transport({}, cls=RunningCheckTransport)
     self.assertIsInstance(app, RunningCheckTransport)
Example #20
0
    def __init__(self, transport_class, use_riak=False, request_defaults=None, **msg_helper_args):
        self._transport_helper = TransportHelper(transport_class, use_riak=use_riak, **msg_helper_args)

        if request_defaults is None:
            request_defaults = {}
        self.request_defaults = request_defaults
        self.transport_url = None

        generate_proxies(self, self._transport_helper)
Example #21
0
 def test_get_transport_no_start(self):
     """
     .get_transport() should return an unstarted transport worker if passed
     ``start=False``.
     """
     tx_helper = self.add_helper(TransportHelper(RunningCheckTransport))
     app = yield tx_helper.get_transport({}, start=False)
     self.assertIsInstance(app, RunningCheckTransport)
     self.assertEqual(app.tx_worker_running, False)
Example #22
0
 def setUp(self):
     self.tx_helper = self.add_helper(TransportHelper(AirtelUSSDTransport))
     self.config = self.mk_config()
     self.transport = yield self.tx_helper.get_transport(self.config)
     self.session_manager = self.transport.session_manager
     self.add_cleanup(self.session_manager.stop)
     self.transport_url = self.transport.get_transport_url(
         self.config['web_path'])
     yield self.session_manager.redis._purge_all()  # just in case
Example #23
0
 def setUp(self):
     self.tx_helper = self.add_helper(TransportHelper(InfobipTransport))
     self.transport = yield self.tx_helper.get_transport({
         'transport_type': 'ussd',
         'web_path': "/session/",
         'web_port': 0,
     })
     self.transport_url = self.transport.get_transport_url()
     yield self.transport.session_manager.redis._purge_all()  # just in case
Example #24
0
    def setUp(self):
        self.config = {
            'web_path': "foo",
            'web_port': 0,
        }
        self.tx_helper = self.add_helper(
            TransportHelper(OldTemplateHttpTransport))

        self.transport = yield self.tx_helper.get_transport(self.config)
        self.transport_url = self.transport.get_transport_url()
Example #25
0
 def test_all_params(self):
     """
     TransportHelper should pass use_riak to its PersistenceHelper and all
     other params to its MessageHelper.
     """
     fake_tx_class = object()
     tx_helper = TransportHelper(
         fake_tx_class, use_riak=True, transport_addr='Obs station')
     self.assertEqual(tx_helper.persistence_helper.use_riak, True)
     self.assertEqual(tx_helper.msg_helper.transport_addr, 'Obs station')
Example #26
0
    def setUp(self):
        self.tx_helper = self.add_helper(TransportHelper(self.transport_class))
        self.mock_server = MockHttpServer(self.handle_inbound_request)
        self.add_cleanup(self.mock_server.stop)
        self.clock = Clock()

        yield self.mock_server.start()

        self._pending_reqs = []
        self.add_cleanup(self.finish_requests)
Example #27
0
 def setUp(self):
     config = {
         'web_path': "foo",
         'web_port': 0,
         'username': '******',
         'password': '******',
     }
     self.tx_helper = self.add_helper(
         TransportHelper(CustomOutboundTransport))
     self.transport = yield self.tx_helper.get_transport(config)
     self.transport_url = self.transport.get_transport_url()
Example #28
0
 def setUp(self):
     self.tx_helper = self.add_helper(
         TransportHelper(TrueAfricanUssdTransport))
     self.clock = Clock()
     self.patch(TrueAfricanUssdTransport, 'get_clock', lambda _: self.clock)
     self.transport = yield self.tx_helper.get_transport({
         'interface': '127.0.0.1',
         'port': 0,
         'request_timeout': 10,
     })
     self.service_url = self.get_service_url(self.transport)
Example #29
0
    def setUp(self):
        self.config = {
            'web_path': "foo",
            'web_port': 0,
        }
        self.tx_helper = self.add_helper(
            TransportHelper(OldSimpleHttpTransport))

        self.transport = yield self.tx_helper.get_transport(self.config)
        addr = self.transport.web_resource.getHost()
        self.transport_url = "http://%s:%s/" % (addr.host, addr.port)
Example #30
0
 def setUp(self):
     self.config = {
         'web_port': 0,
         'web_path': '/api/v1/ussd/cellulant/',
         'ussd_session_timeout': 60,
     }
     self.tx_helper = self.add_helper(TransportHelper(CellulantTransport))
     self.transport = yield self.tx_helper.get_transport(self.config)
     self.transport_url = self.transport.get_transport_url(
         self.config['web_path'])
     yield self.transport.session_manager.redis._purge_all()  # just in case
Example #31
0
 def setUp(self):
     config = {
         'web_port': 0,
         'web_path': '/api/v1/safaricom/ussd/',
     }
     self.tx_helper = self.add_helper(TransportHelper(SafaricomTransport))
     self.transport = yield self.tx_helper.get_transport(config)
     self.session_manager = self.transport.session_manager
     self.transport_url = self.transport.get_transport_url(
         config['web_path'])
     yield self.session_manager.redis._purge_all()  # just in case
Example #32
0
class HttpRpcTransportHelper(object):
    """
    Test helper for subclasses of
    :class:`~vumi.transports.httprpc.HttpRpcTransport`.

    Adds support for making HTTP requests to the HTTP RPC transport to the
    base :class:`~vumi.transports.tests.helpers.TransportHelper`.

    :param dict request_defaults: Default URL parameters for HTTP requests.

    Other parameters are the same as for
    :class:`~vumi.transports.tests.helpers.TransportHelper`.
    """

    implements(IHelper)

    def __init__(self, transport_class, use_riak=False, request_defaults=None, **msg_helper_args):
        self._transport_helper = TransportHelper(transport_class, use_riak=use_riak, **msg_helper_args)

        if request_defaults is None:
            request_defaults = {}
        self.request_defaults = request_defaults
        self.transport_url = None

        generate_proxies(self, self._transport_helper)

    def setup(self, *args, **kw):
        return self._transport_helper.setup(*args, **kw)

    def cleanup(self):
        return self._transport_helper.cleanup()

    @inlineCallbacks
    def get_transport(self, config, cls=None, start=True):
        transport = yield self._transport_helper.get_transport(config, cls=cls, start=True)
        self.transport_url = transport.get_transport_url(config["web_path"])
        returnValue(transport)

    def mk_request_raw(self, suffix="", params=None, data=None, method="GET"):
        """
        Make an HTTP request, ignoring this helper's ``request_defaults``.

        :param str suffix: Suffix to add to the transport's URL.
        :param dict params: A dictionary of URL parameters to append to the URL
                            as a query string or None for no URL parameters.
        :param str data: Request body or None for no request body.
        :param str method: HTTP method to use for the request.

        :raises HttpRpcTransportHelperError:
            When invoked before calling :meth:`get_transport`.
        """
        if self.transport_url is None:
            raise HttpRpcTransportHelperError("call .get_transport() before making HTTP requests.")
        url = self.transport_url + suffix
        if params is not None:
            url += "?%s" % urlencode(params)
        return http_request_full(url, data=data, method=method)

    def mk_request(self, _suffix="", _data=None, _method="GET", **kw):
        """
        Make an HTTP request.

        :param str _suffix: Suffix to add to the transport's URL.
        :param str _data: Request body or None for no request body.
        :param str _method: HTTP method to use for the request.
        :param \*\*kw: URL query string parameters.

        :raises HttpRpcTransportHelperError:
            When invoked before calling :meth:`get_transport`.

        The ``_`` prefixes on the function parameter names are to
        make accidental clashes with URL query parameter names less
        likely.
        """
        params = self.request_defaults.copy()
        params.update(kw)
        return self.mk_request_raw(suffix=_suffix, params=params, data=_data, method=_method)