Added a proper error response if the notification type is not supported.

This commit is contained in:
Rebecca Law
2017-08-23 14:56:03 +01:00
parent 789492060c
commit d4422dd35f
2 changed files with 20 additions and 4 deletions

View File

@@ -17,8 +17,8 @@ from app.errors import (
)
from app.models import (
EMAIL_TYPE, INTERNATIONAL_SMS_TYPE, SMS_TYPE,
KEY_TYPE_TEAM, PRIORITY
)
KEY_TYPE_TEAM, PRIORITY,
LETTER_TYPE)
from app.notifications.process_notifications import (
persist_notification,
send_notification_to_queue,
@@ -99,8 +99,10 @@ def get_notification_statistics_for_day():
@notifications.route('/notifications/<string:notification_type>', methods=['POST'])
def send_notification(notification_type):
if notification_type not in ['sms', 'email']:
assert False
if notification_type not in [SMS_TYPE, EMAIL_TYPE]:
msg = "{} notification type is not supported".format(notification_type)
msg = msg + ", please use the latest version of the client" if notification_type == LETTER_TYPE else msg
raise InvalidRequest(msg, 400)
notification_form, errors = (
sms_template_notification_schema if notification_type == SMS_TYPE else email_notification_schema

View File

@@ -1205,3 +1205,17 @@ def test_should_not_allow_notification_if_service_permission_not_set(
assert error_json['result'] == 'error'
assert error_json['message']['service'][0] == expected_error
@pytest.mark.parametrize(
"notification_type, err_msg",
[("letter", "letter notification type is not supported, please use the latest version of the client"),
("apple", "apple notification type is not supported")])
def test_should_throw_exception_if_notification_type_is_invalid(client, sample_service, notification_type, err_msg):
auth_header = create_authorization_header(service_id=sample_service.id)
response = client.post(
path='/notifications/{}'.format(notification_type),
data={},
headers=[('Content-Type', 'application/json'), auth_header])
assert response.status_code == 400
assert json.loads(response.get_data(as_text=True))["message"] == err_msg