コード例 #1
0
    def test_rate_success(self):
        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.update_message_sript)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/rate'
        params = {
            'to': '06155423',
            'username': self.u1.username,
            'password': self.u1_password
        }

        # We should receive an error since interceptorpb is not connected

        agent = Agent(reactor)
        client = HTTPClient(agent)
        response = yield client.get(url, params=params)

        lastErrorStatus = response.code
        lastResponse = yield text_content(response)

        # Asserts
        self.assertEqual(lastErrorStatus, 200)
        self.assertEqual(_ic + 1, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec, self.stats_http.get('interceptor_error_count'))
コード例 #2
0
    def test_rate_success(self):
        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.update_message_sript)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/rate?to=06155423&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception as e:
            lastErrorStatus = e.status
            lastResponse = e.response

        # Asserts
        self.assertEqual(lastErrorStatus, None)
        self.assertEqual(_ic + 1, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec, self.stats_http.get('interceptor_error_count'))
コード例 #3
0
    def setUp(self):
        if hasattr(self, 'ipb_client'):
            yield HappySMSCTestCase.setUp(self, interceptorpb_client = self.ipb_client)
        else:
            yield HappySMSCTestCase.setUp(self)

        # Connect to RouterPB
        yield self.connect('127.0.0.1', self.pbPort)

        # Provision user, group, default mt route and
        # default mt interceptor
        self.g1 = Group(1)
        yield self.group_add(self.g1)

        self.c1 = SmppClientConnector(id_generator())
        self.mt_interceptor = MTInterceptorScript(self.script)
        self.u1_password = '******'
        self.u1 = User(1, self.g1, 'username', self.u1_password)
        self.u2_password = '******'
        self.u2 = User(1, self.g1, 'username2', self.u2_password)
        yield self.user_add(self.u1)

        yield self.mtroute_add(DefaultRoute(self.c1), 0)
        yield self.mtinterceptor_add(DefaultInterceptor(self.mt_interceptor), 0)

        # Now we'll create the connector
        yield self.SMPPClientManagerPBProxy.connect('127.0.0.1', self.CManagerPort)
        c1Config = SMPPClientConfig(id=self.c1.cid, port = self.SMSCPort.getHost().port)
        yield self.SMPPClientManagerPBProxy.add(c1Config)

        # And start it !
        yield self.SMPPClientManagerPBProxy.start(self.c1.cid)

        # Get stats singletons
        self.stats_http = HttpAPIStatsCollector().get()
コード例 #4
0
    def test_rate_HTTP_300_from_script(self):
        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.return_HTTP_300)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/rate?to=06155423&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception as e:
            lastErrorStatus = e.status
            lastResponse = e.response

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, '300')
        self.assertEqual(lastResponse,
                         '"Interception specific error code 300"')
        self.assertEqual(_ic, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec + 1,
                         self.stats_http.get('interceptor_error_count'))
コード例 #5
0
    def test_send_with_tags(self):
        """Related to #455
        Will send message through http api using tags and then assert for getting the tags into the short_message
        """
        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(
            self.update_message_from_tags_sript)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send?to=06155423&content=temporary&username=%s&password=%s&tags=%s' % (
            self.u1.username, self.u1_password, '123,456')

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception as e:
            lastErrorStatus = e.status
            lastResponse = e.response

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, None)
        self.assertEqual(1,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
        self.assertEqual(
            '[\'123\', \'456\']', self.SMSCPort.factory.lastClient.
            submitRecords[0].params['short_message'])
コード例 #6
0
    def test_rate_ESME_RINVESMCLASS_from_script(self):
        "Will ensure if script defines only smpp error it will implicitly cause a http 520 error"

        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.return_ESME_RINVESMCLASS)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/rate?to=06155423&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception, e:
            lastErrorStatus = e.status
            lastResponse = e.response
