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)
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)
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 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])
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])
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)
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']
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
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
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', } } }
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()
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))
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()
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, } }
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
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']
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)
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()
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)
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)
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
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
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()
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')
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)
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()
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)
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)
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
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
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)