mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-01 15:46:07 -05:00
Add new tasks for sanitising precompiled letters
Added a task, `sanitise-letter`, that will be called from antivirus when a letter has passed virus scan. This calls a new task in template-preview which will sanitise the PDF. A second new task, `process-sanitised-letter`, will be called from the template preview task and deals with updating the notification and moving it to the relevant bucket.
This commit is contained in:
@@ -12,6 +12,7 @@ from app.letters.utils import (
|
||||
get_letter_pdf_filename,
|
||||
get_letter_pdf_and_metadata,
|
||||
letter_print_day,
|
||||
move_sanitised_letter_to_test_or_live_pdf_bucket,
|
||||
upload_letter_pdf,
|
||||
ScanErrorType, move_failed_pdf, get_folder_name
|
||||
)
|
||||
@@ -338,6 +339,52 @@ def test_get_folder_name_returns_empty_string_for_test_letter():
|
||||
assert '' == get_folder_name(datetime.utcnow(), dont_use_sending_date=True)
|
||||
|
||||
|
||||
@mock_s3
|
||||
def test_move_sanitised_letter_to_live_pdf_bucket(notify_api, mocker):
|
||||
filename = 'my_letter.pdf'
|
||||
source_bucket_name = current_app.config['LETTER_SANITISE_BUCKET_NAME']
|
||||
target_bucket_name = current_app.config['LETTERS_PDF_BUCKET_NAME']
|
||||
|
||||
conn = boto3.resource('s3', region_name='eu-west-1')
|
||||
source_bucket = conn.create_bucket(Bucket=source_bucket_name)
|
||||
target_bucket = conn.create_bucket(Bucket=target_bucket_name)
|
||||
|
||||
s3 = boto3.client('s3', region_name='eu-west-1')
|
||||
s3.put_object(Bucket=source_bucket_name, Key=filename, Body=b'pdf_content')
|
||||
|
||||
move_sanitised_letter_to_test_or_live_pdf_bucket(
|
||||
filename=filename,
|
||||
is_test_letter=False,
|
||||
created_at=datetime.utcnow()
|
||||
)
|
||||
|
||||
assert not [x for x in source_bucket.objects.all()]
|
||||
assert len([x for x in target_bucket.objects.all()]) == 1
|
||||
|
||||
|
||||
@mock_s3
|
||||
def test_move_sanitised_letter_to_test_pdf_bucket(notify_api, mocker):
|
||||
filename = 'my_letter.pdf'
|
||||
source_bucket_name = current_app.config['LETTER_SANITISE_BUCKET_NAME']
|
||||
target_bucket_name = current_app.config['TEST_LETTERS_BUCKET_NAME']
|
||||
|
||||
conn = boto3.resource('s3', region_name='eu-west-1')
|
||||
source_bucket = conn.create_bucket(Bucket=source_bucket_name)
|
||||
target_bucket = conn.create_bucket(Bucket=target_bucket_name)
|
||||
|
||||
s3 = boto3.client('s3', region_name='eu-west-1')
|
||||
s3.put_object(Bucket=source_bucket_name, Key=filename, Body=b'pdf_content')
|
||||
|
||||
move_sanitised_letter_to_test_or_live_pdf_bucket(
|
||||
filename=filename,
|
||||
is_test_letter=True,
|
||||
created_at=datetime.utcnow()
|
||||
)
|
||||
|
||||
assert not [x for x in source_bucket.objects.all()]
|
||||
assert len([x for x in target_bucket.objects.all()]) == 1
|
||||
|
||||
|
||||
@freeze_time('2017-07-07 20:00:00')
|
||||
def test_letter_print_day_returns_today_if_letter_was_printed_after_1730_yesterday():
|
||||
created_at = datetime(2017, 7, 6, 17, 30)
|
||||
|
||||
Reference in New Issue
Block a user