コード例 #7
0
    def test_send_and_lock_param(self):
        """Related to #458
        Will set and lock sm_default_msg_id inside interceptor and assert it were kept as set.
        """
        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.lock_param_script)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send?to=06155423&content=temporary&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception as e:
            lastErrorStatus = e.status
            lastResponse = e.response

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, None)
        self.assertEqual(1,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
        self.assertEqual(
            10, self.SMSCPort.factory.lastClient.submitRecords[0].
            params['sm_default_msg_id'])
コード例 #8
0
    def setUp(self):
        if hasattr(self, 'ipb_client'):
            yield SMPPClientTestCases.setUp(
                self, interceptorpb_client=self.ipb_client)
        else:
            yield SMPPClientTestCases.setUp(self)

        # Initiating config objects without any filename
        # will lead to setting defaults and that's what we
        # need to run the tests
        deliverSmThrowerConfigInstance = deliverSmThrowerConfig()

        # Launch the deliverSmThrower
        self.deliverSmThrower = deliverSmThrower(
            deliverSmThrowerConfigInstance)

        # Add the broker to the deliverSmThrower
        yield self.deliverSmThrower.addAmqpBroker(self.amqpBroker)

        # Add SMPPs factory to DLRThrower
        self.deliverSmThrower.addSmpps(self.smpps_factory)

        # Connect to RouterPB
        yield self.connect('127.0.0.1', self.pbPort)
        # Provision mt interceptor
        self.mo_interceptor = MOInterceptorScript(self.script)
        yield self.mointerceptor_add(DefaultInterceptor(self.mo_interceptor),
                                     0)
        # Disconnect from RouterPB
        self.disconnect()
コード例 #9
0
    def test_tagging(self):
        """Refs #495
        Will tag message inside interceptor script and assert
        routing based tagfilter were correctly done
        """
        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript("routable.addTag(10)")
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Change routing rules by shadowing (high order value) default route with a
        # static route having a tagfilter
        yield self.mtroute_flush()
        yield self.mtroute_add(StaticMTRoute([TagFilter(10)], self.c1, 0.0),
                               1000)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send?to=06155423&content=test&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception, e:
            lastErrorStatus = e.status
            lastResponse = e.response
コード例 #10
0
    def test_HTTP_300_from_script(self):
        "Will ensure if script defines only http error it will implicitly cause a smpp ESME_RUNKNOWNERR error"

        _ic = self.stats_smpps.get('interceptor_count')
        _iec = self.stats_smpps.get('interceptor_error_count')

        # Re-provision interceptor with script returning a HTTP 300
        # Connect to RouterPB
        yield self.connect('127.0.0.1', self.pbPort)
        mt_interceptor = MTInterceptorScript(self.return_HTTP_300)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)
        # Disconnect from RouterPB
        self.disconnect()

        # Connect to InterceptorPB
        yield self.ipb_connect()

        yield self.connect('127.0.0.1', self.pbPort)
        yield self.prepareRoutingsAndStartConnector()

        # Bind
        yield self.smppc_factory.connectAndBind()

        # Install mocks
        self.smpps_factory.lastProto.sendPDU = mock.Mock(
            wraps=self.smpps_factory.lastProto.sendPDU)

        # Send a SMS MT through smpps interface
        yield self.smppc_factory.lastProto.sendDataRequest(self.SubmitSmPDU)

        # Wait 3 seconds for submit_sm_resp
        yield waitFor(3)

        # Unbind & Disconnect
        yield self.smppc_factory.smpp.unbindAndDisconnect()
        yield self.stopSmppClientConnectors()

        # Run tests on final destination smpp server (third party mocker)
        self.assertEqual(0,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
        # Run tests on Jasmin's SMPPs
        self.assertEqual(self.smpps_factory.lastProto.sendPDU.call_count, 2)
        # smpps response was a submit_sm_resp with ESME_ROK
        response_pdu = self.smpps_factory.lastProto.sendPDU.call_args_list[0][
            0][0]
        self.assertEqual(response_pdu.id, pdu_types.CommandId.submit_sm_resp)
        self.assertEqual(response_pdu.seqNum, 2)
        self.assertEqual(response_pdu.status,
                         pdu_types.CommandStatus.ESME_RUNKNOWNERR)
        self.assertTrue('message_id' not in response_pdu.params)
        self.assertEqual(_ic, self.stats_smpps.get('interceptor_count'))
        self.assertEqual(_iec + 1,
                         self.stats_smpps.get('interceptor_error_count'))
コード例 #11
0
    def test_success(self):
        _ic = self.stats_smpps.get('interceptor_count')
        _iec = self.stats_smpps.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        # Connect to RouterPB
        yield self.connect('127.0.0.1', self.pbPort)
        mt_interceptor = MTInterceptorScript(self.update_message_sript)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)
        # Disconnect from RouterPB
        self.disconnect()

        # Connect to InterceptorPB
        yield self.ipb_connect()

        yield self.connect('127.0.0.1', self.pbPort)
        yield self.prepareRoutingsAndStartConnector()

        # Bind
        yield self.smppc_factory.connectAndBind()

        # Install mocks
        self.smpps_factory.lastProto.sendPDU = mock.Mock(
            wraps=self.smpps_factory.lastProto.sendPDU)

        # Send a SMS MT through smpps interface
        yield self.smppc_factory.lastProto.sendDataRequest(self.SubmitSmPDU)

        # Wait 3 seconds for submit_sm_resp
        yield waitFor(3)

        # Unbind & Disconnect
        yield self.smppc_factory.smpp.unbindAndDisconnect()
        yield self.stopSmppClientConnectors()

        # Run tests on final destination smpp server (third party mocker)
        self.assertEqual(1,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
        # Run tests on Jasmin's SMPPs
        self.assertEqual(self.smpps_factory.lastProto.sendPDU.call_count, 2)
        # smpps response was a submit_sm_resp with ESME_ROK
        response_pdu = self.smpps_factory.lastProto.sendPDU.call_args_list[0][
            0][0]
        self.assertEqual(response_pdu.id, pdu_types.CommandId.submit_sm_resp)
        self.assertEqual(response_pdu.seqNum, 2)
        self.assertEqual(response_pdu.status, pdu_types.CommandStatus.ESME_ROK)
        self.assertNotEqual(None, response_pdu.params['message_id'])
        # Message content has been updated
        self.assertEqual(
            'Intercepted message', self.SMSCPort.factory.lastClient.
            submitRecords[0].params['short_message'])
        self.assertEqual(_ic + 1, self.stats_smpps.get('interceptor_count'))
        self.assertEqual(_iec, self.stats_smpps.get('interceptor_error_count'))
コード例 #12
0
    def test_success(self):
        # Re-provision interceptor with correct script
        # Connect to RouterPB
        yield self.connect('127.0.0.1', self.pbPort)
        mo_interceptor = MOInterceptorScript(self.update_message_sript)
        yield self.mointerceptor_add(DefaultInterceptor(mo_interceptor), 0)
        # Disconnect from RouterPB
        self.disconnect()

        # Connect to InterceptorPB
        yield self.ipb_connect()

        yield self.connect('127.0.0.1', self.pbPort)
        yield self.prepareRoutingsAndStartConnector()

        _ic = self.stats_smppc.get('interceptor_count')
        _iec = self.stats_smppc.get('interceptor_error_count')

        # Bind
        yield self.smppc_factory.connectAndBind()

        # Install mocks
        self.smppc_factory.lastProto.PDUDataRequestReceived = Mock(
            wraps=self.smppc_factory.lastProto.PDUDataRequestReceived)

        # Send a deliver_sm from the SMSC
        yield self.triggerDeliverSmFromSMSC([self.DeliverSmPDU])

        # Run tests on downstream smpp client
        self.assertEqual(
            self.smppc_factory.lastProto.PDUDataRequestReceived.call_count, 1)
        received_pdu_1 = self.smppc_factory.lastProto.PDUDataRequestReceived.call_args_list[
            0][0][0]
        self.assertEqual(received_pdu_1.id, pdu_types.CommandId.deliver_sm)
        self.assertEqual(received_pdu_1.params['short_message'],
                         b'Intercepted message')
        # Run tests on upstream smpp client
        self.assertEqual(len(self.SMSCPort.factory.lastClient.pduRecords), 2)
        sent_back_resp = self.SMSCPort.factory.lastClient.pduRecords[1]
        self.assertEqual(sent_back_resp.id,
                         pdu_types.CommandId.deliver_sm_resp)
        self.assertEqual(sent_back_resp.status,
                         pdu_types.CommandStatus.ESME_ROK)
        self.assertEqual(_ic + 1, self.stats_smppc.get('interceptor_count'))
        self.assertEqual(_iec, self.stats_smppc.get('interceptor_error_count'))

        # Unbind and disconnect
        yield self.smppc_factory.smpp.unbindAndDisconnect()
        yield self.stopSmppClientConnectors()
コード例 #13
0
    def setUp(self):
        if hasattr(self, 'ipb_client'):
            yield SMPPClientTestCases.setUp(self, interceptorpb_client=self.ipb_client)
        else:
            yield SMPPClientTestCases.setUp(self)

        # Connect to RouterPB
        yield self.connect('127.0.0.1', self.pbPort)
        # Provision mt interceptor
        self.mt_interceptor = MTInterceptorScript(self.script)
        yield self.mtinterceptor_add(DefaultInterceptor(self.mt_interceptor), 0)
        # Disconnect from RouterPB
        self.disconnect()

        # Get stats singletons
        self.stats_smpps = SMPPServerStatsCollector().get(cid=self.smpps_config.id)
コード例 #14
0
    def test_HTTP_300_from_script(self):
        "Will ensure if script defines only http error it will implicitly cause a smpp ESME_RUNKNOWNERR error"

        # Re-provision interceptor with script returning a HTTP 300
        # Connect to RouterPB
        yield self.connect('127.0.0.1', self.pbPort)
        mo_interceptor = MOInterceptorScript(self.return_HTTP_300)
        yield self.mointerceptor_add(DefaultInterceptor(mo_interceptor), 0)
        # Disconnect from RouterPB
        self.disconnect()

        # Connect to InterceptorPB
        yield self.ipb_connect()

        yield self.connect('127.0.0.1', self.pbPort)
        yield self.prepareRoutingsAndStartConnector()

        _ic = self.stats_smppc.get('interceptor_count')
        _iec = self.stats_smppc.get('interceptor_error_count')

        # Bind
        yield self.smppc_factory.connectAndBind()

        # Install mocks
        self.smppc_factory.lastProto.PDUDataRequestReceived = Mock(
            wraps=self.smppc_factory.lastProto.PDUDataRequestReceived)

        # Send a deliver_sm from the SMSC
        yield self.triggerDeliverSmFromSMSC([self.DeliverSmPDU])

        # Run tests on downstream smpp client
        self.assertEqual(
            self.smppc_factory.lastProto.PDUDataRequestReceived.call_count, 0)
        # Run tests on upstream smpp client
        self.assertEqual(len(self.SMSCPort.factory.lastClient.pduRecords), 2)
        sent_back_resp = self.SMSCPort.factory.lastClient.pduRecords[1]
        self.assertEqual(sent_back_resp.id,
                         pdu_types.CommandId.deliver_sm_resp)
        self.assertEqual(sent_back_resp.status,
                         pdu_types.CommandStatus.ESME_RUNKNOWNERR)
        self.assertEqual(_ic, self.stats_smppc.get('interceptor_count'))
        self.assertEqual(_iec + 1,
                         self.stats_smppc.get('interceptor_error_count'))

        # Unbind and disconnect
        yield self.smppc_factory.smpp.unbindAndDisconnect()
        yield self.stopSmppClientConnectors()
コード例 #15
0
    def test_tagging(self):
        """Refs #495
        Will tag message inside interceptor script and assert
        routing based tagfilter were correctly done
        """
        yield self.connect('127.0.0.1', self.pbPort)
        mo_interceptor = MOInterceptorScript("routable.addTag(10)")
        yield self.mointerceptor_add(DefaultInterceptor(mo_interceptor), 0)
        # Disconnect from RouterPB
        self.disconnect()

        # Connect to InterceptorPB
        yield self.ipb_connect()

        yield self.connect('127.0.0.1', self.pbPort)
        yield self.prepareRoutingsAndStartConnector()

        # Change routing rules by shadowing (high order value) default route with a
        # static route having a tagfilter
        c2_destination = SmppServerSystemIdConnector(
            system_id=self.smppc_factory.config.username)
        yield self.moroute_flush()
        yield self.moroute_add(StaticMORoute([TagFilter(10)], c2_destination),
                               1000)

        # Bind
        yield self.smppc_factory.connectAndBind()

        # Install mocks
        self.smppc_factory.lastProto.PDUDataRequestReceived = Mock(
            wraps=self.smppc_factory.lastProto.PDUDataRequestReceived)

        # Send a deliver_sm from the SMSC
        yield self.triggerDeliverSmFromSMSC([self.DeliverSmPDU])

        # Run tests on downstream smpp client
        self.assertEqual(
            self.smppc_factory.lastProto.PDUDataRequestReceived.call_count, 1)
        received_pdu_1 = self.smppc_factory.lastProto.PDUDataRequestReceived.call_args_list[
            0][0][0]
        self.assertEqual(received_pdu_1.id, pdu_types.CommandId.deliver_sm)

        # Unbind and disconnect
        yield self.smppc_factory.smpp.unbindAndDisconnect()
        yield self.stopSmppClientConnectors()
コード例 #16
0
    def test_tagging(self):
        """Refs #495
        Will tag message inside interceptor script and assert
        routing based tagfilter were correctly done
        """
        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript("routable.addTag(10)")
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Change routing rules by shadowing (high order value) default route with a
        # static route having a tagfilter
        yield self.mtroute_flush()
        yield self.mtroute_add(StaticMTRoute([TagFilter(10)], self.c1, 0.0),
                               1000)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send'
        params = {
            'to': '06155423',
            'content': 'test',
            'username': self.u1.username,
            'password': self.u1_password
        }

        agent = Agent(reactor)
        client = HTTPClient(agent)
        response = yield client.post(url, data=params)

        lastErrorStatus = response.code
        lastResponse = yield text_content(response)

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, 200)
        self.assertEqual(1,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
コード例 #17
0
    def test_tagging(self):
        """Refs #495
        Will tag message inside interceptor script and assert
        routing based tagfilter were correctly done
        """
        # Re-provision interceptor with correct script
        # Connect to RouterPB
        yield self.connect('127.0.0.1', self.pbPort)
        mt_interceptor = MTInterceptorScript("routable.addTag(10)")
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)
        # Disconnect from RouterPB
        self.disconnect()

        # Connect to InterceptorPB
        yield self.ipb_connect()

        yield self.connect('127.0.0.1', self.pbPort)
        yield self.prepareRoutingsAndStartConnector()

        # Change routing rules by shadowing (high order value) default route with a
        # static route having a tagfilter
        yield self.mtroute_flush()
        yield self.mtroute_add(StaticMTRoute([TagFilter(10)], self.c1, 0.0),
                               1000)

        # Bind
        yield self.smppc_factory.connectAndBind()

        # Send a SMS MT through smpps interface
        yield self.smppc_factory.lastProto.sendDataRequest(self.SubmitSmPDU)

        # Wait 3 seconds for submit_sm_resp
        yield waitFor(3)

        # Unbind & Disconnect
        yield self.smppc_factory.smpp.unbindAndDisconnect()
        yield self.stopSmppClientConnectors()

        # Run tests on final destination smpp server (third party mocker)
        self.assertEqual(1,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
コード例 #18
0
    def test_send_success(self):
        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.update_message_sript)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send'
        params = {
            'to': '06155423',
            'content': 'test',
            'username': self.u1.username,
            'password': self.u1_password
        }

        # We should receive an error since interceptorpb is not connected
        agent = Agent(reactor)
        client = HTTPClient(agent)
        response = yield client.post(url, data=params)

        lastErrorStatus = response.code
        lastResponse = yield text_content(response)

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, 200)
        self.assertEqual(1,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
        self.assertEqual(
            b'Intercepted message', self.SMSCPort.factory.lastClient.
            submitRecords[0].params['short_message'])
        self.assertEqual(_ic + 1, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec, self.stats_http.get('interceptor_error_count'))
コード例 #19
0
    def test_send_with_tags(self):
        """Related to #455
        Will send message through http api using tags and then assert for getting the tags into the short_message
        """
        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(
            self.update_message_from_tags_sript)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send'
        params = {
            'to': '06155423',
            'content': 'temporary',
            'username': self.u1.username,
            'password': self.u1_password,
            'tags': '123,456'
        }

        agent = Agent(reactor)
        client = HTTPClient(agent)
        response = yield client.post(url, data=params)

        lastErrorStatus = response.code
        lastResponse = yield text_content(response)

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, 200)
        self.assertEqual(1,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
        self.assertEqual(
            b"['123', '456']", self.SMSCPort.factory.lastClient.
            submitRecords[0].params['short_message'])
コード例 #20
0
    def test_send_ESME_RINVESMCLASS_from_script(self):
        "Will ensure if script defines only smpp error it will implicitly cause a http 520 error"

        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.return_ESME_RINVESMCLASS)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send'
        params = {
            'to': '06155423',
            'content': 'test',
            'username': self.u1.username,
            'password': self.u1_password
        }

        agent = Agent(reactor)
        client = HTTPClient(agent)
        response = yield client.post(url, data=params)

        lastErrorStatus = response.code
        lastResponse = yield text_content(response)

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, 520)
        self.assertEqual(lastResponse,
                         'Error "Interception specific error code 520"')
        self.assertEqual(_ic, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec + 1,
                         self.stats_http.get('interceptor_error_count'))
