diff --git a/app/main/views/platform_admin.py b/app/main/views/platform_admin.py
index c51ff7572..e40e33f15 100644
--- a/app/main/views/platform_admin.py
+++ b/app/main/views/platform_admin.py
@@ -280,6 +280,14 @@ def letter_validation_preview(from_platform_admin):
), 400
try:
+ if len(pdf_file.read()) > (2 * 1024 * 1024):
+ return render_template(
+ view_location,
+ form=form,
+ message="File must be less than 2MB",
+ pages=pages, result=result
+ ), 400
+ pdf_file.seek(0)
response = validate_letter(pdf_file)
response.raise_for_status()
if response.status_code == 200:
diff --git a/app/templates/views/letter-validation-preview.html b/app/templates/views/letter-validation-preview.html
index e10499cea..dd9e50740 100644
--- a/app/templates/views/letter-validation-preview.html
+++ b/app/templates/views/letter-validation-preview.html
@@ -5,6 +5,11 @@
{% from "components/page-footer.html" import page_footer %}
{% from "components/form.html" import form_wrapper %}
+
+{% block service_page_title %}
+ Letter validation preview
+{% endblock %}
+
{% block maincolumn_content %}
@@ -15,14 +20,29 @@
{{ banner(message, 'dangerous')}}
{% endif %}
-
Letter Validation Preview
+
Letter validation preview
{{ file_upload(
form.file,
- action = url_for('main.services_letter_validation_preview', service_id=current_service.id),
- button_text='Upload a PDF document',
+ action = url_for('main.service_letter_validation_preview', service_id=current_service.id),
+ button_text='Choose a file',
)}}
+ {%if not pages %}
+
+
Check your file meets the letter specification
+
Your file must be:
+
a PDF
+
no more than 10 pages long
+
less than 2 MB
+
+
The content of your letter mut appear inside the printable area.
+
+
+ Download the letter specification for more information.
+
+
+ {% endif%}
diff --git a/tests/app/main/views/test_platform_admin.py b/tests/app/main/views/test_platform_admin.py
index 7fba52400..87a0f90b9 100644
--- a/tests/app/main/views/test_platform_admin.py
+++ b/tests/app/main/views/test_platform_admin.py
@@ -761,6 +761,36 @@ def test_platform_admin_submit_empty_returned_letters(mocker, client, platform_a
assert "Can’t be empty" in response.get_data(as_text=True)
+def test_service_letter_validation_preview_renders_correctly(
+ client_request,
+ mock_has_no_jobs
+
+):
+ page = client_request.get('main.service_letter_validation_preview', service_id="service_1")
+
+ assert page.find('h1').text.strip() == "Letter validation preview"
+ assert page.find_all('input', class_='file-upload-field')
+
+
+def test_service_letter_validation_preview_returns_400_if_file_is_too_big(
+ client_request,
+ mock_has_no_jobs,
+ mocker
+
+):
+ with open('tests/test_pdf_files/big.pdf', 'rb') as file:
+ page = client_request.post('main.service_letter_validation_preview', service_id="service_1",
+ _data=dict(
+ pdf_file=file,
+ ),
+ content_type='multipart/form-data',
+ _follow_redirects=True)
+
+ assert page.find('h1').text.strip() == "Letter validation preview"
+ assert page.find_all('input', class_='file-upload-field')
+ page.find('span', class_='error-message').text.strip() == "File must be less than 2MB"
+
+
def test_letter_validation_preview_renders_correctly(mocker, client, platform_admin_user):
mock_get_user(mocker, user=platform_admin_user)
client.login(platform_admin_user)
diff --git a/tests/test_pdf_files/big.pdf b/tests/test_pdf_files/big.pdf
new file mode 100644
index 000000000..b617f9a98
Binary files /dev/null and b/tests/test_pdf_files/big.pdf differ