mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-02 09:26:08 -05:00
Merge pull request #2647 from alphagov/tell-users-why-letter-failed-validation
Grab metadata when getting pdf letter preview from S3
This commit is contained in:
@@ -1081,7 +1081,14 @@ def test_preview_letter_template_precompiled_pdf_file_type(
|
||||
|
||||
content = b'\x00\x01'
|
||||
|
||||
mock_get_letter_pdf = mocker.patch('app.template.rest.get_letter_pdf', return_value=content)
|
||||
mock_get_letter_pdf = mocker.patch(
|
||||
'app.template.rest.get_letter_pdf_and_metadata',
|
||||
return_value=(content, {
|
||||
"message": "",
|
||||
"invalid_pages": "",
|
||||
"page_count": "1"
|
||||
})
|
||||
)
|
||||
|
||||
resp = admin_request.get(
|
||||
'template.preview_letter_template_by_notification_id',
|
||||
@@ -1116,7 +1123,7 @@ def test_preview_letter_template_precompiled_s3_error(
|
||||
}):
|
||||
with requests_mock.Mocker():
|
||||
|
||||
mocker.patch('app.template.rest.get_letter_pdf',
|
||||
mocker.patch('app.template.rest.get_letter_pdf_and_metadata',
|
||||
side_effect=botocore.exceptions.ClientError(
|
||||
{'Error': {'Code': '403', 'Message': 'Unauthorized'}},
|
||||
'GetObject'
|
||||
@@ -1136,11 +1143,11 @@ def test_preview_letter_template_precompiled_s3_error(
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"filetype, post_url, overlay",
|
||||
"filetype, post_url, message",
|
||||
[
|
||||
('png', 'precompiled-preview.png', None),
|
||||
('png', 'precompiled/overlay.png?page_number=1', 1),
|
||||
('pdf', 'precompiled/overlay.pdf', 1)
|
||||
('png', 'precompiled-preview.png', ""),
|
||||
('png', 'precompiled/overlay.png?page_number=1', "content-outside-printable-area"),
|
||||
('pdf', 'precompiled/overlay.pdf', "content-outside-printable-area")
|
||||
]
|
||||
)
|
||||
def test_preview_letter_template_precompiled_png_file_type_or_pdf_with_overlay(
|
||||
@@ -1151,7 +1158,7 @@ def test_preview_letter_template_precompiled_png_file_type_or_pdf_with_overlay(
|
||||
mocker,
|
||||
filetype,
|
||||
post_url,
|
||||
overlay
|
||||
message
|
||||
):
|
||||
|
||||
template = create_template(sample_service,
|
||||
@@ -1171,7 +1178,16 @@ def test_preview_letter_template_precompiled_png_file_type_or_pdf_with_overlay(
|
||||
pdf_content = b'\x00\x01'
|
||||
expected_returned_content = b'\x00\x02'
|
||||
|
||||
mock_get_letter_pdf = mocker.patch('app.template.rest.get_letter_pdf', return_value=pdf_content)
|
||||
metadata = {
|
||||
"message": message,
|
||||
"invalid_pages": "[1]",
|
||||
"page_count": "1"
|
||||
}
|
||||
|
||||
mock_get_letter_pdf = mocker.patch(
|
||||
'app.template.rest.get_letter_pdf_and_metadata',
|
||||
return_value=(pdf_content, metadata)
|
||||
)
|
||||
|
||||
mocker.patch('app.template.rest.extract_page_from_pdf', return_value=pdf_content)
|
||||
|
||||
@@ -1182,18 +1198,18 @@ def test_preview_letter_template_precompiled_png_file_type_or_pdf_with_overlay(
|
||||
status_code=200
|
||||
)
|
||||
|
||||
resp = admin_request.get(
|
||||
response = admin_request.get(
|
||||
'template.preview_letter_template_by_notification_id',
|
||||
service_id=notification.service_id,
|
||||
notification_id=notification.id,
|
||||
file_type=filetype,
|
||||
overlay=overlay,
|
||||
)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
mock_post.last_request.json()
|
||||
assert mock_get_letter_pdf.called_once_with(notification)
|
||||
assert base64.b64decode(resp['content']) == expected_returned_content
|
||||
assert base64.b64decode(response['content']) == expected_returned_content
|
||||
assert response["metadata"] == metadata
|
||||
|
||||
|
||||
@pytest.mark.parametrize('page_number,expect_preview_url', [
|
||||
@@ -1227,7 +1243,14 @@ def test_preview_letter_template_precompiled_png_file_type_hide_notify_tag_only_
|
||||
png_content = b'\x00\x02'
|
||||
encoded = base64.b64encode(png_content).decode('utf-8')
|
||||
|
||||
mocker.patch('app.template.rest.get_letter_pdf', return_value=pdf_content)
|
||||
mocker.patch(
|
||||
'app.template.rest.get_letter_pdf_and_metadata',
|
||||
return_value=(pdf_content, {
|
||||
"message": "",
|
||||
"invalid_pages": "",
|
||||
"page_count": "2"
|
||||
})
|
||||
)
|
||||
mocker.patch('app.template.rest.extract_page_from_pdf', return_value=png_content)
|
||||
mock_get_png_preview = mocker.patch('app.template.rest._get_png_preview_or_overlaid_pdf', return_value=encoded)
|
||||
|
||||
@@ -1269,7 +1292,11 @@ def test_preview_letter_template_precompiled_png_template_preview_500_error(
|
||||
pdf_content = b'\x00\x01'
|
||||
png_content = b'\x00\x02'
|
||||
|
||||
mocker.patch('app.template.rest.get_letter_pdf', return_value=pdf_content)
|
||||
mocker.patch('app.template.rest.get_letter_pdf_and_metadata', return_value=(pdf_content, {
|
||||
"message": "",
|
||||
"invalid_pages": "",
|
||||
"page_count": "1"
|
||||
}))
|
||||
|
||||
mocker.patch('app.template.rest.extract_page_from_pdf', return_value=pdf_content)
|
||||
|
||||
@@ -1318,7 +1345,11 @@ def test_preview_letter_template_precompiled_png_template_preview_400_error(
|
||||
pdf_content = b'\x00\x01'
|
||||
png_content = b'\x00\x02'
|
||||
|
||||
mocker.patch('app.template.rest.get_letter_pdf', return_value=pdf_content)
|
||||
mocker.patch('app.template.rest.get_letter_pdf_and_metadata', return_value=(pdf_content, {
|
||||
"message": "",
|
||||
"invalid_pages": "",
|
||||
"page_count": "1"
|
||||
}))
|
||||
|
||||
mocker.patch('app.template.rest.extract_page_from_pdf', return_value=pdf_content)
|
||||
|
||||
@@ -1366,7 +1397,11 @@ def test_preview_letter_template_precompiled_png_template_preview_pdf_error(
|
||||
pdf_content = b'\x00\x01'
|
||||
png_content = b'\x00\x02'
|
||||
|
||||
mocker.patch('app.template.rest.get_letter_pdf', return_value=pdf_content)
|
||||
mocker.patch('app.template.rest.get_letter_pdf_and_metadata', return_value=(pdf_content, {
|
||||
"message": "",
|
||||
"invalid_pages": "",
|
||||
"page_count": "1"
|
||||
}))
|
||||
|
||||
error_message = "PDF Error message"
|
||||
mocker.patch('app.template.rest.extract_page_from_pdf', side_effect=PdfReadError(error_message))
|
||||
|
||||
Reference in New Issue
Block a user