only catch HTTPError

also add tests
This commit is contained in:
Leo Hemsted
2018-12-17 15:24:24 +00:00
parent 5c3c4ec78c
commit 94da05ebc4
2 changed files with 47 additions and 1 deletions

View File

@@ -127,7 +127,7 @@ def choose_template(service_id, template_type='all', template_folder_id=None):
abort(403)
try:
return process_folder_management_form(templates_and_folders_form, template_folder_id)
except Exception as e:
except HTTPError as e:
flash(e.message)
if 'templates_and_folders' in templates_and_folders_form.errors:

View File

@@ -2,6 +2,7 @@ import uuid
import pytest
from flask import url_for
from notifications_python_client.errors import HTTPError
from tests.conftest import (
SERVICE_ONE_ID,
@@ -1116,3 +1117,48 @@ def test_radio_button_with_no_value_shows_custom_error_message(
assert mock_create_template_folder.called is False
assert page.select_one('span.error-message').text.strip() == 'Select the type of template you want to add'
@pytest.mark.parametrize('data, error_msg', [
# nothing selected when moving
(
{'operation': 'move-to-new-folder', 'templates_and_folders': [], 'move_to_new_folder_name': 'foo'},
'Select at least one template or folder'
),
(
{'operation': 'move-to-existing-folder', 'templates_and_folders': [], 'move_to': PARENT_FOLDER_ID},
'Select at least one template or folder'
),
# api error (eg moving folder to itself)
(
{'operation': 'move-to-existing-folder', 'templates_and_folders': [FOLDER_TWO_ID], 'move_to': FOLDER_TWO_ID},
'Some api error msg'
)
])
def test_show_custom_error_message(
client_request,
service_one,
mock_get_service_templates,
mock_get_template_folders,
mock_move_to_template_folder,
mock_create_template_folder,
data,
error_msg,
):
service_one['permissions'] += ['edit_folders']
mock_get_template_folders.return_value = [
{'id': PARENT_FOLDER_ID, 'name': 'folder_one', 'parent_id': None},
{'id': FOLDER_TWO_ID, 'name': 'folder_two', 'parent_id': None},
]
mock_move_to_template_folder.side_effect = HTTPError(message='Some api error msg')
page = client_request.post(
'main.choose_template',
service_id=SERVICE_ONE_ID,
_data=data,
_expected_status=200,
_expected_redirect=None,
)
assert page.select_one('div.banner-dangerous').text.strip() == error_msg