Merge pull request #1439 from alphagov/dvla-endpoint

Add platform–admin-only page to preview DVLA code
This commit is contained in:
Leo Hemsted
2017-08-22 14:44:48 +01:00
committed by GitHub
2 changed files with 69 additions and 0 deletions

View File

@@ -9,12 +9,14 @@ from flask import (
flash,
abort,
json,
Response,
)
from flask_login import login_required, current_user
from dateutil.parser import parse
from notifications_utils.formatters import escape_html
from notifications_utils.recipients import first_column_headings
from notifications_utils.template import LetterDVLATemplate
from notifications_python_client.errors import HTTPError
from app.main import main
@@ -146,6 +148,25 @@ def choose_template(service_id, template_type='all'):
)
@main.route("/services/<service_id>/templates/<template_id>/as-dvla")
@login_required
@user_has_permissions(admin_override=True)
def view_template_as_dvla_markup(service_id, template_id):
template = service_api_client.get_service_template(service_id, str(template_id))['data']
if template['template_type'] != 'letter':
abort(404)
return Response(
str(LetterDVLATemplate(
template,
notification_reference=1,
)).replace('<cr>', '<cr>\n'),
mimetype='text/plain',
)
@main.route("/services/<service_id>/templates/<template_id>.<filetype>")
@login_required
@user_has_permissions('view_activity', admin_override=True)

View File

@@ -14,6 +14,9 @@ from tests.conftest import (
mock_get_service_template,
normalize_spaces,
SERVICE_ONE_ID,
active_user_with_permissions,
platform_admin_user,
mock_get_user,
)
from tests import validate_route_permission, template_json, single_notification_json
@@ -1163,3 +1166,48 @@ def test_should_show_hint_once_template_redacted(
)
assert page.select('.hint')[0].text == 'Personalisation is hidden after sending'
@pytest.mark.parametrize('test_user, template_mock, expected_response_code', [
(
active_user_with_permissions,
mock_get_service_letter_template,
403
),
(
platform_admin_user,
mock_get_service_template,
404
),
(
platform_admin_user,
mock_get_service_email_template,
404
),
(
platform_admin_user,
mock_get_service_letter_template,
200
),
])
def test_should_show_letter_template_as_dvla_markup(
client,
mocker,
service_one,
fake_uuid,
mock_get_service,
test_user,
template_mock,
expected_response_code,
):
client.login(test_user(fake_uuid), mocker, service_one)
template_mock(mocker)
response = client.get(url_for(
'.view_template_as_dvla_markup',
service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
))
assert response.status_code == expected_response_code