Exemple #1
0
    def test_repr(self):
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='myproject')
        self.assertEqual(repr(service), '<SMSService user @ myproject>')

        service = sms_plusserver.SMSService(username='******', password='******')
        self.assertEqual(repr(service), '<SMSService user>')
Exemple #2
0
    def test_put_sms_ok_custom_params(self, mock_post):
        type(mock_post.return_value).text = mock.PropertyMock(return_value=(
            'REQUEST OK\nhandle = d41d8cd98f00b204e9800998ecf8427e'))
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        response = service.put_sms('+4911122233344',
                                   'Hello!',
                                   orig='TEST',
                                   registered_delivery=False,
                                   debug=True,
                                   project='PROJECT2',
                                   encoding='utf-8',
                                   max_parts=3,
                                   timeout=30)

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_PUT_URL, {
                'dest': '+4911122233344',
                'data': 'Hello!',
                'debug': '1',
                'project': 'PROJECT2',
                'registered_delivery': '0',
                'orig': 'TEST',
                'enc': 'utf-8',
                'maxparts': '3',
            },
            auth=('user', 'pass'),
            timeout=30)
        self.assertIsInstance(response, sms_plusserver.SMSResponse)
        self.assertEqual(response.message, 'REQUEST OK')
        self.assertEqual(response.handle_id,
                         'd41d8cd98f00b204e9800998ecf8427e')
Exemple #3
0
    def test_configure(self):
        custom_put_url = 'http://localhost:8000/put.php'
        custom_sms_state_url = 'http://localhost:8000/sms-state.php'
        custom_project = 'TestProject'
        custom_username = '******'
        custom_password = '******'
        custom_orig = 'TEST'
        custom_encoding = 'utf-8'
        custom_max_parts = 3
        custom_timeout = 30

        service = sms_plusserver.SMSService()
        service.configure(put_url=custom_put_url,
                          sms_state_url=custom_sms_state_url,
                          project=custom_project,
                          username=custom_username,
                          password=custom_password,
                          orig=custom_orig,
                          encoding=custom_encoding,
                          max_parts=custom_max_parts,
                          timeout=custom_timeout)

        self.assertEqual(service.put_url, custom_put_url)
        self.assertEqual(service.sms_state_url, custom_sms_state_url)
        self.assertEqual(service.project, custom_project)
        self.assertEqual(service.username, custom_username)
        self.assertEqual(service.password, custom_password)
        self.assertEqual(service.orig, custom_orig)
        self.assertEqual(service.encoding, custom_encoding)
        self.assertEqual(service.max_parts, custom_max_parts)
        self.assertEqual(service.timeout, custom_timeout)
Exemple #4
0
    def test_put_sms_error_missing_credentials(self, mock_post):
        service = sms_plusserver.SMSService()

        with self.assertRaises(sms_plusserver.ConfigurationError):
            service.put_sms('+4911122233344', 'Hello!')

        mock_post.assert_not_called()
Exemple #5
0
    def test_check_sms_state_error_missing_credentials(self, mock_post):
        service = sms_plusserver.SMSService()

        with self.assertRaises(sms_plusserver.ConfigurationError):
            service.check_sms_state('d41d8cd98f00b204e9800998ecf8427e')

        mock_post.assert_not_called()
Exemple #6
0
    def test_check_sms_state_error_missing_handle_id(self, mock_post):
        service = sms_plusserver.SMSService(username='******', password='******')

        with self.assertRaises(sms_plusserver.ValidationError):
            service.check_sms_state(None)

        mock_post.assert_not_called()
Exemple #7
0
    def test_send_ok_custom_params(self, mock_put_sms):
        service = sms_plusserver.SMSService()
        sms = sms_plusserver.SMS('+4911122233344',
                                 'Hello!',
                                 orig='TEST',
                                 registered_delivery=False,
                                 debug=True,
                                 project='PROJECT2',
                                 encoding='utf-8',
                                 max_parts=3)

        success = service.send(sms, timeout=30, fail_silently=True)

        mock_put_sms.assert_called_once_with(destination='+4911122233344',
                                             text='Hello!',
                                             orig='TEST',
                                             registered_delivery=False,
                                             debug=True,
                                             project='PROJECT2',
                                             encoding='utf-8',
                                             max_parts=3,
                                             timeout=30,
                                             fail_silently=True)
        self.assertTrue(success)
        self.assertIsInstance(sms.put_response, sms_plusserver.SMSResponse)
