Ejemplo n.º 1
0
class TestVertexBackendRequestContent(TestCase):
    def setUp(self):
        self.vertex_backend = VertexBackend()
        self.vertex_backend.set_extra_fields(
            username=TEST_USERNAME,
            password=TEST_PASSWORD,
            senderid=TEST_SENDER_ID,
        )
        self.queued_sms = QueuedSMS(phone_number=TEST_PHONE_NUMBER, )

    def test_params(self):
        self.queued_sms.text = TEST_TEXT_MESSAGE
        params = self.vertex_backend.populate_params(self.queued_sms)
        self.assertEqual(params['username'], TEST_USERNAME)
        self.assertEqual(params['pass'], TEST_PASSWORD)
        self.assertEqual(params['senderid'], TEST_SENDER_ID)
        self.assertEqual(params['response'], 'Y')
        self.assertEqual(params['dest_mobileno'],
                         strip_plus(TEST_PHONE_NUMBER))
        self.assertEqual(params['msgtype'], TEXT_MSG_TYPE)
        self.assertEqual(params['message'], TEST_TEXT_MESSAGE)

        self.queued_sms.text = TEST_UNICODE_MESSAGE
        params = self.vertex_backend.populate_params(self.queued_sms)
        self.assertEqual(params['message'],
                         TEST_UNICODE_MESSAGE.encode('utf-8'))
        self.assertEqual(params['msgtype'], UNICODE_MSG_TYPE)

    def test_phone_number_is_valid(self):
        self.assertFalse(VertexBackend().phone_number_is_valid('+91'))
        self.assertFalse(VertexBackend().phone_number_is_valid('+123456789'))
        self.assertTrue(VertexBackend().phone_number_is_valid('+910123456789'))
Ejemplo n.º 2
0
 def setUp(self):
     self.vertex_backend = VertexBackend()
     self.vertex_backend.set_extra_fields(
         username=TEST_USERNAME,
         password=TEST_PASSWORD,
         senderid=TEST_SENDER_ID,
     )
     self.queued_sms = QueuedSMS(phone_number=TEST_PHONE_NUMBER, )
Ejemplo n.º 3
0
class TestVertexBackendResponseHandling(TestCase):
    def setUp(self):
        self.vertex_backend = VertexBackend()
        self.queued_sms = QueuedSMS()

    def test_handle_success(self):
        self.vertex_backend.handle_response(self.queued_sms, 200,
                                            TEST_SUCCESSFUL_RESPONSE)
        self.assertEqual(self.queued_sms.backend_message_id,
                         TEST_SUCCESSFUL_RESPONSE)
        self.assertFalse(self.queued_sms.error)

    def test_handle_failure(self):
        self.assertFalse(self.queued_sms.error)
        self.vertex_backend.handle_response(self.queued_sms, 200,
                                            TEST_INCORRECT_NUMBER_RESPONSE)
        self.assertEqual(self.queued_sms.system_error_message,
                         SMS.ERROR_INVALID_DESTINATION_NUMBER)
        self.assertTrue(self.queued_sms.error)

        with mock.patch(
                'corehq.messaging.smsbackends.vertex.models.notify_exception'
        ) as exception_notifier:
            self.queued_sms.error = False
            self.vertex_backend.handle_response(self.queued_sms, 200,
                                                TEST_NON_CODE_MESSAGES)
            self.assertEqual(self.queued_sms.system_error_message,
                             SMS.ERROR_TOO_MANY_UNSUCCESSFUL_ATTEMPTS)
            self.assertTrue(self.queued_sms.error)
            exception_notifier.assert_called_once_with(
                None,
                "Error with the Vertex SMS Backend: " + TEST_NON_CODE_MESSAGES)

        with mock.patch(
                'corehq.messaging.smsbackends.vertex.models.notify_exception'
        ) as exception_notifier:
            self.queued_sms.error = False
            self.vertex_backend.handle_response(self.queued_sms, 200,
                                                TEST_FAILURE_RESPONSE)
            self.assertEqual(self.queued_sms.system_error_message,
                             SMS.ERROR_TOO_MANY_UNSUCCESSFUL_ATTEMPTS)
            self.assertTrue(self.queued_sms.error)
            exception_notifier.assert_called_once_with(
                None,
                "Error with the Vertex SMS Backend: " + TEST_FAILURE_RESPONSE)

        with self.assertRaisesMessage(
                VertexBackendException,
                "Unrecognized response from Vertex gateway with {response_status_code} "
                "status code, response {response_text}".format(
                    response_status_code=200,
                    response_text=RANDOM_ERROR_MESSAGE)):
            self.vertex_backend.handle_response(self.queued_sms, 200,
                                                RANDOM_ERROR_MESSAGE)
