mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-06-04 21:40:23 -04:00
148 lines
6.7 KiB
Python
148 lines
6.7 KiB
Python
from io import BytesIO
|
|
from flask import url_for
|
|
|
|
import moto
|
|
|
|
|
|
def test_upload_empty_csvfile_returns_to_upload_page(app_,
|
|
api_user_active,
|
|
mock_get_user,
|
|
mock_get_service_templates,
|
|
mock_check_verify_code):
|
|
with app_.test_request_context():
|
|
with app_.test_client() as client:
|
|
client.login(api_user_active)
|
|
upload_data = {'file': (BytesIO(''.encode('utf-8')), 'emtpy.csv')}
|
|
response = client.post(url_for('main.send_sms', service_id=123),
|
|
data=upload_data, follow_redirects=True)
|
|
|
|
assert response.status_code == 200
|
|
content = response.get_data(as_text=True)
|
|
assert 'The file emtpy.csv contained no data' in content
|
|
|
|
|
|
@moto.mock_s3
|
|
def test_upload_csvfile_with_invalid_phone_shows_check_page_with_errors(app_,
|
|
mocker,
|
|
api_user_active,
|
|
mock_get_user,
|
|
mock_get_user_by_email,
|
|
mock_login):
|
|
|
|
contents = 'phone\n+44 123\n+44 456'
|
|
file_data = (BytesIO(contents.encode('utf-8')), 'invalid.csv')
|
|
|
|
with app_.test_request_context():
|
|
with app_.test_client() as client:
|
|
client.login(api_user_active)
|
|
upload_data = {'file': file_data}
|
|
response = client.post(url_for('main.send_sms', service_id=123),
|
|
data=upload_data,
|
|
follow_redirects=True)
|
|
assert response.status_code == 200
|
|
content = response.get_data(as_text=True)
|
|
assert 'The following numbers are invalid' in content
|
|
assert '+44 123' in content
|
|
assert '+44 456' in content
|
|
assert 'Go back and resolve errors' in content
|
|
|
|
|
|
@moto.mock_s3
|
|
def test_upload_csvfile_with_valid_phone_shows_first3_and_last3_numbers(app_,
|
|
mocker,
|
|
api_user_active,
|
|
mock_get_user,
|
|
mock_get_user_by_email,
|
|
mock_login):
|
|
contents = 'phone\n+44 7700 900981\n+44 7700 900982\n+44 7700 900983\n+44 7700 900984\n+44 7700 900985\n+44 7700 900986\n+44 7700 900987\n+44 7700 900988\n+44 7700 900989' # noqa
|
|
|
|
file_data = (BytesIO(contents.encode('utf-8')), 'valid.csv')
|
|
|
|
with app_.test_request_context():
|
|
with app_.test_client() as client:
|
|
client.login(api_user_active)
|
|
upload_data = {'file': file_data}
|
|
response = client.post(url_for('main.send_sms', service_id=123),
|
|
data=upload_data,
|
|
follow_redirects=True)
|
|
|
|
content = response.get_data(as_text=True)
|
|
|
|
assert response.status_code == 200
|
|
assert 'Check and confirm' in content
|
|
assert 'First three message in file' in content
|
|
assert 'Last three messages in file' in content
|
|
assert '+44 7700 900981' in content
|
|
assert '+44 7700 900982' in content
|
|
assert '+44 7700 900983' in content
|
|
assert '+44 7700 900984' not in content
|
|
assert '+44 7700 900985' not in content
|
|
assert '+44 7700 900986' not in content
|
|
assert '+44 7700 900987' in content
|
|
assert '+44 7700 900988' in content
|
|
assert '+44 7700 900989' in content
|
|
|
|
|
|
@moto.mock_s3
|
|
def test_upload_csvfile_with_valid_phone_shows_all_if_6_or_less_numbers(app_,
|
|
mocker,
|
|
api_user_active,
|
|
mock_get_user,
|
|
mock_get_user_by_email,
|
|
mock_login):
|
|
|
|
contents = 'phone\n+44 7700 900981\n+44 7700 900982\n+44 7700 900983\n+44 7700 900984\n+44 7700 900985\n+44 7700 900986' # noqa
|
|
|
|
file_data = (BytesIO(contents.encode('utf-8')), 'valid.csv')
|
|
|
|
with app_.test_request_context():
|
|
with app_.test_client() as client:
|
|
client.login(api_user_active)
|
|
upload_data = {'file': file_data}
|
|
response = client.post(url_for('main.send_sms', service_id=123),
|
|
data=upload_data,
|
|
follow_redirects=True)
|
|
|
|
content = response.get_data(as_text=True)
|
|
|
|
assert response.status_code == 200
|
|
assert 'Check and confirm' in content
|
|
assert 'All messages in file' in content
|
|
assert '+44 7700 900981' in content
|
|
assert '+44 7700 900982' in content
|
|
assert '+44 7700 900983' in content
|
|
assert '+44 7700 900984' in content
|
|
assert '+44 7700 900985' in content
|
|
assert '+44 7700 900986' in content
|
|
|
|
|
|
@moto.mock_s3
|
|
def test_create_job_should_call_api(app_,
|
|
service_one,
|
|
api_user_active,
|
|
mock_get_user,
|
|
mock_get_user_by_email,
|
|
mock_login,
|
|
job_data,
|
|
mock_create_job,
|
|
mock_get_job):
|
|
|
|
import uuid
|
|
service_id = service_one['id']
|
|
job_id = str(uuid.uuid4())
|
|
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_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(job_id, service_id, template_id, file_name)
|
|
assert job_data['bucket_name'] == "service-{}-{}-notify".format(service_id, job_id)
|