mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-04 18:31:13 -05:00
Merge pull request #2760 from alphagov/add-try-catch
Add a try/except around the code to get the files.
This commit is contained in:
@@ -172,15 +172,18 @@ def get_key_and_size_of_letters_to_be_sent_to_print(print_run_deadline):
|
|||||||
|
|
||||||
letter_pdfs = []
|
letter_pdfs = []
|
||||||
for letter in letters_awaiting_sending:
|
for letter in letters_awaiting_sending:
|
||||||
letter_file_name = get_letter_pdf_filename(
|
try:
|
||||||
reference=letter.reference,
|
letter_file_name = get_letter_pdf_filename(
|
||||||
crown=letter.service.crown,
|
reference=letter.reference,
|
||||||
sending_date=letter.created_at,
|
crown=letter.service.crown,
|
||||||
postage=letter.postage
|
sending_date=letter.created_at,
|
||||||
)
|
postage=letter.postage
|
||||||
|
)
|
||||||
letter_head = s3.head_s3_object(current_app.config['LETTERS_PDF_BUCKET_NAME'], letter_file_name)
|
letter_head = s3.head_s3_object(current_app.config['LETTERS_PDF_BUCKET_NAME'], letter_file_name)
|
||||||
letter_pdfs.append({"Key": letter_file_name, "Size": letter_head['ContentLength']})
|
letter_pdfs.append({"Key": letter_file_name, "Size": letter_head['ContentLength']})
|
||||||
|
except BotoClientError as e:
|
||||||
|
current_app.logger.exception(
|
||||||
|
f"Error getting letter from bucket for notification: {letter.id} with reference: {letter.reference}", e)
|
||||||
|
|
||||||
return letter_pdfs
|
return letter_pdfs
|
||||||
|
|
||||||
|
|||||||
@@ -315,6 +315,48 @@ def test_get_key_and_size_of_letters_to_be_sent_to_print(notify_api, mocker, sam
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@freeze_time('2020-02-17 18:00:00')
|
||||||
|
def test_get_key_and_size_of_letters_to_be_sent_to_print_catches_exception(
|
||||||
|
notify_api, mocker, sample_letter_template
|
||||||
|
):
|
||||||
|
create_notification(
|
||||||
|
template=sample_letter_template,
|
||||||
|
status='created',
|
||||||
|
reference='ref0',
|
||||||
|
created_at=(datetime.now() - timedelta(hours=2))
|
||||||
|
)
|
||||||
|
|
||||||
|
create_notification(
|
||||||
|
template=sample_letter_template,
|
||||||
|
status='created',
|
||||||
|
reference='ref1',
|
||||||
|
created_at=(datetime.now() - timedelta(hours=3))
|
||||||
|
)
|
||||||
|
error_response = {
|
||||||
|
'Error': {
|
||||||
|
'Code': 'FileNotFound',
|
||||||
|
'Message': 'some error message from amazon',
|
||||||
|
'Type': 'Sender'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mock_head_s3_object = mocker.patch('app.celery.tasks.s3.head_s3_object', side_effect=[
|
||||||
|
{'ContentLength': 2},
|
||||||
|
ClientError(error_response, "File not found")
|
||||||
|
])
|
||||||
|
|
||||||
|
results = get_key_and_size_of_letters_to_be_sent_to_print(datetime.now() - timedelta(minutes=30))
|
||||||
|
|
||||||
|
assert mock_head_s3_object.call_count == 2
|
||||||
|
mock_head_s3_object.assert_has_calls(
|
||||||
|
[
|
||||||
|
call(current_app.config['LETTERS_PDF_BUCKET_NAME'], '2020-02-17/NOTIFY.REF1.D.2.C.C.20200217150000.PDF'),
|
||||||
|
call(current_app.config['LETTERS_PDF_BUCKET_NAME'], '2020-02-17/NOTIFY.REF0.D.2.C.C.20200217160000.PDF'),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
assert results == [{'Key': '2020-02-17/NOTIFY.REF1.D.2.C.C.20200217150000.PDF', 'Size': 2}]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('time_to_run_task', [
|
@pytest.mark.parametrize('time_to_run_task', [
|
||||||
"2020-02-17 18:00:00", # after 5:30pm
|
"2020-02-17 18:00:00", # after 5:30pm
|
||||||
"2020-02-18 02:00:00", # the next day after midnight, before 5:30pm we expect the same results
|
"2020-02-18 02:00:00", # the next day after midnight, before 5:30pm we expect the same results
|
||||||
|
|||||||
Reference in New Issue
Block a user