def test_move_failed_pdf_scan_failed(notify_api): filename = "test.pdf" bucket_name = current_app.config["LETTERS_SCAN_BUCKET_NAME"] conn = boto3.resource("s3", region_name="eu-west-1") bucket = conn.create_bucket(Bucket=bucket_name) s3 = boto3.client("s3", region_name="eu-west-1") s3.put_object(Bucket=bucket_name, Key=filename, Body=b"pdf_content") move_failed_pdf(filename, ScanErrorType.FAILURE) assert "FAILURE/" + filename in [o.key for o in bucket.objects.all()] assert filename not in [o.key for o in bucket.objects.all()]
def test_move_failed_pdf_scan_failed(notify_api): filename = 'test.pdf' bucket_name = current_app.config['LETTERS_SCAN_BUCKET_NAME'] conn = boto3.resource('s3', region_name='eu-west-1') bucket = conn.create_bucket(Bucket=bucket_name) s3 = boto3.client('s3', region_name='eu-west-1') s3.put_object(Bucket=bucket_name, Key=filename, Body=b'pdf_content') move_failed_pdf(filename, ScanErrorType.FAILURE) assert 'FAILURE/' + filename in [o.key for o in bucket.objects.all()] assert filename not in [o.key for o in bucket.objects.all()]
def process_virus_scan_error(filename): move_failed_pdf(filename, ScanErrorType.ERROR) reference = get_reference_from_filename(filename) notification = dao_get_notification_by_reference(reference) updated_count = update_letter_pdf_status(reference, NOTIFICATION_TECHNICAL_FAILURE) if updated_count != 1: raise Exception( "There should only be one letter notification for each reference. Found {} notifications" .format(updated_count)) raise VirusScanError('notification id {} Virus scan error: {}'.format( notification.id, filename))
def test_move_failed_pdf_error(notify_api, aws_credentials): filename = 'test.pdf' bucket_name = current_app.config['LETTERS_SCAN_BUCKET_NAME'] conn = boto3.resource('s3', region_name='us-east-1') bucket = conn.create_bucket(Bucket=bucket_name) s3 = boto3.client('s3', region_name='us-east-1') s3.put_object(Bucket=bucket_name, Key=filename, Body=b'pdf_content') move_failed_pdf(filename, ScanErrorType.ERROR) assert 'ERROR/' + filename in [o.key for o in bucket.objects.all()] assert filename not in [o.key for o in bucket.objects.all()]
def process_virus_scan_failed(filename): move_failed_pdf(filename, ScanErrorType.FAILURE) reference = get_reference_from_filename(filename) notification = dao_get_notification_by_reference(reference) updated_count = update_letter_pdf_status(reference, NOTIFICATION_VIRUS_SCAN_FAILED, billable_units=0) if updated_count != 1: raise Exception( "There should only be one letter notification for each reference. Found {} notifications".format( updated_count ) ) error = VirusScanError('notification id {} Virus scan failed: {}'.format(notification.id, filename)) current_app.logger.exception(error) raise error