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>')
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')
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)
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()
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()
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()
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)
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)
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)
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)
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)
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')
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)
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)
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')
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)
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)
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)
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')
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)
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)