コード例 #21
0
    def test_send_any_exception_from_script(self):
        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.raise_any_exception)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send'
        params = {
            'to': '06155423',
            'content': 'test',
            'username': self.u1.username,
            'password': self.u1_password
        }

        agent = Agent(reactor)
        client = HTTPClient(agent)
        response = yield client.post(url, data=params)

        lastErrorStatus = response.code
        lastResponse = yield text_content(response)

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, 400)
        self.assertEqual(
            lastResponse,
            'Error "Failed running interception script, check log for details"'
        )
        self.assertEqual(_ic, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec + 1,
                         self.stats_http.get('interceptor_error_count'))
コード例 #22
0
    def test_send_HTTP_300_from_script(self):
        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.return_HTTP_300)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send?to=06155423&content=test&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception, e:
            lastErrorStatus = e.status
            lastResponse = e.response
コード例 #23
0
    def test_send_and_lock_param(self):
        """Related to #458
        Will set and lock sm_default_msg_id inside interceptor and assert it were kept as set.
        """
        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.lock_param_script)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send?to=06155423&content=temporary&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception, e:
            lastErrorStatus = e.status
            lastResponse = e.response
コード例 #24
0
    def test_send_with_tags(self):
        """Related to #455
        Will send message through http api using tags and then assert for getting the tags into the short_message
        """
        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.update_message_from_tags_sript)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send?to=06155423&content=temporary&username=%s&password=%s&tags=%s' % (
            self.u1.username, self.u1_password, '123,456')

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception, e:
            lastErrorStatus = e.status
            lastResponse = e.response
