From b6401e48585931c92b3beaaa18054d1dfc9b0720 Mon Sep 17 00:00:00 2001 From: Ken Tsang Date: Wed, 28 Feb 2018 10:54:52 +0000 Subject: [PATCH] Fix boto mocks in tests - was getting KeyError: 'Error' test failures due to the side_effect not generating enough information to be used in the ClientError class, this PR adds missing information. --- tests/app/celery/test_letters_pdf_tasks.py | 10 +++++++++- tests/app/celery/test_tasks.py | 9 ++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/app/celery/test_letters_pdf_tasks.py b/tests/app/celery/test_letters_pdf_tasks.py index 51abc63e1..b9f757311 100644 --- a/tests/app/celery/test_letters_pdf_tasks.py +++ b/tests/app/celery/test_letters_pdf_tasks.py @@ -150,7 +150,15 @@ def test_create_letters_pdf_handles_request_errors(mocker, sample_letter_notific def test_create_letters_pdf_handles_s3_errors(mocker, sample_letter_notification): mocker.patch('app.celery.letters_pdf_tasks.get_letters_pdf', return_value=(b'\x00\x01', 1)) - mock_s3 = mocker.patch('app.letters.utils.s3upload', side_effect=ClientError({}, 'operation_name')) + error_response = { + 'Error': { + 'Code': 'InvalidParameterValue', + 'Message': 'some error message from amazon', + 'Type': 'Sender' + } + } + + mock_s3 = mocker.patch('app.letters.utils.s3upload', side_effect=ClientError(error_response, 'operation_name')) mock_retry = mocker.patch('app.celery.letters_pdf_tasks.create_letters_pdf.retry') create_letters_pdf(sample_letter_notification.id) diff --git a/tests/app/celery/test_tasks.py b/tests/app/celery/test_tasks.py index 1f0f3407e..a3a5ec3f0 100644 --- a/tests/app/celery/test_tasks.py +++ b/tests/app/celery/test_tasks.py @@ -1251,9 +1251,16 @@ def test_build_dvla_file_retries_if_all_notifications_are_not_created(sample_let def test_build_dvla_file_retries_if_s3_err(sample_letter_template, mocker): job = create_job(sample_letter_template, notification_count=1) create_notification(job.template, job=job) + error_response = { + 'Error': { + 'Code': 'InvalidParameterValue', + 'Message': 'some error message from amazon', + 'Type': 'Sender' + } + } mocker.patch('app.celery.tasks.LetterDVLATemplate', return_value='dvla|string') - mocker.patch('app.celery.tasks.s3upload', side_effect=ClientError({}, 'operation_name')) + mocker.patch('app.celery.tasks.s3upload', side_effect=ClientError(error_response, 'operation_name')) retry_mock = mocker.patch('app.celery.tasks.build_dvla_file.retry', side_effect=Retry) with pytest.raises(Retry):