From cb7b42c2cca2b3905d509fc9291e4a7e4914867b Mon Sep 17 00:00:00 2001 From: stvnrlly Date: Wed, 7 Dec 2022 12:09:19 -0500 Subject: [PATCH] remove create-fake-letter-response-file --- app/celery/research_mode_tasks.py | 40 ------- app/celery/tasks.py | 8 +- app/v2/notifications/post_notifications.py | 7 -- tests/app/celery/test_research_mode_tasks.py | 112 ------------------- 4 files changed, 1 insertion(+), 166 deletions(-) diff --git a/app/celery/research_mode_tasks.py b/app/celery/research_mode_tasks.py index 4477b3994..8d4e802c4 100644 --- a/app/celery/research_mode_tasks.py +++ b/app/celery/research_mode_tasks.py @@ -118,46 +118,6 @@ def firetext_callback(notification_id, to): } -@notify_celery.task(bind=True, name="create-fake-letter-response-file", max_retries=5, default_retry_delay=300) -def create_fake_letter_response_file(self, reference): - now = datetime.utcnow() - dvla_response_data = '{}|Sent|0|Sorted'.format(reference) - - # try and find a filename that hasn't been taken yet - from a random time within the last 30 seconds - for i in sorted(range(30), key=lambda _: random.random()): # nosec B311 - not security related - upload_file_name = 'NOTIFY-{}-RSP.TXT'.format((now - timedelta(seconds=i)).strftime('%Y%m%d%H%M%S')) - if not file_exists(current_app.config['DVLA_RESPONSE_BUCKET_NAME'], upload_file_name): - break - else: - raise ValueError( - 'cant create fake letter response file for {} - too many files for that time already exist on s3'.format( - reference - ) - ) - - s3upload( - filedata=dvla_response_data, - region=current_app.config['AWS_REGION'], - bucket_name=current_app.config['DVLA_RESPONSE_BUCKET_NAME'], - file_location=upload_file_name - ) - current_app.logger.info("Fake DVLA response file {}, content [{}], uploaded to {}, created at {}".format( - upload_file_name, dvla_response_data, current_app.config['DVLA_RESPONSE_BUCKET_NAME'], now)) - - # on development we can't trigger SNS callbacks so we need to manually hit the DVLA callback endpoint - if current_app.config['NOTIFY_ENVIRONMENT'] == 'development': - make_request('letter', 'dvla', _fake_sns_s3_callback(upload_file_name), None) - - -def _fake_sns_s3_callback(filename): - message_contents = '{"Records":[{"s3":{"object":{"key":"%s"}}}]}' % (filename) # noqa - return json.dumps({ - "Type": "Notification", - "MessageId": "some-message-id", - "Message": message_contents - }) - - def ses_notification_callback(reference): ses_message_body = { 'delivery': { diff --git a/app/celery/tasks.py b/app/celery/tasks.py index 2880a6726..937596d03 100644 --- a/app/celery/tasks.py +++ b/app/celery/tasks.py @@ -385,13 +385,7 @@ def save_letter( status=status ) - if current_app.config['NOTIFY_ENVIRONMENT'] in ['preview', 'development']: - research_mode_tasks.create_fake_letter_response_file.apply_async( - (saved_notification.reference,), - queue=QueueNames.RESEARCH_MODE - ) - else: - update_notification_status_by_reference(saved_notification.reference, 'delivered') + update_notification_status_by_reference(saved_notification.reference, 'delivered') current_app.logger.debug("Letter {} created at {}".format(saved_notification.id, saved_notification.created_at)) except SQLAlchemyError as e: diff --git a/app/v2/notifications/post_notifications.py b/app/v2/notifications/post_notifications.py index f47fb7e22..c06635dcb 100644 --- a/app/v2/notifications/post_notifications.py +++ b/app/v2/notifications/post_notifications.py @@ -15,7 +15,6 @@ from app import ( encryption, notify_celery, ) -from app.celery.research_mode_tasks import create_fake_letter_response_file from app.celery.tasks import save_api_email, save_api_sms from app.clients.document_download import DocumentDownloadError from app.config import QueueNames, TaskNames @@ -381,12 +380,6 @@ def process_letter_notification( postage=postage ) - if test_key and current_app.config['NOTIFY_ENVIRONMENT'] in ['preview', 'development']: - create_fake_letter_response_file.apply_async( - (notification.reference,), - queue=queue - ) - resp = create_response_for_post_notification( notification_id=notification.id, client_reference=notification.client_reference, diff --git a/tests/app/celery/test_research_mode_tasks.py b/tests/app/celery/test_research_mode_tasks.py index 7472917d5..c8fa93b48 100644 --- a/tests/app/celery/test_research_mode_tasks.py +++ b/tests/app/celery/test_research_mode_tasks.py @@ -8,7 +8,6 @@ from freezegun import freeze_time from app.celery.research_mode_tasks import ( HTTPError, - create_fake_letter_response_file, firetext_callback, mmg_callback, send_email_response, @@ -131,114 +130,3 @@ def test_failure_firetext_callback(phone_number): 'time': '2016-03-10 14:17:00', 'reference': '1234' } - - -@freeze_time("2018-01-25 14:00:30") -@pytest.mark.skip(reason="Skipping letter-related functionality for now") -def test_create_fake_letter_response_file_uploads_response_file_s3( - notify_api, mocker): - mocker.patch('app.celery.research_mode_tasks.file_exists', return_value=False) - mock_s3upload = mocker.patch('app.celery.research_mode_tasks.s3upload') - - with requests_mock.Mocker() as request_mock: - request_mock.post( - 'http://localhost:6011/notifications/letter/dvla', - content=b'{}', - status_code=200 - ) - - create_fake_letter_response_file('random-ref') - - mock_s3upload.assert_called_once_with( - filedata='random-ref|Sent|0|Sorted', - region=current_app.config['AWS_REGION'], - bucket_name=current_app.config['DVLA_RESPONSE_BUCKET_NAME'], - file_location=dvla_response_file_matcher - ) - - -@freeze_time("2018-01-25 14:00:30") -@pytest.mark.skip(reason="Skipping letter-related functionality for now") -def test_create_fake_letter_response_file_calls_dvla_callback_on_development( - notify_api, mocker): - mocker.patch('app.celery.research_mode_tasks.file_exists', return_value=False) - mocker.patch('app.celery.research_mode_tasks.s3upload') - - with set_config_values(notify_api, { - 'NOTIFY_ENVIRONMENT': 'development' - }): - with requests_mock.Mocker() as request_mock: - request_mock.post( - 'http://localhost:6011/notifications/letter/dvla', - content=b'{}', - status_code=200 - ) - - create_fake_letter_response_file('random-ref') - - assert request_mock.last_request.json() == { - "Type": "Notification", - "MessageId": "some-message-id", - "Message": ANY - } - assert json.loads(request_mock.last_request.json()['Message']) == { - "Records": [ - { - "s3": { - "object": { - "key": dvla_response_file_matcher - } - } - } - ] - } - - -@freeze_time("2018-01-25 14:00:30") -@pytest.mark.skip(reason="Skipping letter-related functionality for now") -def test_create_fake_letter_response_file_does_not_call_dvla_callback_on_preview( - notify_api, mocker): - mocker.patch('app.celery.research_mode_tasks.file_exists', return_value=False) - mocker.patch('app.celery.research_mode_tasks.s3upload') - - with set_config_values(notify_api, { - 'NOTIFY_ENVIRONMENT': 'preview' - }): - with requests_mock.Mocker() as request_mock: - create_fake_letter_response_file('random-ref') - - assert request_mock.last_request is None - - -@freeze_time("2018-01-25 14:00:30") -@pytest.mark.skip(reason="Skipping letter-related functionality for now") -def test_create_fake_letter_response_file_tries_to_create_files_with_other_filenames(notify_api, mocker): - mock_file_exists = mocker.patch('app.celery.research_mode_tasks.file_exists', side_effect=[True, True, False]) - mock_s3upload = mocker.patch('app.celery.research_mode_tasks.s3upload') - - create_fake_letter_response_file('random-ref') - - assert mock_file_exists.mock_calls == [ - call('test.notify.com-ftp', dvla_response_file_matcher), - call('test.notify.com-ftp', dvla_response_file_matcher), - call('test.notify.com-ftp', dvla_response_file_matcher), - ] - mock_s3upload.assert_called_once_with( - filedata=ANY, - region=ANY, - bucket_name=ANY, - file_location=dvla_response_file_matcher - ) - - -@freeze_time("2018-01-25 14:00:30") -@pytest.mark.skip(reason="Skipping letter-related functionality for now") -def test_create_fake_letter_response_file_gives_up_after_thirty_times(notify_api, mocker): - mock_file_exists = mocker.patch('app.celery.research_mode_tasks.file_exists', return_value=True) - mock_s3upload = mocker.patch('app.celery.research_mode_tasks.s3upload') - - with pytest.raises(ValueError): - create_fake_letter_response_file('random-ref') - - assert len(mock_file_exists.mock_calls) == 30 - assert not mock_s3upload.called