コード例 #25
0
    def test_send_and_lock_param(self):
        """Related to #458
        Will set and lock sm_default_msg_id inside interceptor and assert it were kept as set.
        """
        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.lock_param_script)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send'
        params = {
            'to': '06155423',
            'content': 'temporary',
            'username': self.u1.username,
            'password': self.u1_password
        }

        agent = Agent(reactor)
        client = HTTPClient(agent)
        response = yield client.post(url, data=params)

        lastErrorStatus = response.code
        lastResponse = yield text_content(response)

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, 200)
        self.assertEqual(1,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
        self.assertEqual(
            10, self.SMSCPort.factory.lastClient.submitRecords[0].
            params['sm_default_msg_id'])
コード例 #26
0
    def test_send_success(self):
        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.update_message_sript)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send?to=06155423&content=test&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception as e:
            lastErrorStatus = e.status
            lastResponse = e.response

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, None)
        self.assertEqual(1,
                         len(self.SMSCPort.factory.lastClient.submitRecords))
        self.assertEqual(
            'Intercepted message', self.SMSCPort.factory.lastClient.
            submitRecords[0].params['short_message'])
        self.assertEqual(_ic + 1, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec, self.stats_http.get('interceptor_error_count'))
コード例 #27
0
    def test_send_any_exception_from_script(self):
        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.raise_any_exception)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send?to=06155423&content=test&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception as e:
            lastErrorStatus = e.status
            lastResponse = e.response

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, '400')
        self.assertEqual(
            lastResponse,
            'Error "Failed running interception script, check log for details"'
        )
        self.assertEqual(_ic, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec + 1,
                         self.stats_http.get('interceptor_error_count'))
