mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 01:41:05 -05:00
Moved mmg_url to configs.
Fix up the tests
This commit is contained in:
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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"
|
||||||
@@ -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'
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user