From c8ad5362ebf3366ad6561cf3e5d59470448f4d6f Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Wed, 20 Jul 2016 10:40:50 +0100 Subject: [PATCH] Moved mmg_url to configs. Fix up the tests --- app/clients/sms/mmg.py | 9 +++++---- config.py | 1 + environment_test.sh | 1 + tests/app/clients/test_mmg.py | 19 ++++++++++--------- tests/app/conftest.py | 12 ------------ 5 files changed, 17 insertions(+), 25 deletions(-) diff --git a/app/clients/sms/mmg.py b/app/clients/sms/mmg.py index 3fb7a6453..bec425966 100644 --- a/app/clients/sms/mmg.py +++ b/app/clients/sms/mmg.py @@ -63,6 +63,7 @@ class MMGClient(SmsClient): self.from_number = current_app.config.get('FROM_NUMBER') self.name = 'mmg' self.statsd_client = statsd_client + self.mmg_url = current_app.config.get('MMG_URL') def get_name(self): return self.name @@ -78,9 +79,9 @@ class MMGClient(SmsClient): } start_time = monotonic() - mmg_url = "https://api.mmg.co.uk/json/api.php" + try: - response = request("POST", mmg_url, + response = request("POST", self.mmg_url, data=json.dumps(data), headers={'Content-Type': 'application/json', 'Authorization': 'Basic {}'.format(self.api_key)}) @@ -90,7 +91,7 @@ class MMGClient(SmsClient): self.current_app.logger.info( "API {} request on {} succeeded with {} '{}'".format( "POST", - mmg_url, + self.mmg_url, response.status_code, response.json().items() ) @@ -100,7 +101,7 @@ class MMGClient(SmsClient): self.current_app.logger.error( "API {} request on {} failed with {} '{}'".format( "POST", - mmg_url, + self.mmg_url, api_error.status_code, api_error.message ) diff --git a/config.py b/config.py index 51ed4fe41..233de370e 100644 --- a/config.py +++ b/config.py @@ -27,6 +27,7 @@ class Config(object): NOTIFY_EMAIL_DOMAIN = os.environ['NOTIFY_EMAIL_DOMAIN'] PAGE_SIZE = 50 SMS_CHAR_COUNT_LIMIT = 495 + MMG_URL = os.environ['MMG_URL'] NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553' INVITATION_EMAIL_TEMPLATE_ID = '4f46df42-f795-4cc4-83bb-65ca312f49cc' diff --git a/environment_test.sh b/environment_test.sh index d202e5534..34ac45073 100644 --- a/environment_test.sh +++ b/environment_test.sh @@ -23,3 +23,4 @@ export STATSD_PORT=1000 export STATSD_PREFIX="stats-prefix" export API_HOST_NAME="http://localhost:6011" export FROM_NUMBER='from_number' +export MMG_URL="https://api.mmg.co.uk/json/api.php" \ No newline at end of file diff --git a/tests/app/clients/test_mmg.py b/tests/app/clients/test_mmg.py index ee56518fb..bc4428193 100644 --- a/tests/app/clients/test_mmg.py +++ b/tests/app/clients/test_mmg.py @@ -1,5 +1,6 @@ import pytest import requests_mock +from app import mmg_client 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'] -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' response_dict = {'Reference': 12345678} with requests_mock.Mocker() as request_mock: 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() assert response.status_code == 200 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' content = 'my message' 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: 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.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['MSISDN'] == to assert request_args['msg'] == content - assert request_args['sender'] == 'bar' + assert request_args['sender'] == 'from_number' assert request_args['cid'] == reference 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' response_dict = { '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: 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.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' content = 'my message' 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: 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() assert request_args['sender'] == 'fromservice' diff --git a/tests/app/conftest.py b/tests/app/conftest.py index 34d603c12..ce78dc2eb 100644 --- a/tests/app/conftest.py +++ b/tests/app/conftest.py @@ -551,18 +551,6 @@ def mock_firetext_client(mocker, statsd_client=None): 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') def sms_code_template(notify_db, notify_db_session):