mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 18:01:08 -05:00
Fix assertions when we catch an error in the tests
Code that is within a `with Python.raises(...)` context manager but comes after the line that raises the exception doesn't get evaluated. We had some assertions that we never being tested because of this, so this ensures that they will always get run and fixes them where necessary.
This commit is contained in:
@@ -182,7 +182,7 @@ def test_update_letter_notifications_to_error_updates_based_on_notification_refe
|
||||
with freeze_time(dt):
|
||||
with pytest.raises(NotificationTechnicalFailureException) as e:
|
||||
update_letter_notifications_to_error([first.reference])
|
||||
assert first.reference in e.value
|
||||
assert first.reference in str(e.value)
|
||||
|
||||
assert first.status == NOTIFICATION_TECHNICAL_FAILURE
|
||||
assert first.sent_by is None
|
||||
|
||||
@@ -681,7 +681,7 @@ def test_process_letter_task_check_virus_scan_error(sample_letter_notification,
|
||||
with pytest.raises(VirusScanError) as e:
|
||||
process_virus_scan_error(filename)
|
||||
|
||||
assert "Virus scan error:" in str(e)
|
||||
assert "Virus scan error:" in str(e.value)
|
||||
mock_move_failed_pdf.assert_called_once_with(filename, ScanErrorType.ERROR)
|
||||
assert sample_letter_notification.status == NOTIFICATION_TECHNICAL_FAILURE
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@ def test_update_status_of_notifications_after_timeout(notify_api, sample_templat
|
||||
seconds=current_app.config.get('SENDING_NOTIFICATIONS_TIMEOUT_PERIOD') + 10))
|
||||
with pytest.raises(NotificationTechnicalFailureException) as e:
|
||||
timeout_notifications()
|
||||
assert str(not2.id) in e.value
|
||||
assert str(not2.id) in str(e.value)
|
||||
assert not1.status == 'temporary-failure'
|
||||
assert not2.status == 'technical-failure'
|
||||
assert not3.status == 'temporary-failure'
|
||||
|
||||
@@ -65,7 +65,7 @@ def test_should_go_into_technical_error_if_exceeds_retries_on_deliver_sms_task(s
|
||||
|
||||
with pytest.raises(NotificationTechnicalFailureException) as e:
|
||||
deliver_sms(sample_notification.id)
|
||||
assert sample_notification.id in e.value
|
||||
assert str(sample_notification.id) in str(e.value)
|
||||
|
||||
provider_tasks.deliver_sms.retry.assert_called_with(queue="retry-tasks", countdown=0)
|
||||
|
||||
@@ -78,7 +78,7 @@ def test_should_go_into_technical_error_if_exceeds_retries_on_deliver_email_task
|
||||
|
||||
with pytest.raises(NotificationTechnicalFailureException) as e:
|
||||
deliver_email(sample_notification.id)
|
||||
assert sample_notification.id in e.value
|
||||
assert str(sample_notification.id) in str(e.value)
|
||||
|
||||
provider_tasks.deliver_email.retry.assert_called_with(queue="retry-tasks")
|
||||
assert sample_notification.status == 'technical-failure'
|
||||
|
||||
@@ -293,17 +293,21 @@ def test_dao_add_user_to_service_ignores_folders_which_do_not_exist_when_setting
|
||||
|
||||
|
||||
def test_dao_add_user_to_service_raises_error_if_adding_folder_permissions_for_a_different_service(
|
||||
sample_user,
|
||||
sample_service,
|
||||
):
|
||||
user = create_user()
|
||||
other_service = create_service(service_name='other service')
|
||||
other_service_folder = create_template_folder(other_service)
|
||||
folder_permissions = [str(other_service_folder.id)]
|
||||
|
||||
assert ServiceUser.query.count() == 2
|
||||
|
||||
with pytest.raises(IntegrityError) as e:
|
||||
dao_add_user_to_service(sample_service, sample_user, folder_permissions=folder_permissions)
|
||||
assert 'insert or update on table "user_folder_permissions" violates foreign key constraint' in str(e.value)
|
||||
assert ServiceUser.query.count() == 0
|
||||
dao_add_user_to_service(sample_service, user, folder_permissions=folder_permissions)
|
||||
|
||||
db.session.rollback()
|
||||
assert 'insert or update on table "user_folder_permissions" violates foreign key constraint' in str(e.value)
|
||||
assert ServiceUser.query.count() == 2
|
||||
|
||||
|
||||
def test_should_remove_user_from_service(notify_db_session):
|
||||
|
||||
@@ -139,7 +139,7 @@ def test_should_not_send_email_message_when_service_is_inactive_notifcation_is_i
|
||||
|
||||
with pytest.raises(NotificationTechnicalFailureException) as e:
|
||||
send_to_providers.send_email_to_provider(sample_notification)
|
||||
assert sample_notification.id in e.value
|
||||
assert str(sample_notification.id) in str(e.value)
|
||||
send_mock.assert_not_called()
|
||||
assert Notification.query.get(sample_notification.id).status == 'technical-failure'
|
||||
|
||||
@@ -152,7 +152,7 @@ def test_should_not_send_sms_message_when_service_is_inactive_notifcation_is_in_
|
||||
|
||||
with pytest.raises(NotificationTechnicalFailureException) as e:
|
||||
send_to_providers.send_sms_to_provider(sample_notification)
|
||||
assert sample_notification.id in e.value
|
||||
assert str(sample_notification.id) in str(e.value)
|
||||
send_mock.assert_not_called()
|
||||
assert Notification.query.get(sample_notification.id).status == 'technical-failure'
|
||||
|
||||
|
||||
@@ -287,7 +287,7 @@ def test_send_notification_to_queue_throws_exception_deletes_notification(sample
|
||||
mocked = mocker.patch('app.celery.provider_tasks.deliver_sms.apply_async', side_effect=Boto3Error("EXPECTED"))
|
||||
with pytest.raises(Boto3Error):
|
||||
send_notification_to_queue(sample_notification, False)
|
||||
mocked.assert_called_once_with([(str(sample_notification.id))], queue='send-sms')
|
||||
mocked.assert_called_once_with([(str(sample_notification.id))], queue='send-sms-tasks')
|
||||
|
||||
assert Notification.query.count() == 0
|
||||
assert NotificationHistory.query.count() == 0
|
||||
|
||||
@@ -97,8 +97,8 @@ def test_validate_date_range_is_within_a_financial_year(start_date, end_date):
|
||||
def test_validate_date_range_is_within_a_financial_year_raises(start_date, end_date):
|
||||
with pytest.raises(expected_exception=InvalidRequest) as e:
|
||||
validate_date_range_is_within_a_financial_year(start_date, end_date)
|
||||
assert e.message == 'Date must be in a single financial year.'
|
||||
assert e.code == 400
|
||||
assert e.value.message == 'Date must be in a single financial year.'
|
||||
assert e.value.status_code == 400
|
||||
|
||||
|
||||
def test_validate_date_is_within_a_financial_year_raises_validation_error():
|
||||
@@ -107,8 +107,8 @@ def test_validate_date_is_within_a_financial_year_raises_validation_error():
|
||||
|
||||
with pytest.raises(expected_exception=InvalidRequest) as e:
|
||||
validate_date_range_is_within_a_financial_year(start_date, end_date)
|
||||
assert e.message == 'Start date must be before end date'
|
||||
assert e.code == 400
|
||||
assert e.value.message == 'Start date must be before end date'
|
||||
assert e.value.status_code == 400
|
||||
|
||||
|
||||
@pytest.mark.parametrize('start_date, end_date',
|
||||
@@ -116,9 +116,9 @@ def test_validate_date_is_within_a_financial_year_raises_validation_error():
|
||||
('2019-07-01', 'not-date')])
|
||||
def test_validate_date_is_within_a_financial_year_when_input_is_not_a_date(start_date, end_date):
|
||||
with pytest.raises(expected_exception=InvalidRequest) as e:
|
||||
assert validate_date_range_is_within_a_financial_year(start_date, end_date)
|
||||
assert e.message == 'Input must be a date in the format: YYYY-MM-DD'
|
||||
assert e.code == 400
|
||||
validate_date_range_is_within_a_financial_year(start_date, end_date)
|
||||
assert e.value.message == 'Input must be a date in the format: YYYY-MM-DD'
|
||||
assert e.value.status_code == 400
|
||||
|
||||
|
||||
def test_get_usage_for_all_services(notify_db_session, admin_request):
|
||||
|
||||
Reference in New Issue
Block a user