コード例 #28
0
    def test_send_ESME_RINVESMCLASS_from_script(self):
        "Will ensure if script defines only smpp error it will implicitly cause a http 520 error"

        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.return_ESME_RINVESMCLASS)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/send?to=06155423&content=test&username=%s&password=%s' % (
            self.u1.username, self.u1_password)

        # We should receive an error since interceptorpb is not connected
        lastErrorStatus = None
        lastResponse = None
        try:
            yield getPage(url)
        except Exception as e:
            lastErrorStatus = e.status
            lastResponse = e.response

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, '520')
        self.assertEqual(lastResponse,
                         'Error "Interception specific error code 520"')
        self.assertEqual(_ic, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec + 1,
                         self.stats_http.get('interceptor_error_count'))
コード例 #29
0
    def test_rate_HTTP_300_from_script(self):
        _ic = self.stats_http.get('interceptor_count')
        _iec = self.stats_http.get('interceptor_error_count')

        # Re-provision interceptor with correct script
        mt_interceptor = MTInterceptorScript(self.return_HTTP_300)
        yield self.mtinterceptor_add(DefaultInterceptor(mt_interceptor), 0)

        # Connect to InterceptorPB
        yield self.ipb_connect()

        # Send a SMS MT through http interface
        url = 'http://127.0.0.1:1401/rate'
        params = {
            'to': '06155423',
            'username': self.u1.username,
            'password': self.u1_password
        }

        agent = Agent(reactor)
        client = HTTPClient(agent)
        response = yield client.get(url, params=params)

        lastErrorStatus = response.code
        lastResponse = yield text_content(response)

        # Wait some time for message delivery through smppc
        yield waitFor(2)

        # Asserts
        self.assertEqual(lastErrorStatus, 300)
        self.assertEqual(lastResponse,
                         '"Interception specific error code 300"')
        self.assertEqual(_ic, self.stats_http.get('interceptor_count'))
        self.assertEqual(_iec + 1,
                         self.stats_http.get('interceptor_error_count'))