Exemple #8
0
    def test_check_state_service_error(self, mock_check_sms_state):
        service = sms_plusserver.SMSService()
        sms = sms_plusserver.SMS('+4911122233344', 'Hello!')
        sms.put_response = sms_plusserver.SMSResponse(
            'REQUEST OK\nhandle = d41d8cd98f00b204e9800998ecf8427e')

        with self.assertRaises(sms_plusserver.RequestError):
            service.check_state(sms)

        mock_check_sms_state.assert_called_once_with(
            handle_id='d41d8cd98f00b204e9800998ecf8427e',
            timeout=None,
            fail_silently=False)
        self.assertIsNone(sms.state_response)
Exemple #9
0
    def test_check_state_ok_custom_params(self, mock_check_sms_state):
        service = sms_plusserver.SMSService()
        sms = sms_plusserver.SMS('+4911122233344', 'Hello!')
        sms.put_response = sms_plusserver.SMSResponse(
            'REQUEST OK\nhandle = d41d8cd98f00b204e9800998ecf8427e')

        state = service.check_state(sms, timeout=30, fail_silently=True)

        mock_check_sms_state.assert_called_once_with(
            handle_id='d41d8cd98f00b204e9800998ecf8427e',
            timeout=30,
            fail_silently=True)
        self.assertEqual(state, 'arrived')
        self.assertIsInstance(sms.state_response, sms_plusserver.SMSResponse)
Exemple #10
0
    def test_check_sms_state_error_network(self, mock_post):
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        with self.assertRaises(sms_plusserver.CommunicationError) as raised:
            service.check_sms_state('d41d8cd98f00b204e9800998ecf8427e')

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_STATE_URL, {
                'handle': 'd41d8cd98f00b204e9800998ecf8427e',
            },
            auth=('user', 'pass'),
            timeout=None)
        self.assertIsInstance(raised.exception.original_exception,
                              requests.ConnectTimeout)
Exemple #11
0
    def test_check_sms_state_fail_silently(self, mock_post):
        type(mock_post.return_value).text = mock.PropertyMock(
            return_value='REQUEST ERROR\nerror = Something is wrong')
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        response = service.check_sms_state('d41d8cd98f00b204e9800998ecf8427e',
                                           fail_silently=True)

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_STATE_URL, {
                'handle': 'd41d8cd98f00b204e9800998ecf8427e',
            },
            auth=('user', 'pass'),
            timeout=None)
        self.assertIsNone(response)
Exemple #12
0
    def test_check_sms_state_error_response(self, mock_post):
        type(mock_post.return_value).text = mock.PropertyMock(
            return_value='ERROR\nerror = Something is wrong')
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        with self.assertRaises(sms_plusserver.RequestError) as raised:
            service.check_sms_state('unknownhandle')

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_STATE_URL, {
                'handle': 'unknownhandle',
            },
            auth=('user', 'pass'),
            timeout=None)
        self.assertEqual(six.text_type(raised.exception), 'Something is wrong')
Exemple #13
0
    def test_send_service_error(self, mock_put_sms):
        service = sms_plusserver.SMSService()
        sms = sms_plusserver.SMS('+4911122233344', 'Hello!')

        with self.assertRaises(sms_plusserver.RequestError):
            service.send(sms)

        mock_put_sms.assert_called_once_with(destination='+4911122233344',
                                             text='Hello!',
                                             orig=None,
                                             registered_delivery=True,
                                             debug=False,
                                             project=None,
                                             encoding=None,
                                             max_parts=None,
                                             timeout=None,
                                             fail_silently=False)
        self.assertIsNone(sms.put_response)
Exemple #14
0
    def test_send_ok_default_params(self, mock_put_sms):
        service = sms_plusserver.SMSService()
        sms = sms_plusserver.SMS('+4911122233344', 'Hello!')

        handle_id = service.send(sms)

        mock_put_sms.assert_called_once_with(destination='+4911122233344',
                                             text='Hello!',
                                             orig=None,
                                             registered_delivery=True,
                                             debug=False,
                                             project=None,
                                             encoding=None,
                                             max_parts=None,
                                             timeout=None,
                                             fail_silently=False)
        self.assertEqual(handle_id, 'd41d8cd98f00b204e9800998ecf8427e')
        self.assertIsInstance(sms.put_response, sms_plusserver.SMSResponse)
Exemple #15
0
    def test_check_sms_state_ok_default_params(self, mock_post):
        type(mock_post.return_value).text = mock.PropertyMock(
            return_value='REQUEST OK\nstate = arrived')
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        response = service.check_sms_state('d41d8cd98f00b204e9800998ecf8427e')

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_STATE_URL, {
                'handle': 'd41d8cd98f00b204e9800998ecf8427e',
            },
            auth=('user', 'pass'),
            timeout=None)
        self.assertIsInstance(response, sms_plusserver.SMSResponse)
        self.assertEqual(response.message, 'REQUEST OK')
        self.assertEqual(response.state, 'arrived')
