From 5196436645f21696155d78579c93069617783230 Mon Sep 17 00:00:00 2001 From: Adam Shimali Date: Fri, 29 Jan 2016 12:19:50 +0000 Subject: [PATCH] Better bucket name pending possible change to uuid for service primary key. Also small bugfix around file name and original file name --- app/main/uploader.py | 4 ++-- app/main/views/sms.py | 6 ++++-- app/notify_client/job_api_client.py | 2 +- tests/app/main/views/test_sms.py | 14 +++++++++----- tests/conftest.py | 13 ++++++------- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/app/main/uploader.py b/app/main/uploader.py index a1e88e216..3010c034e 100644 --- a/app/main/uploader.py +++ b/app/main/uploader.py @@ -6,7 +6,7 @@ from boto3 import resource def s3upload(service_id, filedata): upload_id = str(uuid.uuid4()) s3 = resource('s3') - bucket_name = 'service-{}-notify'.format(service_id) + bucket_name = 'service-{}-{}-notify'.format(service_id, upload_id) s3.create_bucket(Bucket=bucket_name) contents = '\n'.join(filedata['data']) key = s3.Object(bucket_name, upload_id) @@ -16,7 +16,7 @@ def s3upload(service_id, filedata): def s3download(service_id, upload_id): s3 = resource('s3') - bucket_name = 'service-{}-notify'.format(service_id) + bucket_name = 'service-{}-{}-notify'.format(service_id, upload_id) key = s3.Object(bucket_name, upload_id) contents = key.get()['Body'].read().decode('utf-8') return contents diff --git a/app/main/views/sms.py b/app/main/views/sms.py index b10bf0905..6f1f91bee 100644 --- a/app/main/views/sms.py +++ b/app/main/views/sms.py @@ -64,6 +64,7 @@ def send_sms(service_id): methods=['GET', 'POST']) @login_required def check_sms(service_id, upload_id): + if request.method == 'GET': contents = s3download(service_id, upload_id) upload_result = _get_numbers(contents) @@ -78,9 +79,10 @@ def check_sms(service_id, upload_id): service_id=service_id ) elif request.method == 'POST': - file_name = request.form['original_file_name'] - # TODO need a real template id picked from form + file_name = request.form['file_name'] + # TODO - template id should come from form but is not wired in yet. + # that will be done in another story template_id = 1 job_api_client.create_job(service_id, template_id, file_name) diff --git a/app/notify_client/job_api_client.py b/app/notify_client/job_api_client.py index 7c938cb70..a87d53346 100644 --- a/app/notify_client/job_api_client.py +++ b/app/notify_client/job_api_client.py @@ -21,7 +21,7 @@ class JobApiClient(BaseAPIClient): "service": service_id, "template": template_id, "original_file_name": file_name, - "bucket_name": "service-{}-notify".format(service_id), + "bucket_name": "service-{}-{}-notify".format(service_id, job_id), "file_name": "{}.csv".format(job_id) } diff --git a/tests/app/main/views/test_sms.py b/tests/app/main/views/test_sms.py index 401fffcba..8e7f3b4c5 100644 --- a/tests/app/main/views/test_sms.py +++ b/tests/app/main/views/test_sms.py @@ -126,16 +126,20 @@ def test_create_job_should_call_api(app_, job_data, mock_create_job): - service_id = job_data['service'] - template_id = job_data['template'] - upload_id = job_data['id'] - file_name = job_data['original_file_name'] + service_id = service_one['id'] + job_id = job_data['id'] + file_name = job_data['file_name'] + + # TODO - template id should come from form but is not wired in yet. + # that will be done in another story + template_id = 1 with app_.test_request_context(): with app_.test_client() as client: client.login(api_user_active) - url = url_for('main.check_sms', service_id=service_id, upload_id=upload_id, file_name=file_name) + url = url_for('main.check_sms', service_id=service_one['id'], upload_id=job_id, file_name=file_name) response = client.post(url, data=job_data, follow_redirects=True) assert response.status_code == 200 mock_create_job.assert_called_with(service_id, template_id, file_name) + assert job_data['bucket_name'] == "service-{}-{}-notify".format(service_id, job_id) diff --git a/tests/conftest.py b/tests/conftest.py index 87492a6a6..e6f8d5e55 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -425,15 +425,9 @@ def mock_check_verify_code_code_expired(mocker): def job_data(mocker): import uuid job_id = uuid.uuid4() - original_file_name = 'thisisatest.csv' - bucket_name = 'service-2-notify' - file_name = '{}.csv'.format(job_id) + file_name = 'thisisatest.csv' data = { 'id': str(job_id), - 'service': 1, - 'template': 1, - 'original_file_name': original_file_name, - 'bucket_name': bucket_name, 'file_name': file_name, } return data @@ -442,5 +436,10 @@ def job_data(mocker): @pytest.fixture(scope='function') def mock_create_job(mocker, job_data): def _create(service_id, template_id, file_name): + job_data['service'] = service_id + job_data['template'] = template_id + job_data['bucket_name'] = 'service-{}-{}-notify'.format(service_id, job_data['id']) + job_data['original_file_name'] = file_name + job_data['file_name'] = '{}.csv'.format(job_data['id']) return job_data return mocker.patch('app.job_api_client.create_job', side_effect=_create)