mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 01:41:05 -05:00
Merge pull request #543 from alphagov/use-new-mmg-api
Use the new mmg api
This commit is contained in:
@@ -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,8 +79,9 @@ class MMGClient(SmsClient):
|
||||
}
|
||||
|
||||
start_time = monotonic()
|
||||
|
||||
try:
|
||||
response = request("POST", "https://www.mmgrp.co.uk/API/json/api.php",
|
||||
response = request("POST", self.mmg_url,
|
||||
data=json.dumps(data),
|
||||
headers={'Content-Type': 'application/json',
|
||||
'Authorization': 'Basic {}'.format(self.api_key)})
|
||||
@@ -89,7 +91,7 @@ class MMGClient(SmsClient):
|
||||
self.current_app.logger.info(
|
||||
"API {} request on {} succeeded with {} '{}'".format(
|
||||
"POST",
|
||||
"https://www.mmgrp.co.uk/API/json/api.php",
|
||||
self.mmg_url,
|
||||
response.status_code,
|
||||
response.json().items()
|
||||
)
|
||||
@@ -99,7 +101,7 @@ class MMGClient(SmsClient):
|
||||
self.current_app.logger.error(
|
||||
"API {} request on {} failed with {} '{}'".format(
|
||||
"POST",
|
||||
"https://www.mmgrp.co.uk/API/json/api.php",
|
||||
self.mmg_url,
|
||||
api_error.status_code,
|
||||
api_error.message
|
||||
)
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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"
|
||||
@@ -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,43 +29,43 @@ 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://www.mmgrp.co.uk/API/json/api.php', json=response_dict, status_code=200)
|
||||
response = mock_mmg_client.send_sms(to, content, reference)
|
||||
request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200)
|
||||
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'
|
||||
response_dict = {'Reference': 12345678}
|
||||
|
||||
with requests_mock.Mocker() as request_mock:
|
||||
request_mock.post('https://www.mmgrp.co.uk/API/json/api.php', json=response_dict, status_code=200)
|
||||
mock_mmg_client.send_sms(to, content, reference)
|
||||
request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200)
|
||||
mmg_client.send_sms(to, content, reference)
|
||||
|
||||
assert request_mock.call_count == 1
|
||||
assert request_mock.request_history[0].url == 'https://www.mmgrp.co.uk/API/json/api.php'
|
||||
assert request_mock.request_history[0].url == 'https://api.mmg.co.uk/json/api.php'
|
||||
assert request_mock.request_history[0].method == 'POST'
|
||||
|
||||
request_args = request_mock.request_history[0].json()
|
||||
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,
|
||||
@@ -72,14 +73,14 @@ 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://www.mmgrp.co.uk/API/json/api.php', json=response_dict, status_code=400)
|
||||
mock_mmg_client.send_sms(to, content, reference)
|
||||
request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=400)
|
||||
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'
|
||||
@@ -87,8 +88,8 @@ def test_send_sms_override_configured_shortcode_with_sender(mocker, mock_mmg_cli
|
||||
sender = 'fromservice'
|
||||
|
||||
with requests_mock.Mocker() as request_mock:
|
||||
request_mock.post('https://www.mmgrp.co.uk/API/json/api.php', json=response_dict, status_code=200)
|
||||
mock_mmg_client.send_sms(to, content, reference, sender=sender)
|
||||
request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200)
|
||||
mmg_client.send_sms(to, content, reference, sender=sender)
|
||||
|
||||
request_args = request_mock.request_history[0].json()
|
||||
assert request_args['sender'] == 'fromservice'
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user