Merge pull request #2047 from alphagov/store-s3-metadata

Store info about files as S3 metadata
This commit is contained in:
Chris Hill-Scott
2018-04-27 16:43:52 +01:00
committed by GitHub
5 changed files with 90 additions and 10 deletions

View File

@@ -1,5 +1,5 @@
from collections import namedtuple
from unittest.mock import call
from unittest.mock import Mock, call
import pytest
@@ -10,6 +10,7 @@ from app.main.s3_client import (
delete_temp_files_created_by,
get_temp_truncated_filename,
persist_logo,
set_metadata_on_csv_upload,
upload_logo,
)
@@ -94,3 +95,21 @@ def test_does_not_delete_non_temp_file(client, mocker, fake_uuid):
assert mocked_delete_s3_object.called_with_args(filename)
assert str(error.value) == 'Not a temp file: {}'.format(filename)
def test_sets_metadata(client, mocker):
mocked_s3_object = Mock()
mocked_get_s3_object = mocker.patch(
'app.main.s3_client.get_csv_upload',
return_value=mocked_s3_object,
)
set_metadata_on_csv_upload('1234', '5678', foo='bar', baz=True)
mocked_get_s3_object.assert_called_once_with('1234', '5678')
mocked_s3_object.copy_from.assert_called_once_with(
CopySource='test-notifications-csv-upload/service-1234-notify/5678.csv',
Metadata={'baz': 'True', 'foo': 'bar'},
MetadataDirective='REPLACE',
ServerSideEncryption='AES256',
)

View File

@@ -565,6 +565,7 @@ def test_upload_valid_csv_shows_preview_and_table(
mock_get_service_template_with_placeholders,
mock_get_users_by_service,
mock_get_detailed_service_for_today,
mock_s3_set_metadata,
fake_uuid,
extra_args,
expected_link_in_first_row,
@@ -592,6 +593,14 @@ def test_upload_valid_csv_shows_preview_and_table(
**extra_args
)
mock_s3_set_metadata.assert_called_once_with(
SERVICE_ONE_ID,
fake_uuid,
notification_count=3,
template_id=fake_uuid,
valid=True,
)
assert page.h1.text.strip() == 'Preview of Two week reminder'
assert page.select_one('.sms-message-recipient').text.strip() == expected_recipient
assert page.select_one('.sms-message-wrapper').text.strip() == expected_message
@@ -702,6 +711,7 @@ def test_404_for_previewing_a_row_out_of_range(
mock_get_service_template_with_placeholders,
mock_get_users_by_service,
mock_get_detailed_service_for_today,
mock_s3_set_metadata,
fake_uuid,
row_index,
expected_status,
@@ -1464,6 +1474,7 @@ def test_upload_csvfile_with_valid_phone_shows_all_numbers(
mock_get_users_by_service,
mock_get_detailed_service_for_today,
mock_get_live_service,
mock_s3_set_metadata,
service_one,
fake_uuid,
mock_s3_upload,
@@ -1489,6 +1500,14 @@ def test_upload_csvfile_with_valid_phone_shows_all_numbers(
assert sess['file_uploads'][fake_uuid]['template_id'] == fake_uuid
assert sess['file_uploads'][fake_uuid]['valid'] is True
mock_s3_set_metadata.assert_called_once_with(
SERVICE_ONE_ID,
fake_uuid,
notification_count=53,
template_id=fake_uuid,
valid=True,
)
content = response.get_data(as_text=True)
assert response.status_code == 200
assert '07700 900701' in content
@@ -1543,6 +1562,7 @@ def test_test_message_can_only_be_sent_now(
mock_s3_download,
mock_get_users_by_service,
mock_get_detailed_service_for_today,
mock_s3_set_metadata,
fake_uuid
):
with logged_in_client.session_transaction() as session:
@@ -1957,6 +1977,7 @@ def test_check_messages_back_link(
mock_has_permissions,
mock_get_detailed_service_for_today,
mock_s3_download,
mock_s3_set_metadata,
fake_uuid,
mocker,
template_mock,
@@ -2138,6 +2159,7 @@ def test_check_messages_shows_trial_mode_error_for_letters(
mock_has_permissions,
mock_get_users_by_service,
mock_get_detailed_service_for_today,
mock_s3_set_metadata,
fake_uuid,
mocker,
service_mock,
@@ -2265,6 +2287,7 @@ def test_generate_test_letter_doesnt_block_in_trial_mode(
fake_uuid,
mock_get_users_by_service,
mock_get_detailed_service_for_today,
mock_s3_set_metadata,
):
mocker.patch('app.main.views.send.s3download', return_value="""
@@ -2712,6 +2735,7 @@ def test_reply_to_is_previewed_if_chosen(
mocker,
mock_get_service_email_template,
mock_s3_download,
mock_s3_set_metadata,
mock_get_users_by_service,
mock_get_detailed_service_for_today,
get_default_reply_to_email_address,
@@ -2760,6 +2784,7 @@ def test_sms_sender_is_previewed(
mocker,
mock_get_service_template,
mock_s3_download,
mock_s3_set_metadata,
mock_get_users_by_service,
mock_get_detailed_service_for_today,
get_default_sms_sender,