Ejemplo n.º 4
0
class TestVertexBackendResponseHandling(TestCase):
    def setUp(self):
        self.vertex_backend = VertexBackend()
        self.queued_sms = QueuedSMS()

    def test_handle_success(self):
        self.vertex_backend.handle_response(self.queued_sms, 200, TEST_SUCCESSFUL_RESPONSE)
        self.assertEqual(self.queued_sms.backend_message_id, TEST_SUCCESSFUL_RESPONSE)
        self.assertFalse(self.queued_sms.error)

    def test_handle_failure(self):
        self.assertFalse(self.queued_sms.error)
        self.vertex_backend.handle_response(self.queued_sms, 200, TEST_INCORRECT_NUMBER_RESPONSE)
        self.assertEqual(self.queued_sms.system_error_message, SMS.ERROR_INVALID_DESTINATION_NUMBER)
        self.assertTrue(self.queued_sms.error)

        with mock.patch('corehq.messaging.smsbackends.vertex.models.notify_exception') as exception_notifier:
            self.queued_sms.error = False
            self.vertex_backend.handle_response(self.queued_sms, 200, TEST_NON_CODE_MESSAGES)
            self.assertEqual(self.queued_sms.system_error_message, SMS.ERROR_TOO_MANY_UNSUCCESSFUL_ATTEMPTS)
            self.assertTrue(self.queued_sms.error)
            exception_notifier.assert_called_once_with(
                None,
                "Error with the Vertex SMS Backend: " + TEST_NON_CODE_MESSAGES
            )

        with mock.patch('corehq.messaging.smsbackends.vertex.models.notify_exception') as exception_notifier:
            self.queued_sms.error = False
            self.vertex_backend.handle_response(self.queued_sms, 200, TEST_FAILURE_RESPONSE)
            self.assertEqual(self.queued_sms.system_error_message, SMS.ERROR_TOO_MANY_UNSUCCESSFUL_ATTEMPTS)
            self.assertTrue(self.queued_sms.error)
            exception_notifier.assert_called_once_with(
                None,
                "Error with the Vertex SMS Backend: " + TEST_FAILURE_RESPONSE
            )

        with self.assertRaisesMessage(
                VertexBackendException,
                "Unrecognized response from Vertex gateway with {response_status_code} "
                "status code, response {response_text}".format(
                    response_status_code=200,
                    response_text=RANDOM_ERROR_MESSAGE)
        ):
            self.vertex_backend.handle_response(self.queued_sms, 200, RANDOM_ERROR_MESSAGE)
Ejemplo n.º 5
0
 def setUp(self):
     self.vertex_backend = VertexBackend()
     self.vertex_backend.set_extra_fields(
         username=TEST_USERNAME,
         password=TEST_PASSWORD,
         senderid=TEST_SENDER_ID,
     )
     self.queued_sms = QueuedSMS(
         phone_number=TEST_PHONE_NUMBER,
     )
Ejemplo n.º 6
0
class TestVertexBackendRequestContent(TestCase):
    def setUp(self):
        self.vertex_backend = VertexBackend()
        self.vertex_backend.set_extra_fields(
            username=TEST_USERNAME,
            password=TEST_PASSWORD,
            senderid=TEST_SENDER_ID,
        )
        self.queued_sms = QueuedSMS(
            phone_number=TEST_PHONE_NUMBER,
        )

    def test_params(self):
        self.queued_sms.text = TEST_TEXT_MESSAGE
        params = self.vertex_backend.populate_params(self.queued_sms)
        self.assertEqual(params['username'], TEST_USERNAME)
        self.assertEqual(params['pass'], TEST_PASSWORD)
        self.assertEqual(params['senderid'], TEST_SENDER_ID)
        self.assertEqual(params['response'], 'Y')
        self.assertEqual(params['dest_mobileno'], strip_plus(TEST_PHONE_NUMBER))
        self.assertEqual(params['msgtype'], TEXT_MSG_TYPE)
        self.assertEqual(params['message'], TEST_TEXT_MESSAGE)

        self.queued_sms.text = TEST_UNICODE_MESSAGE
        params = self.vertex_backend.populate_params(self.queued_sms)
        if six.PY3:
            self.assertEqual(params['message'], TEST_UNICODE_MESSAGE)
            self.assertEqual(params['msgtype'], TEXT_MSG_TYPE)
        else:
            self.assertEqual(params['message'].decode('utf-8'), TEST_UNICODE_MESSAGE)
            self.assertEqual(params['msgtype'], UNICODE_MSG_TYPE)

    def test_phone_number_is_valid(self):
        self.assertFalse(VertexBackend().phone_number_is_valid('+91'))
        self.assertFalse(VertexBackend().phone_number_is_valid('+123456789'))
        self.assertTrue(VertexBackend().phone_number_is_valid('+910123456789'))
Ejemplo n.º 7
0
 def setUp(self):
     self.vertex_backend = VertexBackend()
     self.queued_sms = QueuedSMS()
Ejemplo n.º 8
0
 def test_phone_number_is_valid(self):
     self.assertFalse(VertexBackend().phone_number_is_valid('+91'))
     self.assertFalse(VertexBackend().phone_number_is_valid('+123456789'))
     self.assertTrue(VertexBackend().phone_number_is_valid('+910123456789'))
Ejemplo n.º 9
0
 def setUp(self):
     self.vertex_backend = VertexBackend()
     self.queued_sms = QueuedSMS()