Moved mmg_url to configs.

Fix up the tests
This commit is contained in:
Rebecca Law
2016-07-20 10:40:50 +01:00
parent 30f7377d7e
commit c8ad5362eb
5 changed files with 17 additions and 25 deletions

View File

@@ -63,6 +63,7 @@ class MMGClient(SmsClient):
self.from_number = current_app.config.get('FROM_NUMBER') self.from_number = current_app.config.get('FROM_NUMBER')
self.name = 'mmg' self.name = 'mmg'
self.statsd_client = statsd_client self.statsd_client = statsd_client
self.mmg_url = current_app.config.get('MMG_URL')
def get_name(self): def get_name(self):
return self.name return self.name
@@ -78,9 +79,9 @@ class MMGClient(SmsClient):
} }
start_time = monotonic() start_time = monotonic()
mmg_url = "https://api.mmg.co.uk/json/api.php"
try: try:
response = request("POST", mmg_url, response = request("POST", self.mmg_url,
data=json.dumps(data), data=json.dumps(data),
headers={'Content-Type': 'application/json', headers={'Content-Type': 'application/json',
'Authorization': 'Basic {}'.format(self.api_key)}) 'Authorization': 'Basic {}'.format(self.api_key)})
@@ -90,7 +91,7 @@ class MMGClient(SmsClient):
self.current_app.logger.info( self.current_app.logger.info(
"API {} request on {} succeeded with {} '{}'".format( "API {} request on {} succeeded with {} '{}'".format(
"POST", "POST",
mmg_url, self.mmg_url,
response.status_code, response.status_code,
response.json().items() response.json().items()
) )
@@ -100,7 +101,7 @@ class MMGClient(SmsClient):
self.current_app.logger.error( self.current_app.logger.error(
"API {} request on {} failed with {} '{}'".format( "API {} request on {} failed with {} '{}'".format(
"POST", "POST",
mmg_url, self.mmg_url,
api_error.status_code, api_error.status_code,
api_error.message api_error.message
) )

View File

@@ -27,6 +27,7 @@ class Config(object):
NOTIFY_EMAIL_DOMAIN = os.environ['NOTIFY_EMAIL_DOMAIN'] NOTIFY_EMAIL_DOMAIN = os.environ['NOTIFY_EMAIL_DOMAIN']
PAGE_SIZE = 50 PAGE_SIZE = 50
SMS_CHAR_COUNT_LIMIT = 495 SMS_CHAR_COUNT_LIMIT = 495
MMG_URL = os.environ['MMG_URL']
NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553' NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
INVITATION_EMAIL_TEMPLATE_ID = '4f46df42-f795-4cc4-83bb-65ca312f49cc' INVITATION_EMAIL_TEMPLATE_ID = '4f46df42-f795-4cc4-83bb-65ca312f49cc'

View File

@@ -23,3 +23,4 @@ export STATSD_PORT=1000
export STATSD_PREFIX="stats-prefix" export STATSD_PREFIX="stats-prefix"
export API_HOST_NAME="http://localhost:6011" export API_HOST_NAME="http://localhost:6011"
export FROM_NUMBER='from_number' export FROM_NUMBER='from_number'
export MMG_URL="https://api.mmg.co.uk/json/api.php"

View File

@@ -1,5 +1,6 @@
import pytest import pytest
import requests_mock import requests_mock
from app import mmg_client
from app.clients.sms.mmg import (get_mmg_responses, MMGClientException) from app.clients.sms.mmg import (get_mmg_responses, MMGClientException)
@@ -28,20 +29,20 @@ def test_should_be_none_if_unrecognised_status_code():
assert not response_dict['success'] assert not response_dict['success']
def test_send_sms_successful_returns_mmg_response(mocker, mock_mmg_client): def test_send_sms_successful_returns_mmg_response(notify_api, mocker):
to = content = reference = 'foo' to = content = reference = 'foo'
response_dict = {'Reference': 12345678} response_dict = {'Reference': 12345678}
with requests_mock.Mocker() as request_mock: with requests_mock.Mocker() as request_mock:
request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200) request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200)
response = mock_mmg_client.send_sms(to, content, reference) response = mmg_client.send_sms(to, content, reference)
response_json = response.json() response_json = response.json()
assert response.status_code == 200 assert response.status_code == 200
assert response_json['Reference'] == 12345678 assert response_json['Reference'] == 12345678
def test_send_sms_calls_mmg_correctly(mocker, mock_mmg_client): def test_send_sms_calls_mmg_correctly(notify_api, mocker):
to = '+447234567890' to = '+447234567890'
content = 'my message' content = 'my message'
reference = 'my reference' reference = 'my reference'
@@ -49,7 +50,7 @@ def test_send_sms_calls_mmg_correctly(mocker, mock_mmg_client):
with requests_mock.Mocker() as request_mock: with requests_mock.Mocker() as request_mock:
request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200) request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200)
mock_mmg_client.send_sms(to, content, reference) mmg_client.send_sms(to, content, reference)
assert request_mock.call_count == 1 assert request_mock.call_count == 1
assert request_mock.request_history[0].url == 'https://api.mmg.co.uk/json/api.php' assert request_mock.request_history[0].url == 'https://api.mmg.co.uk/json/api.php'
@@ -59,12 +60,12 @@ def test_send_sms_calls_mmg_correctly(mocker, mock_mmg_client):
assert request_args['reqType'] == 'BULK' assert request_args['reqType'] == 'BULK'
assert request_args['MSISDN'] == to assert request_args['MSISDN'] == to
assert request_args['msg'] == content assert request_args['msg'] == content
assert request_args['sender'] == 'bar' assert request_args['sender'] == 'from_number'
assert request_args['cid'] == reference assert request_args['cid'] == reference
assert request_args['multi'] is True assert request_args['multi'] is True
def test_send_sms_raises_if_mmg_rejects(mocker, mock_mmg_client): def test_send_sms_raises_if_mmg_rejects(notify_api, mocker):
to = content = reference = 'foo' to = content = reference = 'foo'
response_dict = { response_dict = {
'Error': 206, 'Error': 206,
@@ -73,13 +74,13 @@ def test_send_sms_raises_if_mmg_rejects(mocker, mock_mmg_client):
with pytest.raises(MMGClientException) as exc, requests_mock.Mocker() as request_mock: with pytest.raises(MMGClientException) as exc, requests_mock.Mocker() as request_mock:
request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=400) request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=400)
mock_mmg_client.send_sms(to, content, reference) mmg_client.send_sms(to, content, reference)
assert exc.value.code == 206 assert exc.value.code == 206
assert exc.value.description == 'Some kind of error' assert exc.value.description == 'Some kind of error'
def test_send_sms_override_configured_shortcode_with_sender(mocker, mock_mmg_client): def test_send_sms_override_configured_shortcode_with_sender(notify_api, mocker):
to = '+447234567890' to = '+447234567890'
content = 'my message' content = 'my message'
reference = 'my reference' reference = 'my reference'
@@ -88,7 +89,7 @@ def test_send_sms_override_configured_shortcode_with_sender(mocker, mock_mmg_cli
with requests_mock.Mocker() as request_mock: with requests_mock.Mocker() as request_mock:
request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200) request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200)
mock_mmg_client.send_sms(to, content, reference, sender=sender) mmg_client.send_sms(to, content, reference, sender=sender)
request_args = request_mock.request_history[0].json() request_args = request_mock.request_history[0].json()
assert request_args['sender'] == 'fromservice' assert request_args['sender'] == 'fromservice'

View File

@@ -551,18 +551,6 @@ def mock_firetext_client(mocker, statsd_client=None):
return client return client
@pytest.fixture(scope='function')
def mock_mmg_client(mocker, statsd_client=None):
client = MMGClient()
statsd_client = statsd_client or mocker.Mock()()
current_app = mocker.Mock(config={
'MMG_API_KEY': 'foo',
'FROM_NUMBER': 'bar'
})
client.init_app(current_app, statsd_client)
return client
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
def sms_code_template(notify_db, def sms_code_template(notify_db,
notify_db_session): notify_db_session):