mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-18 13:39:41 -04:00
Download CSV option now available.
App is updated to use the rebased db.
This commit is contained in:
@@ -45,18 +45,18 @@ def test_should_show_api_keys_page(app_,
|
||||
mock_get_user_by_email,
|
||||
mock_get_api_keys,
|
||||
mock_get_service,
|
||||
mock_has_permissions):
|
||||
mock_has_permissions,
|
||||
fake_uuid):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
service_id = str(uuid.uuid4())
|
||||
response = client.get(url_for('main.api_keys', service_id=service_id))
|
||||
response = client.get(url_for('main.api_keys', service_id=fake_uuid))
|
||||
|
||||
assert response.status_code == 200
|
||||
assert 'some key name' in response.get_data(as_text=True)
|
||||
assert 'another key name' in response.get_data(as_text=True)
|
||||
assert 'Revoked Thursday 01 January 1970 at 00:00' in response.get_data(as_text=True)
|
||||
mock_get_api_keys.assert_called_once_with(service_id=service_id)
|
||||
mock_get_api_keys.assert_called_once_with(service_id=fake_uuid)
|
||||
|
||||
|
||||
def test_should_show_name_api_key_page(app_,
|
||||
@@ -104,16 +104,16 @@ def test_should_show_confirm_revoke_api_key(app_,
|
||||
mock_get_user_by_email,
|
||||
mock_get_api_keys,
|
||||
mock_get_service,
|
||||
mock_has_permissions):
|
||||
mock_has_permissions,
|
||||
fake_uuid):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
service_id = str(uuid.uuid4())
|
||||
response = client.get(url_for('main.revoke_api_key', service_id=service_id, key_id=321))
|
||||
response = client.get(url_for('main.revoke_api_key', service_id=fake_uuid, key_id=fake_uuid))
|
||||
|
||||
assert response.status_code == 200
|
||||
assert 'some key name' in response.get_data(as_text=True)
|
||||
mock_get_api_keys.assert_called_once_with(service_id=service_id, key_id=321)
|
||||
mock_get_api_keys.assert_called_once_with(service_id=fake_uuid, key_id=fake_uuid)
|
||||
|
||||
|
||||
def test_should_redirect_after_revoking_api_key(app_,
|
||||
@@ -124,17 +124,17 @@ def test_should_redirect_after_revoking_api_key(app_,
|
||||
mock_revoke_api_key,
|
||||
mock_get_api_keys,
|
||||
mock_get_service,
|
||||
mock_has_permissions):
|
||||
mock_has_permissions,
|
||||
fake_uuid):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
service_id = str(uuid.uuid4())
|
||||
response = client.post(url_for('main.revoke_api_key', service_id=service_id, key_id=321))
|
||||
response = client.post(url_for('main.revoke_api_key', service_id=fake_uuid, key_id=fake_uuid))
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for('.api_keys', service_id=service_id, _external=True)
|
||||
mock_revoke_api_key.assert_called_once_with(service_id=service_id, key_id=321)
|
||||
mock_get_api_keys.assert_called_once_with(service_id=service_id, key_id=321)
|
||||
assert response.location == url_for('.api_keys', service_id=fake_uuid, _external=True)
|
||||
mock_revoke_api_key.assert_called_once_with(service_id=fake_uuid, key_id=fake_uuid)
|
||||
mock_get_api_keys.assert_called_once_with(service_id=fake_uuid, key_id=fake_uuid)
|
||||
|
||||
|
||||
def test_route_permissions(mocker,
|
||||
|
||||
@@ -233,7 +233,14 @@ def test_menu_all_services_for_platform_admin_user(mocker,
|
||||
assert url_for('main.service_settings', service_id=service_one['id']) in page
|
||||
assert url_for('main.view_notifications', service_id=service_one['id']) in page
|
||||
assert url_for('main.api_keys', service_id=service_one['id']) not in page
|
||||
assert url_for('main.edit_service_template', service_id=service_one['id'], template_id=1) in page
|
||||
|
||||
# Should this be here??
|
||||
# template_json = mock_get_service_templates(service_one['id'])['data'][0]
|
||||
|
||||
# assert url_for(
|
||||
# 'main.edit_service_template',
|
||||
# service_id=service_one['id'],
|
||||
# template_id=template_json['id']) in page
|
||||
|
||||
|
||||
def test_route_for_service_permissions(mocker,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from flask import url_for
|
||||
from bs4 import BeautifulSoup
|
||||
import json
|
||||
from app.utils import generate_notifications_csv
|
||||
|
||||
|
||||
def test_should_return_list_of_all_jobs(app_,
|
||||
@@ -179,3 +180,26 @@ def test_should_show_notifications_for_a_service_with_next_previous(app_,
|
||||
assert url_for('main.view_notifications', service_id=service_one['id'], page=1) in content
|
||||
assert 'Previous page' in content
|
||||
assert 'Next page' in content
|
||||
|
||||
|
||||
def test_should_download_notifications_for_a_service(app_,
|
||||
service_one,
|
||||
api_user_active,
|
||||
mock_login,
|
||||
mock_get_user,
|
||||
mock_get_user_by_email,
|
||||
mock_get_service,
|
||||
mock_get_notifications,
|
||||
mock_has_permissions):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
response = client.get(url_for(
|
||||
'main.view_notifications',
|
||||
service_id=service_one['id'],
|
||||
download='csv'))
|
||||
csv_content = generate_notifications_csv(
|
||||
mock_get_notifications(service_one['id'])['notifications'])
|
||||
assert response.status_code == 200
|
||||
assert response.get_data(as_text=True) == csv_content
|
||||
assert 'text/csv' in response.headers['Content-Type']
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import pytest
|
||||
|
||||
import re
|
||||
from io import BytesIO
|
||||
from bs4 import BeautifulSoup
|
||||
from flask import url_for
|
||||
from unittest.mock import ANY
|
||||
from tests import validate_route_permission
|
||||
@@ -17,7 +18,8 @@ def test_upload_csvfile_with_errors_shows_check_page_with_errors(
|
||||
mock_get_service_template,
|
||||
mock_s3_upload,
|
||||
mock_has_permissions,
|
||||
mock_get_users_by_service
|
||||
mock_get_users_by_service,
|
||||
fake_uuid
|
||||
):
|
||||
|
||||
contents = u'phone number,name\n+44 123,test1\n+44 456,test2'
|
||||
@@ -27,13 +29,13 @@ def test_upload_csvfile_with_errors_shows_check_page_with_errors(
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
initial_upload = client.post(
|
||||
url_for('main.send_messages', service_id=12345, template_id=54321),
|
||||
url_for('main.send_messages', service_id=fake_uuid, template_id=fake_uuid),
|
||||
data={'file': (BytesIO(contents.encode('utf-8')), 'invalid.csv')},
|
||||
content_type='multipart/form-data',
|
||||
follow_redirects=True
|
||||
)
|
||||
reupload = client.post(
|
||||
url_for('main.check_messages', service_id=12345, template_type='sms', upload_id='abc123'),
|
||||
url_for('main.check_messages', service_id=fake_uuid, template_type='sms', upload_id='abc123'),
|
||||
data={'file': (BytesIO(contents.encode('utf-8')), 'invalid.csv')},
|
||||
content_type='multipart/form-data',
|
||||
follow_redirects=True
|
||||
@@ -57,7 +59,8 @@ def test_send_test_sms_message_to_self(
|
||||
mock_get_service_template,
|
||||
mock_s3_upload,
|
||||
mock_has_permissions,
|
||||
mock_get_users_by_service
|
||||
mock_get_users_by_service,
|
||||
fake_uuid
|
||||
):
|
||||
|
||||
expected_data = {'data': 'phone number\r\n07700 900 762\r\n', 'file_name': 'Test run'}
|
||||
@@ -67,11 +70,11 @@ def test_send_test_sms_message_to_self(
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
response = client.get(
|
||||
url_for('main.send_message_to_self', service_id=12345, template_id=54321),
|
||||
url_for('main.send_message_to_self', service_id=fake_uuid, template_id=fake_uuid),
|
||||
follow_redirects=True
|
||||
)
|
||||
assert response.status_code == 200
|
||||
mock_s3_upload.assert_called_with(ANY, '12345', expected_data, 'eu-west-1')
|
||||
mock_s3_upload.assert_called_with(ANY, fake_uuid, expected_data, 'eu-west-1')
|
||||
|
||||
|
||||
def test_send_test_email_message_to_self(
|
||||
@@ -83,7 +86,8 @@ def test_send_test_email_message_to_self(
|
||||
mock_get_service_email_template,
|
||||
mock_s3_upload,
|
||||
mock_has_permissions,
|
||||
mock_get_users_by_service
|
||||
mock_get_users_by_service,
|
||||
fake_uuid
|
||||
):
|
||||
|
||||
expected_data = {'data': 'email address\r\ntest@user.gov.uk\r\n', 'file_name': 'Test run'}
|
||||
@@ -93,11 +97,11 @@ def test_send_test_email_message_to_self(
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
response = client.get(
|
||||
url_for('main.send_message_to_self', service_id=12345, template_id=54321),
|
||||
url_for('main.send_message_to_self', service_id=fake_uuid, template_id=fake_uuid),
|
||||
follow_redirects=True
|
||||
)
|
||||
assert response.status_code == 200
|
||||
mock_s3_upload.assert_called_with(ANY, '12345', expected_data, 'eu-west-1')
|
||||
mock_s3_upload.assert_called_with(ANY, fake_uuid, expected_data, 'eu-west-1')
|
||||
|
||||
|
||||
def test_send_test_message_from_api_page(
|
||||
@@ -108,13 +112,14 @@ def test_send_test_message_from_api_page(
|
||||
mock_get_service,
|
||||
mock_get_service_email_template,
|
||||
mock_s3_upload,
|
||||
mock_has_permissions
|
||||
mock_has_permissions,
|
||||
fake_uuid
|
||||
):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
response = client.get(
|
||||
url_for('main.send_from_api', service_id=12345, template_id=54321),
|
||||
url_for('main.send_from_api', service_id=fake_uuid, template_id=fake_uuid),
|
||||
follow_redirects=True
|
||||
)
|
||||
assert response.status_code == 200
|
||||
@@ -128,14 +133,15 @@ def test_download_example_csv(
|
||||
mock_login,
|
||||
mock_get_service,
|
||||
mock_get_service_template,
|
||||
mock_has_permissions
|
||||
mock_has_permissions,
|
||||
fake_uuid
|
||||
):
|
||||
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
response = client.get(
|
||||
url_for('main.get_example_csv', service_id=12345, template_id=54321),
|
||||
url_for('main.get_example_csv', service_id=fake_uuid, template_id=fake_uuid),
|
||||
follow_redirects=True
|
||||
)
|
||||
assert response.status_code == 200
|
||||
@@ -152,7 +158,8 @@ def test_upload_csvfile_with_valid_phone_shows_all_numbers(
|
||||
mock_get_service_template,
|
||||
mock_s3_upload,
|
||||
mock_has_permissions,
|
||||
mock_get_users_by_service
|
||||
mock_get_users_by_service,
|
||||
fake_uuid
|
||||
):
|
||||
|
||||
mocker.patch(
|
||||
@@ -166,13 +173,13 @@ def test_upload_csvfile_with_valid_phone_shows_all_numbers(
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
response = client.post(
|
||||
url_for('main.send_messages', service_id=12345, template_id=54321),
|
||||
url_for('main.send_messages', service_id=fake_uuid, template_id=fake_uuid),
|
||||
data={'file': (BytesIO(''.encode('utf-8')), 'valid.csv')},
|
||||
content_type='multipart/form-data',
|
||||
follow_redirects=True
|
||||
)
|
||||
with client.session_transaction() as sess:
|
||||
assert int(sess['upload_data']['template_id']) == 54321
|
||||
assert sess['upload_data']['template_id'] == fake_uuid
|
||||
assert sess['upload_data']['original_file_name'] == 'valid.csv'
|
||||
assert sess['upload_data']['notification_count'] == 53
|
||||
|
||||
@@ -272,7 +279,8 @@ def test_route_permissions(mocker,
|
||||
mock_get_jobs,
|
||||
mock_get_notifications,
|
||||
mock_create_job,
|
||||
mock_s3_upload):
|
||||
mock_s3_upload,
|
||||
fake_uuid):
|
||||
routes = [
|
||||
'main.choose_template',
|
||||
'main.send_messages',
|
||||
@@ -288,7 +296,7 @@ def test_route_permissions(mocker,
|
||||
route,
|
||||
service_id=service_one['id'],
|
||||
template_type='sms',
|
||||
template_id=123),
|
||||
template_id=fake_uuid),
|
||||
['send_texts', 'send_emails', 'send_letters'],
|
||||
api_user_active,
|
||||
service_one)
|
||||
@@ -303,7 +311,7 @@ def test_route_permissions(mocker,
|
||||
'main.send_message_to_self',
|
||||
service_id=service_one['id'],
|
||||
template_type='sms',
|
||||
template_id=123),
|
||||
template_id=fake_uuid),
|
||||
['send_texts', 'send_emails', 'send_letters'],
|
||||
api_user_active,
|
||||
service_one)
|
||||
@@ -317,7 +325,8 @@ def test_route_invalid_permissions(mocker,
|
||||
mock_get_service_templates,
|
||||
mock_get_jobs,
|
||||
mock_get_notifications,
|
||||
mock_create_job):
|
||||
mock_create_job,
|
||||
fake_uuid):
|
||||
routes = [
|
||||
'main.choose_template',
|
||||
'main.send_messages',
|
||||
@@ -334,7 +343,7 @@ def test_route_invalid_permissions(mocker,
|
||||
route,
|
||||
service_id=service_one['id'],
|
||||
template_type='sms',
|
||||
template_id=123),
|
||||
template_id=fake_uuid),
|
||||
['blah'],
|
||||
api_user_active,
|
||||
service_one)
|
||||
@@ -388,7 +397,11 @@ def test_route_choose_template_send_messages_permissions(mocker,
|
||||
mock_get_service_templates,
|
||||
mock_get_jobs):
|
||||
with app_.test_request_context():
|
||||
template_id = mock_get_service_templates(service_one['id'])['data'][0]['id']
|
||||
template_id = None
|
||||
for temp in mock_get_service_templates(service_one['id'])['data']:
|
||||
if temp['template_type'] == 'sms':
|
||||
template_id = temp['id']
|
||||
assert template_id
|
||||
resp = validate_route_permission(
|
||||
mocker,
|
||||
app_,
|
||||
@@ -426,7 +439,11 @@ def test_route_choose_template_manage_api_keys_permissions(mocker,
|
||||
mock_get_service_templates,
|
||||
mock_get_jobs):
|
||||
with app_.test_request_context():
|
||||
template_id = mock_get_service_templates(service_one['id'])['data'][0]['id']
|
||||
template_id = None
|
||||
for temp in mock_get_service_templates(service_one['id'])['data']:
|
||||
if temp['template_type'] == 'sms':
|
||||
template_id = temp['id']
|
||||
assert template_id
|
||||
resp = validate_route_permission(
|
||||
mocker,
|
||||
app_,
|
||||
@@ -440,10 +457,6 @@ def test_route_choose_template_manage_api_keys_permissions(mocker,
|
||||
api_user_active,
|
||||
service_one)
|
||||
page = resp.get_data(as_text=True)
|
||||
assert url_for(
|
||||
"main.send_messages",
|
||||
service_id=service_one['id'],
|
||||
template_id=template_id) in page
|
||||
assert url_for(
|
||||
"main.send_message_to_self",
|
||||
service_id=service_one['id'],
|
||||
@@ -452,3 +465,9 @@ def test_route_choose_template_manage_api_keys_permissions(mocker,
|
||||
"main.edit_service_template",
|
||||
service_id=service_one['id'],
|
||||
template_id=template_id) not in page
|
||||
page = BeautifulSoup(resp.data.decode('utf-8'), 'html.parser')
|
||||
links = page.findAll('a', href=re.compile('^' + url_for(
|
||||
"main.send_from_api",
|
||||
service_id=service_one['id'],
|
||||
template_id=template_id)))
|
||||
assert len(links) == 1
|
||||
|
||||
@@ -114,7 +114,7 @@ def test_should_redirect_after_service_name_confirmation(app_,
|
||||
mock_update_service.assert_called_once_with(service_id,
|
||||
service_new_name,
|
||||
service_one['active'],
|
||||
service_one['limit'],
|
||||
service_one['message_limit'],
|
||||
service_one['restricted'],
|
||||
service_one['users'],
|
||||
email_safe(service_new_name))
|
||||
|
||||
@@ -12,12 +12,13 @@ def test_should_show_page_for_one_templates(app_,
|
||||
mock_get_service_template,
|
||||
mock_get_user,
|
||||
mock_get_user_by_email,
|
||||
mock_has_permissions):
|
||||
mock_has_permissions,
|
||||
fake_uuid):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
service_id = str(uuid.uuid4())
|
||||
template_id = 456
|
||||
service_id = fake_uuid
|
||||
template_id = fake_uuid
|
||||
response = client.get(url_for(
|
||||
'.edit_service_template',
|
||||
service_id=service_id,
|
||||
@@ -38,12 +39,13 @@ def test_should_redirect_when_saving_a_template(app_,
|
||||
mock_get_user,
|
||||
mock_get_service,
|
||||
mock_get_user_by_email,
|
||||
mock_has_permissions):
|
||||
mock_has_permissions,
|
||||
fake_uuid):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
service_id = str(uuid.uuid4())
|
||||
template_id = 456
|
||||
service_id = fake_uuid
|
||||
template_id = fake_uuid
|
||||
name = "new name"
|
||||
content = "template content"
|
||||
data = {
|
||||
@@ -72,12 +74,13 @@ def test_should_show_delete_template_page(app_,
|
||||
mock_get_service_template,
|
||||
mock_get_user,
|
||||
mock_get_user_by_email,
|
||||
mock_has_permissions):
|
||||
mock_has_permissions,
|
||||
fake_uuid):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
service_id = str(uuid.uuid4())
|
||||
template_id = 456
|
||||
service_id = fake_uuid
|
||||
template_id = fake_uuid
|
||||
response = client.get(url_for(
|
||||
'.delete_service_template',
|
||||
service_id=service_id,
|
||||
@@ -100,17 +103,18 @@ def test_should_redirect_when_deleting_a_template(app_,
|
||||
mock_delete_service_template,
|
||||
mock_get_user,
|
||||
mock_get_user_by_email,
|
||||
mock_has_permissions):
|
||||
mock_has_permissions,
|
||||
fake_uuid):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
service_id = str(uuid.uuid4())
|
||||
template_id = 456
|
||||
service_id = fake_uuid
|
||||
template_id = fake_uuid
|
||||
name = "new name"
|
||||
type_ = "sms"
|
||||
content = "template content"
|
||||
data = {
|
||||
'id': template_id,
|
||||
'id': str(template_id),
|
||||
'name': name,
|
||||
'template_type': type_,
|
||||
'content': content,
|
||||
@@ -136,7 +140,8 @@ def test_route_permissions(mocker,
|
||||
app_,
|
||||
api_user_active,
|
||||
service_one,
|
||||
mock_get_service_template):
|
||||
mock_get_service_template,
|
||||
fake_uuid):
|
||||
routes = [
|
||||
'main.add_service_template',
|
||||
'main.edit_service_template',
|
||||
@@ -152,7 +157,7 @@ def test_route_permissions(mocker,
|
||||
route,
|
||||
service_id=service_one['id'],
|
||||
template_type='sms',
|
||||
template_id=123),
|
||||
template_id=fake_uuid),
|
||||
['manage_templates'],
|
||||
api_user_active,
|
||||
service_one)
|
||||
@@ -183,7 +188,8 @@ def test_route_invalid_permissions(mocker,
|
||||
app_,
|
||||
api_user_active,
|
||||
service_one,
|
||||
mock_get_service_template):
|
||||
mock_get_service_template,
|
||||
fake_uuid):
|
||||
routes = [
|
||||
'main.add_service_template',
|
||||
'main.edit_service_template',
|
||||
@@ -199,7 +205,7 @@ def test_route_invalid_permissions(mocker,
|
||||
route,
|
||||
service_id=service_one['id'],
|
||||
template_type='sms',
|
||||
template_id=123),
|
||||
template_id=fake_uuid),
|
||||
['view_activity'],
|
||||
api_user_active,
|
||||
service_one)
|
||||
|
||||
Reference in New Issue
Block a user