Add platform–admin-only page to preview DVLA code

Debugging the DVLA markup stuff is quite slow, because it’s split
between the API and utils, and things that work in tests don’t always
work with real template content.

This commit adds us a private endpoint that will let us see what DVLA
markup will be generated for any template, enabling a quicker feedback
loop.
This commit is contained in:
Chris Hill-Scott
2017-08-22 11:36:10 +01:00
parent 1b3d0ef9ab
commit 5ffd7c4448
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