Exemple #16
0
 def test_init_default_attributes(self):
     service = sms_plusserver.SMSService()
     self.assertEqual(service.put_url,
                      sms_plusserver.default_service.put_url)
     self.assertEqual(service.sms_state_url,
                      sms_plusserver.default_service.sms_state_url)
     self.assertEqual(service.project,
                      sms_plusserver.default_service.project)
     self.assertEqual(service.username,
                      sms_plusserver.default_service.username)
     self.assertEqual(service.password,
                      sms_plusserver.default_service.password)
     self.assertEqual(service.orig, sms_plusserver.default_service.orig)
     self.assertEqual(service.encoding,
                      sms_plusserver.default_service.encoding)
     self.assertEqual(service.max_parts,
                      sms_plusserver.default_service.max_parts)
     self.assertEqual(service.timeout,
                      sms_plusserver.default_service.timeout)
Exemple #17
0
    def test_check_sms_state_error_http(self, mock_post):
        type(mock_post.return_value).text = mock.PropertyMock(
            return_value='Something is wrong')
        type(mock_post.return_value).raise_for_status = mock.MagicMock(
            side_effect=requests.HTTPError)
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        with self.assertRaises(sms_plusserver.RequestError) as raised:
            service.check_sms_state('d41d8cd98f00b204e9800998ecf8427e')

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_STATE_URL, {
                'handle': 'd41d8cd98f00b204e9800998ecf8427e',
            },
            auth=('user', 'pass'),
            timeout=None)
        self.assertIsInstance(raised.exception.original_exception,
                              requests.HTTPError)
Exemple #18
0
    def test_put_sms_error_network(self, mock_post):
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        with self.assertRaises(sms_plusserver.CommunicationError) as raised:
            service.put_sms('+4911122233344', 'Hello!')

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_PUT_URL, {
                'dest': '+4911122233344',
                'data': 'Hello!',
                'debug': '0',
                'project': 'TESTPROJECT',
                'registered_delivery': '1',
            },
            auth=('user', 'pass'),
            timeout=None)
        self.assertIsInstance(raised.exception.original_exception,
                              requests.ConnectTimeout)
Exemple #19
0
    def test_put_sms_error_response(self, mock_post):
        type(mock_post.return_value).text = mock.PropertyMock(
            return_value='ERROR\nerror = Something is wrong')
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        with self.assertRaises(sms_plusserver.RequestError) as raised:
            service.put_sms('+4911122233344', 'Hello!')

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_PUT_URL, {
                'dest': '+4911122233344',
                'data': 'Hello!',
                'debug': '0',
                'project': 'TESTPROJECT',
                'registered_delivery': '1',
            },
            auth=('user', 'pass'),
            timeout=None)
        self.assertEqual(six.text_type(raised.exception), 'Something is wrong')
Exemple #20
0
    def test_put_sms_error_fail_silently(self, mock_post):
        type(mock_post.return_value).text = mock.PropertyMock(
            return_value='REQUEST ERROR\nerror = Something is wrong')
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        response = service.put_sms('+4911122233344',
                                   'Hello!',
                                   fail_silently=True)

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_PUT_URL, {
                'dest': '+4911122233344',
                'data': 'Hello!',
                'debug': '0',
                'project': 'TESTPROJECT',
                'registered_delivery': '1',
            },
            auth=('user', 'pass'),
            timeout=None)
        self.assertIsNone(response)
Exemple #21
0
    def test_put_sms_error_http(self, mock_post):
        type(mock_post.return_value).text = mock.PropertyMock(
            return_value='Something is wrong')
        type(mock_post.return_value).raise_for_status = mock.MagicMock(
            side_effect=requests.HTTPError)
        service = sms_plusserver.SMSService(username='******',
                                            password='******',
                                            project='TESTPROJECT')

        with self.assertRaises(sms_plusserver.RequestError) as raised:
            service.put_sms('+4911122233344', 'Hello!')

        mock_post.assert_called_once_with(
            sms_plusserver.SMSService.SMS_PUT_URL, {
                'dest': '+4911122233344',
                'data': 'Hello!',
                'debug': '0',
                'project': 'TESTPROJECT',
                'registered_delivery': '1',
            },
            auth=('user', 'pass'),
            timeout=None)
        self.assertIsInstance(raised.exception.original_exception,
                              requests.HTTPError)